{"version":3,"mappings":"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","names":["select2","FontAwesomeAngle","el","$","fa_angle_factory","DEFAULT_SELECTOR","JSSelectPicker","EventEmitter","selector","use_new_angle","captureMessage","suspect_el","rightArrowParents","_idx","entry","__vitePreload","new_val","val","new_angle","faAngle","_bind"],"ignoreList":[],"sources":["../../../app/assets/javascripts/plugins/select2/index.ts","../../../app/assets/javascripts/components/icons/fa_angle.ts","../../../app/assets/javascripts/components/js_selectpicker/base.ts"],"sourcesContent":["\nimport select2 from \"select2/dist/js/select2.full\"\n// It must be called before using\n// https://stackoverflow.com/a/76429905/838346\nselect2()\n","\nimport $ from \"jquery\"\n\nexport class FontAwesomeAngle {\n private el: Element | JQuery\n private $el: JQuery\n private state: string\n\n constructor(el: Element | JQuery) {\n this.el = el\n this.$el = $(el)\n this.state = \"close\"\n }\n\n public close() {\n this.$el\n .removeClass(\"fa-angle-up\")\n .addClass(\"fa-angle-down\")\n this.state = \"close\"\n return this\n }\n public open() {\n this.$el\n .removeClass(\"fa-angle-up\")\n .addClass(\"fa-angle-down\")\n this.state = \"close\"\n return this\n }\n public toggle() {\n if (this.state === \"close\"){\n this.open()\n }\n else{\n this.close()\n }\n return this\n }\n}\n\nconst fa_angle_factory = {\n create(el: Element | JQuery){\n return new FontAwesomeAngle(el)\n },\n}\n\nexport {\n fa_angle_factory as default,\n fa_angle_factory as Factory,\n}\n","import $ from \"jquery\"\nimport \"plugins/select2\"\nimport _bind from \"lodash/bind\"\nimport { EventEmitter } from \"events\"\n\nimport {\n captureMessage,\n} from \"app/error_reporting/index\"\n\nimport fa_angle_factory from \"components/icons/fa_angle\"\n\nexport interface Selector {\n scope: string | Element | JQuery\n main: string | Element | JQuery\n arrow: string | Element | JQuery\n first_option: string | Element | JQuery\n}\n\nexport interface InputSelector {\n scope?: string | Element | JQuery\n main?: string | Element | JQuery\n arrow?: string | Element | JQuery\n first_option?: string | Element | JQuery\n}\n\nconst DEFAULT_SELECTOR = {\n scope: \".control-group\",\n main: \".js-selectpicker\",\n arrow: \".select2-selection__arrow b[role=\\\"presentation\\\"]\",\n first_option: \"option:nth-of-type(1)\",\n}\n\n\nclass JSSelectPicker extends EventEmitter {\n protected selector: Selector\n\n protected $scope: JQuery\n protected $el: JQuery\n\n protected default_option: any\n\n constructor(selector: InputSelector, use_new_angle = true as boolean) {\n super()\n\n this.selector = Object.assign({}, DEFAULT_SELECTOR, selector)\n this.$scope = $(this.selector.scope)\n // Stupid TS definition\n this.$el = typeof this.selector.main === \"string\" ?\n this.$scope.find(this.selector.main) :\n this.$scope.find(this.selector.main)\n if (this.$el.length !== 1) {\n captureMessage(\n `JSSelectPicker init with ${this.$el.length} element is unexpected`,\n {\n source_file_path: \"app/assets/javascripts/components/dropdown_menu/neighbourhood_select/with_territory.es6\",\n element_paths: this.$el.toArray().map((suspect_el) => {\n const rightArrowParents = [] as string[]\n $(suspect_el).parents().addBack().not(\"html\").each((_idx, el) => {\n let entry = el.tagName.toLowerCase()\n if (el.id.length > 0) {\n entry += \"#\" + el.id.trim()\n }\n if (el.className) {\n entry += \".\" + el.className.trim().replace(/ /g, \".\")\n }\n rightArrowParents.push(entry)\n })\n return rightArrowParents.join(\" \")\n }).join(\"\\n\"),\n }\n )\n throw new Error(\"JSSelectPicker init with 0 or multiple element\")\n }\n import(\n \"select2/dist/js/select2.full\"\n )\n .then(() => {\n this.$el.select2(\n Object.assign(\n {\n minimumResultsForSearch: Infinity,\n dropdownParent: this.$scope,\n\n containerCssClass: this.$el.data(\"container-css-class\"),\n dropdownCssClass: this.$el.data(\"dropdown-css-class\"),\n },\n this.extra_select2_options(),\n )\n )\n })\n this.default_option = this.$el.find(this.selector.first_option).val()\n if (use_new_angle) {\n this.replace_angle()\n }\n\n this.bind_action()\n }\n\n public val(new_val?: string|string[]|number){\n if (new_val != null) {\n this.$el.val(new_val)\n }\n else {\n return this.$el.val()\n }\n }\n public reset(){\n this.$el.val(this.default_option)\n this.$el.trigger(\"change.select2\")\n return this\n }\n public isDefault(){\n return this.$el.find(\"option:selected\").val() === this.default_option\n }\n\n protected bind_action(){\n this.$el.on(\"change\", () => {\n this.onChange(this.$el.val())\n })\n this.$el.on(\"change.select2\", () => {\n this.onDummyChange(this.$el.val())\n })\n }\n\n protected onChange(val: any){\n // nothing\n }\n protected onDummyChange(val: any){\n // nothing\n }\n\n protected extra_select2_options(): Select2.Options {\n return {}\n }\n protected name() {\n return this.$el.attr(\"name\") as string\n }\n\n private replace_angle(){\n const new_angle = $(\"\")\n\n this.$scope.find(this.selector.arrow)\n .replaceWith(new_angle)\n\n const faAngle = fa_angle_factory.create(new_angle)\n this.$el.on(\"select2:open\", _bind(faAngle.open, faAngle))\n this.$el.on(\"select2:close\", _bind(faAngle.close, faAngle))\n\n return this\n }\n}\n\nconst Factory = {\n create(selector: InputSelector, use_new_angle?: boolean) {\n return new JSSelectPicker(selector, use_new_angle)\n },\n}\n\nexport {\n Factory as default,\n Factory,\n JSSelectPicker,\n}\n"],"file":"assets/base-CwzY4zaD.js"}