{"version":3,"sources":["jsdelivr-header.js","/npm/@symfony/ux-autocomplete@2.32.0/dist/controller.js"],"names":[],"mappings":"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","file":"/npm/@symfony/ux-autocomplete@2.32.0/dist/controller.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@symfony/ux-autocomplete@2.32.0/dist/controller.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var __typeError = (msg) => {\n  throw TypeError(msg);\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\n\n// src/controller.ts\nimport { Controller } from \"@hotwired/stimulus\";\nimport TomSelect from \"tom-select\";\nvar _instances, getCommonConfig_fn, createAutocomplete_fn, createAutocompleteWithHtmlContents_fn, createAutocompleteWithRemoteData_fn, stripTags_fn, mergeConfigs_fn, _normalizePluginsToHash, normalizePlugins_fn, createTomSelect_fn;\nvar controller_default = class extends Controller {\n  constructor() {\n    super(...arguments);\n    __privateAdd(this, _instances);\n    this.isObserving = false;\n    this.hasLoadedChoicesPreviously = false;\n    this.originalOptions = [];\n    /**\n     * Normalizes the plugins to a hash, so that we can merge them easily.\n     */\n    __privateAdd(this, _normalizePluginsToHash, (plugins) => {\n      if (Array.isArray(plugins)) {\n        return plugins.reduce((acc, plugin) => {\n          if (typeof plugin === \"string\") {\n            acc[plugin] = {};\n          }\n          if (typeof plugin === \"object\" && plugin.name) {\n            acc[plugin.name] = plugin.options || {};\n          }\n          return acc;\n        }, {});\n      }\n      return plugins;\n    });\n  }\n  initialize() {\n    if (!this.mutationObserver) {\n      this.mutationObserver = new MutationObserver((mutations) => {\n        this.onMutations(mutations);\n      });\n    }\n  }\n  connect() {\n    if (this.selectElement) {\n      this.originalOptions = this.createOptionsDataStructure(this.selectElement);\n    }\n    this.initializeTomSelect();\n  }\n  initializeTomSelect() {\n    if (this.selectElement) {\n      this.selectElement.setAttribute(\"data-skip-morph\", \"\");\n    }\n    if (this.urlValue) {\n      this.tomSelect = __privateMethod(this, _instances, createAutocompleteWithRemoteData_fn).call(this, this.urlValue, this.hasMinCharactersValue ? this.minCharactersValue : null);\n      return;\n    }\n    if (this.optionsAsHtmlValue) {\n      this.tomSelect = __privateMethod(this, _instances, createAutocompleteWithHtmlContents_fn).call(this);\n      return;\n    }\n    this.tomSelect = __privateMethod(this, _instances, createAutocomplete_fn).call(this);\n    this.startMutationObserver();\n  }\n  disconnect() {\n    this.stopMutationObserver();\n    if (!this.tomSelect) {\n      return;\n    }\n    let currentSelectedValues = [];\n    if (this.selectElement) {\n      if (this.selectElement.multiple) {\n        currentSelectedValues = Array.from(this.selectElement.options).filter((option) => option.selected).map((option) => option.value);\n      } else {\n        currentSelectedValues = [this.selectElement.value];\n      }\n    }\n    this.tomSelect.destroy();\n    this.tomSelect = void 0;\n    if (this.selectElement) {\n      if (this.selectElement.multiple) {\n        Array.from(this.selectElement.options).forEach((option) => {\n          option.selected = currentSelectedValues.includes(option.value);\n        });\n      } else {\n        this.selectElement.value = currentSelectedValues[0];\n      }\n    }\n  }\n  urlValueChanged() {\n    this.resetTomSelect();\n  }\n  getMaxOptions() {\n    return this.selectElement ? this.selectElement.options.length : 50;\n  }\n  /**\n   * Returns the element, but only if it's a select element.\n   */\n  get selectElement() {\n    if (!(this.element instanceof HTMLSelectElement)) {\n      return null;\n    }\n    return this.element;\n  }\n  /**\n   * Getter to help typing.\n   */\n  get formElement() {\n    if (!(this.element instanceof HTMLInputElement) && !(this.element instanceof HTMLSelectElement)) {\n      throw new Error(\"Autocomplete Stimulus controller can only be used on an <input> or <select>.\");\n    }\n    return this.element;\n  }\n  dispatchEvent(name, payload) {\n    this.dispatch(name, { detail: payload, prefix: \"autocomplete\" });\n  }\n  get preload() {\n    if (!this.hasPreloadValue) {\n      return \"focus\";\n    }\n    if (this.preloadValue === \"false\") {\n      return false;\n    }\n    if (this.preloadValue === \"true\") {\n      return true;\n    }\n    return this.preloadValue;\n  }\n  resetTomSelect() {\n    if (this.tomSelect) {\n      this.dispatchEvent(\"before-reset\", { tomSelect: this.tomSelect });\n      this.stopMutationObserver();\n      const currentHtml = this.element.innerHTML;\n      const currentValue = this.tomSelect.getValue();\n      this.tomSelect.destroy();\n      this.element.innerHTML = currentHtml;\n      this.initializeTomSelect();\n      this.tomSelect.setValue(currentValue);\n    }\n  }\n  changeTomSelectDisabledState(isDisabled) {\n    if (!this.tomSelect) {\n      return;\n    }\n    this.stopMutationObserver();\n    if (isDisabled) {\n      this.tomSelect.disable();\n    } else {\n      this.tomSelect.enable();\n    }\n    this.startMutationObserver();\n  }\n  startMutationObserver() {\n    if (!this.isObserving && this.mutationObserver) {\n      this.mutationObserver.observe(this.element, {\n        childList: true,\n        subtree: true,\n        attributes: true,\n        characterData: true,\n        attributeOldValue: true\n      });\n      this.isObserving = true;\n    }\n  }\n  stopMutationObserver() {\n    if (this.isObserving && this.mutationObserver) {\n      this.mutationObserver.disconnect();\n      this.isObserving = false;\n    }\n  }\n  onMutations(mutations) {\n    let changeDisabledState = false;\n    let requireReset = false;\n    mutations.forEach((mutation) => {\n      switch (mutation.type) {\n        case \"attributes\":\n          if (mutation.target === this.element && mutation.attributeName === \"disabled\") {\n            changeDisabledState = true;\n            break;\n          }\n          if (mutation.target === this.element && mutation.attributeName === \"multiple\") {\n            const isNowMultiple = this.element.hasAttribute(\"multiple\");\n            const wasMultiple = mutation.oldValue === \"multiple\";\n            if (isNowMultiple !== wasMultiple) {\n              requireReset = true;\n            }\n            break;\n          }\n          break;\n      }\n    });\n    const newOptions = this.selectElement ? this.createOptionsDataStructure(this.selectElement) : [];\n    const areOptionsEquivalent = this.areOptionsEquivalent(newOptions);\n    if (!areOptionsEquivalent || requireReset) {\n      this.originalOptions = newOptions;\n      this.resetTomSelect();\n    }\n    if (changeDisabledState) {\n      this.changeTomSelectDisabledState(this.formElement.disabled);\n    }\n  }\n  createOptionsDataStructure(selectElement) {\n    return Array.from(selectElement.options).map((option) => {\n      return {\n        value: option.value,\n        text: option.text\n      };\n    });\n  }\n  areOptionsEquivalent(newOptions) {\n    const filteredOriginalOptions = this.originalOptions.filter((option) => option.value !== \"\");\n    const filteredNewOptions = newOptions.filter((option) => option.value !== \"\");\n    const originalPlaceholderOption = this.originalOptions.find((option) => option.value === \"\");\n    const newPlaceholderOption = newOptions.find((option) => option.value === \"\");\n    if (originalPlaceholderOption && newPlaceholderOption && originalPlaceholderOption.text !== newPlaceholderOption.text) {\n      return false;\n    }\n    if (filteredOriginalOptions.length !== filteredNewOptions.length) {\n      return false;\n    }\n    const normalizeOption = (option) => `${option.value}-${option.text}`;\n    const originalOptionsSet = new Set(filteredOriginalOptions.map(normalizeOption));\n    const newOptionsSet = new Set(filteredNewOptions.map(normalizeOption));\n    return originalOptionsSet.size === newOptionsSet.size && [...originalOptionsSet].every((option) => newOptionsSet.has(option));\n  }\n};\n_instances = new WeakSet();\ngetCommonConfig_fn = function() {\n  const plugins = {};\n  const isMultiple = !this.selectElement || this.selectElement.multiple;\n  if (!this.formElement.disabled && !isMultiple) {\n    plugins.clear_button = { title: \"\" };\n  }\n  if (isMultiple) {\n    plugins.remove_button = { title: \"\" };\n  }\n  if (this.urlValue) {\n    plugins.virtual_scroll = {};\n  }\n  const render = {\n    no_results: () => {\n      return `<div class=\"no-results\">${this.noResultsFoundTextValue}</div>`;\n    },\n    option_create: (data, escapeData) => {\n      return `<div class=\"create\">${this.createOptionTextValue.replace(\"%placeholder%\", `<strong>${escapeData(data.input)}</strong>`)}</div>`;\n    }\n  };\n  const config = {\n    render,\n    plugins,\n    // clear the text input after selecting a value\n    onItemAdd: () => {\n      this.tomSelect?.setTextboxValue(\"\");\n    },\n    closeAfterSelect: true,\n    // fix positioning (in the dropdown) of options added through addOption()\n    onOptionAdd: (value, data) => {\n      if (!this.tomSelect) {\n        return;\n      }\n      let parentElement = this.tomSelect.input;\n      let optgroupData = null;\n      const optgroup = data[this.tomSelect.settings.optgroupField];\n      if (optgroup && this.tomSelect.optgroups) {\n        optgroupData = this.tomSelect.optgroups[optgroup];\n        if (optgroupData) {\n          const optgroupElement = parentElement.querySelector(`optgroup[label=\"${optgroupData.label}\"]`);\n          if (optgroupElement) {\n            parentElement = optgroupElement;\n          }\n        }\n      }\n      const optionElement = document.createElement(\"option\");\n      optionElement.value = value;\n      optionElement.text = data[this.tomSelect.settings.labelField];\n      const optionOrder = data.$order;\n      let orderedOption = null;\n      for (const [, tomSelectOption] of Object.entries(this.tomSelect.options)) {\n        if (tomSelectOption.$order === optionOrder) {\n          orderedOption = parentElement.querySelector(\n            `:scope > option[value=\"${CSS.escape(tomSelectOption[this.tomSelect.settings.valueField])}\"]`\n          );\n          break;\n        }\n      }\n      if (orderedOption) {\n        orderedOption.insertAdjacentElement(\"afterend\", optionElement);\n      } else if (optionOrder >= 0) {\n        parentElement.append(optionElement);\n      } else {\n        parentElement.prepend(optionElement);\n      }\n    }\n  };\n  if (!this.selectElement && !this.urlValue) {\n    config.shouldLoad = () => false;\n  }\n  return __privateMethod(this, _instances, mergeConfigs_fn).call(this, config, this.tomSelectOptionsValue);\n};\ncreateAutocomplete_fn = function() {\n  const config = __privateMethod(this, _instances, mergeConfigs_fn).call(this, __privateMethod(this, _instances, getCommonConfig_fn).call(this), {\n    maxOptions: this.getMaxOptions()\n  });\n  return __privateMethod(this, _instances, createTomSelect_fn).call(this, config);\n};\ncreateAutocompleteWithHtmlContents_fn = function() {\n  const commonConfig = __privateMethod(this, _instances, getCommonConfig_fn).call(this);\n  const labelField = commonConfig.labelField ?? \"text\";\n  const config = __privateMethod(this, _instances, mergeConfigs_fn).call(this, commonConfig, {\n    maxOptions: this.getMaxOptions(),\n    score: (search) => {\n      const scoringFunction = this.tomSelect?.getScoreFunction(search);\n      return (item) => {\n        return scoringFunction?.({ ...item, text: __privateMethod(this, _instances, stripTags_fn).call(this, item[labelField]) });\n      };\n    },\n    render: {\n      ...commonConfig.render,\n      item: (item) => `<div>${item[labelField]}</div>`,\n      option: (item) => `<div>${item[labelField]}</div>`\n    }\n  });\n  return __privateMethod(this, _instances, createTomSelect_fn).call(this, config);\n};\ncreateAutocompleteWithRemoteData_fn = function(autocompleteEndpointUrl, minCharacterLength) {\n  const commonConfig = __privateMethod(this, _instances, getCommonConfig_fn).call(this);\n  const labelField = commonConfig.labelField ?? \"text\";\n  const config = __privateMethod(this, _instances, mergeConfigs_fn).call(this, commonConfig, {\n    firstUrl: (query) => {\n      const separator = autocompleteEndpointUrl.includes(\"?\") ? \"&\" : \"?\";\n      return `${autocompleteEndpointUrl}${separator}query=${encodeURIComponent(query)}`;\n    },\n    // VERY IMPORTANT: use 'function (query, callback) { ... }' instead of the\n    // '(query, callback) => { ... }' syntax because, otherwise,\n    // the 'this.XXX' calls inside this method fail\n    load: function(query, callback) {\n      const url = this.getUrl(query);\n      fetch(url).then((response) => response.json()).then((json) => {\n        this.setNextUrl(query, json.next_page);\n        callback(json.results.options || json.results, json.results.optgroups || []);\n      }).catch(() => callback([], []));\n    },\n    shouldLoad: (query) => {\n      if (null !== minCharacterLength) {\n        return query.length >= minCharacterLength;\n      }\n      if (this.hasLoadedChoicesPreviously) {\n        return true;\n      }\n      if (query.length > 0) {\n        this.hasLoadedChoicesPreviously = true;\n      }\n      return query.length >= 3;\n    },\n    optgroupField: \"group_by\",\n    // avoid extra filtering after results are returned\n    score: (_search) => (_item) => 1,\n    render: {\n      option: (item) => `<div>${item[labelField]}</div>`,\n      item: (item) => `<div>${item[labelField]}</div>`,\n      loading_more: () => {\n        return `<div class=\"loading-more-results\">${this.loadingMoreTextValue}</div>`;\n      },\n      no_more_results: () => {\n        return `<div class=\"no-more-results\">${this.noMoreResultsTextValue}</div>`;\n      },\n      no_results: () => {\n        return `<div class=\"no-results\">${this.noResultsFoundTextValue}</div>`;\n      },\n      option_create: (data, escapeData) => {\n        return `<div class=\"create\">${this.createOptionTextValue.replace(\"%placeholder%\", `<strong>${escapeData(data.input)}</strong>`)}</div>`;\n      }\n    },\n    preload: this.preload\n  });\n  return __privateMethod(this, _instances, createTomSelect_fn).call(this, config);\n};\nstripTags_fn = function(string) {\n  return string.replace(/(<([^>]+)>)/gi, \"\");\n};\nmergeConfigs_fn = function(config1, config2) {\n  return {\n    ...config1,\n    ...config2,\n    // Plugins from both configs should be merged together.\n    plugins: __privateMethod(this, _instances, normalizePlugins_fn).call(this, {\n      ...__privateGet(this, _normalizePluginsToHash).call(this, config1.plugins || {}),\n      ...__privateGet(this, _normalizePluginsToHash).call(this, config2.plugins || {})\n    })\n  };\n};\n_normalizePluginsToHash = new WeakMap();\nnormalizePlugins_fn = function(plugins) {\n  return Object.entries(plugins).reduce((acc, [pluginName, pluginOptions]) => {\n    if (pluginOptions !== false) {\n      acc[pluginName] = pluginOptions;\n    }\n    return acc;\n  }, {});\n};\ncreateTomSelect_fn = function(options) {\n  const preConnectPayload = { options };\n  this.dispatchEvent(\"pre-connect\", preConnectPayload);\n  const tomSelect = new TomSelect(this.formElement, options);\n  const connectPayload = { tomSelect, options };\n  this.dispatchEvent(\"connect\", connectPayload);\n  return tomSelect;\n};\ncontroller_default.values = {\n  url: String,\n  optionsAsHtml: Boolean,\n  loadingMoreText: String,\n  noResultsFoundText: String,\n  noMoreResultsText: String,\n  createOptionText: String,\n  minCharacters: Number,\n  tomSelectOptions: Object,\n  preload: String\n};\nexport {\n  controller_default as default\n};\n"]}