{"version":3,"file":"register_input_fields-Bmy5lyTb.js","sources":["../../../app/frontend/modules/global_observer/mutations_processor.js","../../../app/frontend/modules/global_observer/index.js","../../../app/frontend/modules/input_fields/register_choices.js","../../../app/frontend/modules/input_fields/init_input_field.js","../../../app/frontend/modules/input_fields/register_field_box.js","../../../app/frontend/modules/input_fields/init_file_field.js","../../../app/frontend/modules/input_fields/register_field_box_file_field.js","../../../app/frontend/modules/input_fields/init_number_field.js","../../../app/frontend/modules/input_fields/register_field_box_number_field.js","../../../app/frontend/modules/input_fields/register_field_line.js","../../../app/frontend/modules/input_fields/register_input_fields.js"],"sourcesContent":["class MutationsProcessor {\n  constructor(selector) {\n    this.selector = selector;\n    this.elements = new Set();\n    this.addCallbacks = new Set();\n    this.removeCallbacks = new Set();\n  }\n\n  registerAdd(callback) {\n    this.addCallbacks.add(callback);\n  }\n\n  registerRemove(callback) {\n    this.removeCallbacks.add(callback);\n  }\n\n  processMutations(mutations) {\n    for (const mutation of mutations) {\n      this.processMutation(mutation);\n    }\n  }\n\n  processMutation(mutation) {\n    this.processAddedNodes(mutation.addedNodes);\n    this.processRemovedNodes(mutation.removedNodes);\n  }\n\n  processAddedNodes(nodes) {\n    for (const node of Array.from(nodes)) {\n      this.processNode(node, this.addElement);\n    }\n  }\n\n  processRemovedNodes(nodes) {\n    for (const node of Array.from(nodes)) {\n      this.processNode(node, this.removeElement);\n    }\n  }\n\n  processNode(node, callback) {\n    if (node.nodeType !== Node.ELEMENT_NODE) {\n      return;\n    }\n\n    const matches = this.matchElementsInTree(node);\n\n    for (const element of matches) {\n      callback.call(this, element);\n    }\n  }\n\n  addElement(element) {\n    if (!this.elements.has(element)) {\n      this.elements.add(element);\n\n      this.addCallbacks.forEach((callback) => {\n        callback.call(null, element);\n      });\n    }\n  }\n\n  removeElement(element) {\n    if (this.elements.has(element)) {\n      this.elements.delete(element);\n\n      this.removeCallbacks.forEach((callback) => {\n        callback.call(null, element);\n      });\n    }\n  }\n\n  matchElementsInTree(tree) {\n    const match = tree.matches(this.selector) ? [tree] : [];\n    const matches = Array.from(tree.querySelectorAll(this.selector));\n\n    return match.concat(matches);\n  }\n}\n\nexport default MutationsProcessor;\n","import { getData, setData } from '@slideslive/fuse-kit/utils';\n\nimport MutationsProcessor from './mutations_processor';\n\nclass GlobalObserver {\n  static globalObserver() {\n    if (!window.global_observer_) {\n      window.global_observer_ = new GlobalObserver();\n      window.global_observer_.start();\n    }\n\n    return window.global_observer_;\n  }\n\n  static register(selector, callbackAdd, callbackRemove = null) {\n    this.globalObserver().register(selector, callbackAdd, callbackRemove);\n  }\n\n  start() {\n    this.observer = new MutationObserver((mutations) => this.processMutations(mutations));\n    this.processors = new Map();\n\n    const options = {\n      childList: true,\n      subtree: true,\n    };\n\n    this.observer.observe(document, options);\n  }\n\n  register(selector, callbackAdd, callbackRemove = null) {\n    let processor = this.processors.get(selector);\n    if (processor === undefined) {\n      processor = new MutationsProcessor(selector);\n\n      this.processors.set(selector, processor);\n    }\n\n    processor.registerAdd(callbackAdd);\n\n    if (callbackRemove) {\n      processor.registerRemove(callbackRemove);\n    }\n\n    for (const target of document.querySelectorAll(selector)) {\n      if (getData(target, `GlobalObserver__${selector}`)) continue;\n\n      setData(target, `GlobalObserver__${selector}`, true);\n      callbackAdd(target);\n    }\n  }\n\n  processMutations(mutations) {\n    this.processors.forEach((processor) => {\n      processor.processMutations(mutations);\n    });\n  }\n}\n\nexport default GlobalObserver;\n","import { getData, setData } from '@slideslive/fuse-kit/utils';\nimport Choices from 'choices.js';\nimport 'choices.js/public/assets/styles/choices.css';\nimport GlobalObserver from 'modules/global_observer';\n\nfunction initChoices(element) {\n  if (getData(element, 'choicesInitialized', false)) {\n    return;\n  }\n\n  setData(element, 'choicesInitialized', true);\n\n  let containerOuterClass = 'fieldBox';\n  if (element.value && element.value !== '') {\n    containerOuterClass += ' fieldBox--filled';\n  }\n\n  const choices = new Choices(element, {\n    allowHTML: true,\n    itemSelectText: '',\n    searchResultLimit: 50,\n    shouldSort: false,\n    addItemText: '',\n    classNames: {\n      containerOuter: containerOuterClass,\n    },\n  });\n\n  element.__choices = choices;\n\n  if (element.dataset.initBlank === 'true') {\n    choices.removeActiveItems();\n  }\n\n  if (element.readOnly) {\n    choices.disable();\n  }\n}\n\nfunction registerChoices() {\n  GlobalObserver.register('select.newFieldChoices:not([data-auto-init=\"false\"]):not(.choices__input)', (element) => {\n    initChoices(element);\n  });\n}\n\nexport default registerChoices;\n","import { addListener, getData, isVariableDefinedNotNull, setData } from '@slideslive/fuse-kit/utils';\n\nconst INPUT_ELEMENTS = ['input', 'select', 'textarea'];\n\nfunction isInputElement(element) {\n  return INPUT_ELEMENTS.indexOf(element.tagName.toLowerCase()) >= 0;\n}\n\nfunction setFilled(klass, fieldElement, filled) {\n  const filledClass = `${klass}--filled`;\n  fieldElement.classList.toggle(filledClass, filled);\n}\n\nfunction isFilled(valueElement) {\n  let value = valueElement.value;\n\n  if (isVariableDefinedNotNull(value)) {\n    value = value.trim();\n  }\n\n  if (valueElement.tagName.toLowerCase() === 'select') {\n    if (isVariableDefinedNotNull(value) && value !== '') {\n      return true;\n    }\n\n    if (valueElement.multiple) {\n      return valueElement.options.length > 0;\n    }\n\n    const option = valueElement.options[valueElement.selectedIndex];\n\n    if (isVariableDefinedNotNull(option) && option.text.trim() !== '') {\n      return true;\n    }\n  }\n\n  return isVariableDefinedNotNull(value) && value !== '';\n}\n\nfunction openLink(klass, element) {\n  const containerElement = element.closest('.fieldBox__container');\n  const fieldElement = containerElement.querySelector(`.${klass}`);\n  let link;\n\n  const choicesElement = containerElement.querySelector('select.choices__input');\n  if (choicesElement && choicesElement.__choices) {\n    let customProperties = choicesElement.__choices.getValue().customProperties;\n    if (customProperties) {\n      if (typeof customProperties === 'string') {\n        customProperties = JSON.parse(customProperties);\n      }\n\n      link = customProperties.url;\n    }\n  } else if (fieldElement.hasAttribute('data-url')) {\n    link = fieldElement.getAttribute('data-url');\n  } else {\n    link = fieldElement.value;\n  }\n\n  if (isVariableDefinedNotNull(link) && link !== '') {\n    if (element.hasAttribute('data-linkify-template')) {\n      const template = element.getAttribute('data-linkify-template');\n      link = template.replace('%value%', link);\n    }\n\n    window.open(link, '_blank');\n  }\n}\n\nfunction focusIn(klass, valueElement, classElement) {\n  if (!valueElement.readOnly) {\n    setData(classElement, 'focused', true);\n    setFilled(klass, classElement, true);\n  }\n}\n\nfunction focusOut(klass, valueElement, classElement) {\n  if (!valueElement.readOnly) {\n    setData(classElement, 'focused', false);\n    setFilled(klass, classElement, isFilled(valueElement));\n  }\n}\n\nfunction change(klass, valueElement, classElement) {\n  if (valueElement !== document.activeElement) {\n    setFilled(klass, classElement, isFilled(valueElement));\n  }\n}\n\nfunction getValueTargetElement(klass, fieldElement) {\n  if (fieldElement.classList.contains('choices__input')) {\n    return fieldElement.closest(`.${klass}`).querySelector(`.${klass}`);\n  }\n\n  return fieldElement;\n}\n\nfunction getClassTargetElement(klass, element) {\n  if (element.classList.contains(`.${klass}`)) {\n    return element;\n  }\n\n  const target = element.querySelector(`.${klass}`);\n  if (target) {\n    return target;\n  }\n\n  return element.closest(`.${klass}`);\n}\n\nfunction initInputField(klass, containerElement) {\n  for (const fieldElement of containerElement.querySelectorAll(`.${klass}`)) {\n    if (isFilled(fieldElement)) {\n      setFilled(klass, fieldElement, true);\n    }\n  }\n\n  addListener(containerElement, 'click', (event) => {\n    if (event.target.classList.contains(`${klass}__openLink`)) {\n      event.preventDefault();\n\n      openLink(klass, event.target);\n    }\n  });\n\n  addListener(containerElement, 'focusin', (event) => {\n    if (isInputElement(event.target)) {\n      focusIn(klass, getValueTargetElement(klass, event.target), getClassTargetElement(klass, event.target));\n    }\n  });\n\n  addListener(containerElement, 'focusout', (event) => {\n    if (isInputElement(event.target)) {\n      focusOut(klass, getValueTargetElement(klass, event.target), getClassTargetElement(klass, event.target));\n    }\n  });\n\n  addListener(containerElement, 'change', (event) => {\n    if (isInputElement(event.target)) {\n      const classTarget = getClassTargetElement(klass, event.target);\n      if (!getData(classTarget, 'focused', false)) {\n        change(klass, event.target, classTarget);\n      }\n    }\n  });\n}\n\nexport default initInputField;\n","import GlobalObserver from 'modules/global_observer';\n\nimport initInputField from './init_input_field';\n\nfunction registerFieldBox() {\n  GlobalObserver.register('.fieldBox__container', (containerElement) => {\n    initInputField('fieldBox', containerElement);\n  });\n}\n\nexport default registerFieldBox;\n","import { addListener, getData, isVariableDefinedNotNull, setData } from '@slideslive/fuse-kit/utils';\n\nfunction initFileField(element) {\n  if (getData(element, 'fileFieldInitialized', false)) {\n    return;\n  }\n\n  setData(element, 'fileFieldInitialized', true);\n\n  const replaceWithTextElement = element.querySelector('[data-replace-with-text=\"true\"]');\n\n  addListener(element, 'change', 'input', (event) => {\n    const files = event.target.files;\n\n    if (files.length === 0) {\n      if (isVariableDefinedNotNull(replaceWithTextElement.dataset.defaultTextContent)) {\n        replaceWithTextElement.textContent = replaceWithTextElement.dataset.defaultTextContent;\n      }\n    } else {\n      if (!isVariableDefinedNotNull(replaceWithTextElement.dataset.defaultTextContent)) {\n        replaceWithTextElement.dataset.defaultTextContent = replaceWithTextElement.textContent;\n      }\n\n      replaceWithTextElement.textContent = files[0].name;\n    }\n  });\n}\n\nexport default initFileField;\n","import GlobalObserver from 'modules/global_observer';\n\nimport initFileField from './init_file_field';\n\nfunction registerFieldBoxFileField() {\n  GlobalObserver.register('.fieldBox__container--file', (containerElement) => {\n    initFileField(containerElement);\n  });\n}\n\nexport default registerFieldBoxFileField;\n","import { addListener, fire, getData, setData } from '@slideslive/fuse-kit/utils';\n\nfunction initNumberField(element) {\n  if (getData(element, 'numberFieldInitialized', false)) {\n    return;\n  }\n\n  setData(element, 'numberFieldInitialized', true);\n\n  const inputElement = element.getElementsByTagName('input')[0];\n  const incrementElement = element.querySelector('[data-action=\"increment\"], [data-counter-action=\"increment\"]');\n  const decrementElement = element.querySelector('[data-action=\"decrement\"], [data-counter-action=\"decrement\"]');\n\n  const min = inputElement.hasAttribute('data-min') ? parseInt(inputElement.getAttribute('data-min'), 10) : null;\n  const max = inputElement.hasAttribute('data-max') ? parseInt(inputElement.getAttribute('data-max'), 10) : null;\n\n  addListener(incrementElement, 'click', () => {\n    const currentValue = parseInt(inputElement.value, 10) || 0;\n    let newValue = currentValue + 1;\n\n    if (max !== null) {\n      newValue = Math.min(max, newValue);\n    }\n\n    if (currentValue !== newValue) {\n      inputElement.value = newValue;\n      fire(inputElement, 'change');\n    }\n  });\n\n  addListener(decrementElement, 'click', () => {\n    const currentValue = parseInt(inputElement.value, 10) || 0;\n    let newValue = currentValue - 1;\n    if (min !== null) {\n      newValue = Math.max(min, newValue);\n    }\n\n    if (currentValue !== newValue) {\n      inputElement.value = newValue;\n      fire(inputElement, 'change');\n    }\n  });\n}\n\nexport default initNumberField;\n","import GlobalObserver from 'modules/global_observer';\n\nimport initNumberField from './init_number_field';\n\nfunction registerFieldBoxNumberField() {\n  GlobalObserver.register('.fieldBox__container--incDec', (containerElement) => {\n    initNumberField(containerElement);\n  });\n}\n\nexport default registerFieldBoxNumberField;\n","import GlobalObserver from 'modules/global_observer';\n\nimport initInputField from './init_input_field';\n\nfunction registerFieldLine() {\n  GlobalObserver.register('.fieldLine__container', (containerElement) => {\n    initInputField('fieldLine', containerElement);\n  });\n}\n\nexport default registerFieldLine;\n","import registerChoices from './register_choices';\nimport registerFieldBox from './register_field_box';\nimport registerFieldBoxFileField from './register_field_box_file_field';\nimport registerFieldBoxNumberField from './register_field_box_number_field';\nimport registerFieldLine from './register_field_line';\nimport './styles/animated_checkbox.css';\nimport './styles/animated_radio.css';\nimport './styles/animated_switcher.css';\nimport './styles/field_box.css';\nimport './styles/field_line.css';\n\nfunction registerInputFields() {\n  registerFieldBox();\n  registerFieldBoxNumberField();\n  registerFieldBoxFileField();\n  registerFieldLine();\n  registerChoices();\n}\n\nexport default registerInputFields;\n"],"names":["MutationsProcessor","selector","callback","mutations","mutation","nodes","node","matches","element","tree","match","GlobalObserver","callbackAdd","callbackRemove","options","processor","target","getData","setData","initChoices","containerOuterClass","choices","Choices","registerChoices","INPUT_ELEMENTS","isInputElement","setFilled","klass","fieldElement","filled","filledClass","isFilled","valueElement","value","isVariableDefinedNotNull","option","openLink","containerElement","link","choicesElement","customProperties","focusIn","classElement","focusOut","change","getValueTargetElement","getClassTargetElement","initInputField","addListener","event","classTarget","registerFieldBox","initFileField","replaceWithTextElement","files","registerFieldBoxFileField","initNumberField","inputElement","incrementElement","decrementElement","min","max","currentValue","newValue","fire","registerFieldBoxNumberField","registerFieldLine","registerInputFields"],"mappings":"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"}