{"version":3,"file":"mark_swtich_active-j5ydDRWx.js","sources":["../../../app/assets/javascripts/components/picture_and_map_browser/mark_swtich_active.ts"],"sourcesContent":["\nimport u from \"umbrellajs\"\nimport { EventEmitter } from \"events\"\n// related to components/widgets/switch_mode\n\n\n\ninterface Selector {\n // the overlay part\n overlay: string\n switches_anchors: string\n // small div\n page: string\n}\n\nexport interface InputSelector {\n // the overlay part\n overlay?: string\n switches_anchors?: string\n // small div\n page?: string\n}\n\nconst DEFAULT_SELECTOR = {\n // the overlay part\n overlay: \".cell--new-development-buildings--pictures-and-map-browser--tabbed__overlay\",\n switches_anchors: \".cell--new-development-buildings--pictures-and-map-browser--tabbed__switch\",\n // small div\n page: \".cell--overlay-on-page\",\n}\n\n\n\nconst MODE_PREFIX = \"with-mode-\"\nconst ACTIVE_CLASS_NAME = \"js--switch--active\"\nconst TARGET_DATA_ATTR = \"js-app-toggle-target\"\nconst MODE_DATA_ATTR = \"js-app-toggle-to\"\n\n\nclass ActiveSwitches extends EventEmitter {\n protected selector: Selector\n\n protected $switches_anchors: UmbrellaInstance\n protected $overlay_switches = null as UmbrellaInstance | null\n protected $page_switches = null as UmbrellaInstance | null\n\n protected current_mode = null as string | null\n\n\n constructor(selector: InputSelector) {\n super()\n\n this.selector = Object.assign({}, DEFAULT_SELECTOR, selector)\n\n this.$switches_anchors = u(this.selector.switches_anchors)\n // The switches can be empty\n // Which could mean the element/component is absent\n // So we skip initialization\n if (this.$switches_anchors.length === 0) { return }\n\n this.$overlay_switches = u(this.selector.overlay).find(this.selector.switches_anchors)\n this.$page_switches = u(this.selector.page).find(this.selector.switches_anchors)\n\n this.created()\n this.bind_action()\n }\n\n public getCurrentMode() {\n return this.current_mode\n }\n\n protected created(){\n if (this.$overlay_switches == null) { return }\n if (this.$page_switches == null) { return }\n\n [\n this.$overlay_switches,\n this.$page_switches,\n ].forEach(markFirstActive)\n const targetSelector = (this.$page_switches.first() as HTMLElement)\n .getAttribute(`data-${TARGET_DATA_ATTR}`)?.toString() || \"\"\n const new_mode = (this.$page_switches.first() as HTMLElement)\n .getAttribute(`data-${MODE_DATA_ATTR}`)?.toString() || \"\"\n const new_mode_class = `${MODE_PREFIX}${new_mode}`\n const $targets = u(targetSelector)\n $targets.addClass(new_mode_class)\n\n this.current_mode = new_mode\n }\n protected bind_action(){\n this.$switches_anchors.on(\"click\", (e) => {\n this.onSwitchClick(e)\n })\n }\n\n private onSwitchClick(e: Event){\n e.preventDefault()\n\n const event_target = e.currentTarget\n if (event_target == null) { return }\n\n const $el = u(event_target as HTMLElement)\n if ((event_target as HTMLElement).classList.contains(\"switch--disabled\") ) {\n return\n }\n this.$switches_anchors.removeClass(ACTIVE_CLASS_NAME)\n const modeSelector = $el.data(MODE_DATA_ATTR).toString()\n const $modeSwitches = this.$switches_anchors.filter(`[data-${MODE_DATA_ATTR}='${modeSelector}']`)\n\n $modeSwitches.addClass(ACTIVE_CLASS_NAME)\n\n this.current_mode = modeSelector\n\n this.emit(\"switch_click\")\n }\n}\n\nfunction markFirstActive($el: UmbrellaInstance){\n ($el.first() as HTMLElement)?.classList?.add(ACTIVE_CLASS_NAME)\n}\n\n\nexport {\n ActiveSwitches,\n}\n"],"names":["DEFAULT_SELECTOR","MODE_PREFIX","ACTIVE_CLASS_NAME","TARGET_DATA_ATTR","MODE_DATA_ATTR","ActiveSwitches","EventEmitter","selector","u","markFirstActive","targetSelector","_a","new_mode","_b","new_mode_class","e","event_target","$el","modeSelector"],"mappings":"yFAuBA,MAAMA,EAAmB,CAEvB,QAAkB,8EAClB,iBAAkB,6EAElB,KAAkB,wBACpB,EAIMC,EAAc,aACdC,EAAoB,qBACpBC,EAAmB,uBACnBC,EAAiB,mBAGvB,MAAMC,UAAuBC,EAAAA,YAAa,CAUxC,YAAYC,EAAyB,CAC7B,MAAA,EAPR,KAAU,kBAAoB,KAC9B,KAAU,eAAiB,KAE3B,KAAU,aAAe,KAMvB,KAAK,SAAW,OAAO,OAAO,CAAC,EAAGP,EAAkBO,CAAQ,EAE5D,KAAK,kBAAoBC,EAAE,KAAK,SAAS,gBAAgB,EAIrD,KAAK,kBAAkB,SAAW,IAEjC,KAAA,kBAAoBA,EAAE,KAAK,SAAS,OAAO,EAAE,KAAK,KAAK,SAAS,gBAAgB,EAChF,KAAA,eAAiBA,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,KAAK,SAAS,gBAAgB,EAE/E,KAAK,QAAQ,EACb,KAAK,YAAY,EAAA,CAGZ,gBAAiB,CACtB,OAAO,KAAK,YAAA,CAGJ,SAAS,SAEb,GADA,KAAK,mBAAqB,MAC1B,KAAK,gBAAkB,KAAQ,OAEnC,CACE,KAAK,kBACL,KAAK,cAAA,EACL,QAAQC,CAAe,EACnB,MAAAC,IAAkBC,EAAA,KAAK,eAAe,MAAM,EACjD,aAAa,QAAQ,OAAAR,EAAkB,IADhB,YAAAQ,EACmB,aAAc,GACnDC,IAAYC,EAAA,KAAK,eAAe,MAAM,EAC3C,aAAa,QAAQ,OAAAT,EAAgB,IADpB,YAAAS,EACuB,aAAc,GACjDC,EAAiB,GAAG,OAAAb,GAAc,OAAAW,GACvBJ,EAAEE,CAAc,EACxB,SAASI,CAAc,EAEhC,KAAK,aAAeF,CAAA,CAEZ,aAAa,CACrB,KAAK,kBAAkB,GAAG,QAAUG,GAAM,CACxC,KAAK,cAAcA,CAAC,CAAA,CACrB,CAAA,CAGK,cAAcA,EAAS,CAC7BA,EAAE,eAAe,EAEjB,MAAMC,EAAeD,EAAE,cACvB,GAAIC,GAAgB,KAAQ,OAEtB,MAAAC,EAAMT,EAAEQ,CAA2B,EACzC,GAAKA,EAA6B,UAAU,SAAS,kBAAkB,EACrE,OAEG,KAAA,kBAAkB,YAAYd,CAAiB,EACpD,MAAMgB,EAAeD,EAAI,KAAKb,CAAc,EAAE,SAAS,EACjC,KAAK,kBAAkB,OAAO,SAAS,OAAAA,EAAc,MAAK,OAAAc,EAAY,KAAI,EAElF,SAAShB,CAAiB,EAExC,KAAK,aAAegB,EAEpB,KAAK,KAAK,cAAc,CAAA,CAE5B,CAEA,SAAST,EAAgBQ,EAAsB,UAC5CJ,GAAAF,EAAAM,EAAI,MAAyB,IAA7B,YAAAN,EAA6B,YAA7B,MAAAE,EAAwC,IAAIX,EAC/C"}