{"version":3,"file":"button_manager_controller-IQmxE9oW.js","sources":["../../../app/javascript/controllers/compose/template/button_manager_controller.js"],"sourcesContent":["import ApplicationController from '../../application_controller'\n\nexport default class extends ApplicationController {\n static values = {\n limits: Object,\n count: Number,\n buttons: { type: Array, default: [] },\n buttonsCount: Object,\n }\n\n static targets = [\n 'cancelButton',\n 'triggerButton',\n 'addButton',\n 'listTemplate',\n 'groupsContainer',\n 'sectionTemplate',\n 'section',\n 'buttonInput',\n 'addButtonPopover',\n 'addButtonTooltip',\n 'content',\n 'limitTooltip',\n ]\n\n initialize() {\n this.buttonsCountValue = {\n url: 0,\n phone: 0,\n quick_reply: 0,\n }\n\n super.initialize()\n }\n\n connect() {\n this.buttonsValue.forEach(({ type, buttons }) => {\n this.buttonsCountValue = {\n ...this.buttonsCountValue,\n [type]: buttons.length,\n }\n })\n\n if(this.sectionTargets.length === 0) {\n this.insertNewList('quick_reply')\n }\n\n if(this.limitReached) {\n this.hide(this.contentTarget)\n this.show(this.limitTooltipTarget)\n }\n\n super.connect()\n }\n\n insertIntoExistingList(type) {\n const section = this.sectionTargets.find(section => section.dataset.type === type)\n const buttonInputComponent = section.querySelector('[data-controller*=\"compose--template--button\"]').cloneNode(true)\n\n buttonInputComponent.setAttribute('data-compose--template--button-manager-target', 'buttonInput')\n buttonInputComponent.querySelectorAll('input').forEach(input => input.value = '')\n\n buttonInputComponent.classList.remove('hidden')\n\n section.querySelector('ul').appendChild(buttonInputComponent)\n }\n\n insertNewList(type, buttons = null) {\n const section = this.sectionTemplateTargets.find(template => template.dataset.type === type).cloneNode(true)\n\n section.setAttribute('data-compose--template--button-manager-target', 'section')\n section.classList.remove('hidden')\n\n const ul = section.querySelector('ul')\n\n if(!buttons) {\n const buttonInputComponent = section.querySelector('[data-controller*=\"compose--template--button\"]')\n\n buttonInputComponent.setAttribute('data-compose--template--button-manager-target', 'buttonInput')\n buttonInputComponent.classList.remove('hidden')\n\n if(ul) {\n ul.appendChild(buttonInputComponent)\n } else {\n section.appendChild(buttonInputComponent)\n }\n\n return this.groupsContainerTarget.appendChild(section)\n }\n\n buttons.forEach(button => {\n const buttonInputComponent = section.querySelector('[data-controller*=\"compose--template--button\"]').cloneNode(true)\n buttonInputComponent.setAttribute('data-compose--template--button-manager-target', 'buttonInput')\n\n const titleInput = buttonInputComponent.querySelector('input[data-kind=\"title\"]')\n const valueInput = buttonInputComponent.querySelector('input[data-kind=\"value\"]')\n\n if(titleInput) {\n titleInput.value = button.title\n }\n\n valueInput.value = button.value\n\n buttonInputComponent.classList.remove('hidden')\n\n if(ul) {\n ul.appendChild(buttonInputComponent)\n } else {\n section.appendChild(buttonInputComponent)\n }\n })\n\n this.groupsContainerTarget.appendChild(section)\n }\n\n insert({ currentTarget }) {\n const { type } = currentTarget.dataset\n\n if(this.sectionTargets.find(section => section.dataset.type === type)) {\n this.insertIntoExistingList(type)\n } else {\n this.insertNewList(type)\n }\n }\n\n save() {\n const object = this.sectionTargets.map(section => {\n const type = section.dataset.type\n\n return {\n type,\n buttons: Array\n .from(section.querySelectorAll('[data-controller*=\"compose--template--button\"]'))\n .filter(button => button.hasAttribute('data-valid'))\n .map(button => this.application.getControllerForElementAndIdentifier(button, 'compose--template--button').toObject())\n }\n })\n\n const event = this.isEditing ? 'update' : 'insert'\n\n this.dispatch(event, {\n detail: object,\n })\n\n this.buttonsValue = object\n\n this.removeActiveClassOnTriggerButton()\n this.reset()\n\n if(this.limitReached) {\n this.hide(this.contentTarget)\n this.show(this.limitTooltipTarget)\n }\n }\n\n edit({ detail: object }) {\n const { type, groups, index } = object\n\n this.sectionTargets.forEach(section => section.remove())\n\n console.log(type, index)\n groups.forEach(({ type, buttons }) => {\n this.buttonsCountValue = {\n ...this.buttonsCountValue,\n [type]: 0,\n }\n\n this.insertNewList(type, buttons)\n })\n\n this.show(this.contentTarget)\n this.hide(this.limitTooltipTarget)\n\n this.addClass(this.triggerButtonTarget, 'icon-button--compose--tiger')\n\n this.nextTick(() => {\n this.dispatch('open', {\n target: this.contentTarget,\n })\n\n this.nextTick(() => {\n const buttonToFocus = this.buttonInputTargets.filter(buttonInput => buttonInput.dataset.type === type)[index]\n buttonToFocus.scrollIntoView({ behavior: 'smooth', block: 'center' })\n\n\n this.dispatch('focus', {\n target: buttonToFocus,\n })\n })\n })\n\n this.isEditing = true\n }\n\n buttonInputTargetConnected(buttonInput) {\n const { type } = buttonInput.dataset\n\n this.dispatch('focus', {\n target: buttonInput,\n })\n\n if(this.buttonInputTargets.length === 1) {\n this.dispatch('remove:disallow', {\n target: buttonInput,\n })\n } else {\n this.buttonInputTargets.forEach(buttonInput => {\n this.dispatch('remove:allow', {\n target: buttonInput,\n })\n })\n }\n\n this.buttonsCountValue = {\n ...this.buttonsCountValue,\n [type]: (this.buttonsCountValue[type] || 0) + 1,\n }\n\n this.syncRemoveableSegments()\n\n if(this.limitReached) {\n this.hide(this.addButtonPopoverTarget)\n this.show(this.addButtonTooltipTarget)\n }\n\n if(this.buttonInputTargets.filter(buttonInput => buttonInput.dataset.type === 'url').length === 2) {\n this.addButtonTargets.find(button => button.dataset.type === 'url').classList.add('hidden')\n }\n\n buttonInput.scrollIntoView({ behavior: 'smooth', block: 'center' })\n }\n\n buttonInputTargetDisconnected(buttonInput) {\n const { type } = buttonInput.dataset\n const section = this.sectionTargets.find(section => section.dataset.type === type)\n\n this.buttonsCountValue = {\n ...this.buttonsCountValue,\n [type]: this.buttonsCountValue[type] - 1,\n }\n\n if(this.buttonInputTargets.length === 1) {\n this.dispatch('remove:disallow', {\n target: this.buttonInputTargets[0],\n })\n }\n\n this.dispatch('focus', {\n target: this.buttonInputTargets[this.buttonInputTargets.length - 1],\n })\n\n if(type === 'url' || type === 'phone') {\n this.addButtonTargets.find(button => button.dataset.type === type).classList.remove('hidden')\n }\n\n this.show(this.addButtonPopoverTarget)\n this.hide(this.addButtonTooltipTarget)\n\n this.syncRemoveableSegments()\n }\n\n syncRemoveableSegments() {\n this.sectionTargets.filter(section => section.dataset.type !== 'phone').forEach((section) => {\n const buttons = section.querySelectorAll('[data-controller*=\"compose--template--button\"][data-compose--template--button-manager-target=\"buttonInput\"]')\n\n if(buttons.length > 1) {\n buttons.forEach(button => {\n this.dispatch('drag:allow', { target: button })\n })\n } else if(buttons.length === 0) {\n section.remove()\n } else {\n this.dispatch('drag:disallow', { target: buttons[0] })\n }\n })\n\n Object.entries(this.limitsValue).forEach(([type, limit]) => {\n if(this.buttonsCountValue[type] >= limit) {\n this.addButtonTargets.find(button => button.dataset.type === type).classList.add('hidden')\n } else {\n this.addButtonTargets.find(button => button.dataset.type === type)?.classList?.remove('hidden')\n }\n })\n\n if(Object.values(this.buttonsCountValue).reduce((acc, count) => acc + count, 0) >= 10) {\n this.hide(this.addButtonPopoverTarget)\n this.show(this.addButtonTooltipTarget)\n } else {\n this.show(this.addButtonPopoverTarget)\n this.hide(this.addButtonTooltipTarget)\n }\n }\n\n sectionTargetConnected() {\n this.sectionTargets.forEach((section, index) => {\n if(index === 0) {\n section.classList.remove('pt-4')\n } else {\n section.classList.add('pt-4')\n }\n })\n }\n\n sectionTargetDisconnected() {\n this.sectionTargets.forEach((section, index) => {\n if(index === 0) {\n section.classList.remove('pt-4')\n } else {\n section.classList.add('pt-4')\n }\n })\n }\n\n cancel() {\n this.removeActiveClassOnTriggerButton()\n this.element.setAttribute('data-dropdown-open-value', false)\n\n this.nextTick(() => {\n this.dispatch('canceled')\n })\n\n this.reset()\n }\n\n onPopoverHidden({ srcElement }) {\n if(srcElement === this.addButtonPopoverTarget) return\n this.cancel()\n }\n\n reset() {\n this.sectionTargets.forEach(section => section.remove())\n this.insertNewList('quick_reply')\n\n this.isEditing = false\n\n if(this.limitReached) {\n this.hide(this.contentTarget)\n this.show(this.limitTooltipTarget)\n }\n }\n\n closeByEscape() {\n if(this.isInvisible(this.menuTarget)) return\n this.cancelButtonTarget.click()\n }\n\n focus({ currentTarget }) {\n this.addClass(this.triggerButtonTarget, 'icon-button--compose--tiger')\n\n this.nextTick(() => {\n this.dispatch('focus', {\n target: this.buttonInputTargets[0],\n })\n })\n }\n\n removeGroup({ srcElement }) {\n const { type } = srcElement.dataset\n\n if(type === 'url' || type === 'phone') {\n this.addButtonTargets.find(button => button.dataset.type === type).classList.remove('hidden')\n this.sectionTargets.find(section => section.dataset.type === type).remove()\n }\n }\n\n removeActiveClassOnTriggerButton() {\n this.removeClass(this.triggerButtonTarget, 'icon-button--compose--tiger')\n }\n\n enable() {\n super.enable(this.triggerButtonTarget)\n\n this.dispatch('enable', {\n target: this.element.closest('[data-controller*=\"compose--template\"]')\n })\n }\n\n disable() {\n super.disable(this.triggerButtonTarget)\n\n this.dispatch('disable', {\n target: this.element.closest('[data-controller*=\"compose--template\"]')\n })\n }\n\n get activeItem() {\n return this.listTargets.find(list => this.isVisible(list))\n }\n\n get menuTarget() {\n return this.element.querySelector('[popover]')\n }\n\n get limitReached() {\n return this.buttonInputTargets.length >= 10 || Object.values(this.buttonsCountValue).reduce((acc, count) => acc + count, 0) >= 10\n }\n}\n"],"names":["button_manager_controller","ApplicationController","type","buttons","section","buttonInputComponent","input","template","ul","button","titleInput","valueInput","currentTarget","object","event","groups","index","buttonToFocus","buttonInput","limit","_b","_a","acc","count","srcElement","list","__publicField"],"mappings":"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"}