{"version":3,"file":"js/application-bf0acbd9f3bfa342b772.js","mappings":"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","sources":["webpack://quakecms/./app/javascript/channels/ sync _channel\\.js$","webpack://quakecms/./app/javascript/theme/autosize.js","webpack://quakecms/./app/javascript/theme/bootstrap.js","webpack://quakecms/./app/javascript/theme/checklist.js","webpack://quakecms/./app/javascript/theme/choices.js","webpack://quakecms/./app/javascript/theme/dropzone.js","webpack://quakecms/./app/javascript/theme/flatpickr.js","webpack://quakecms/./app/javascript/theme/highlight.js","webpack://quakecms/./app/javascript/theme/inputmask.js","webpack://quakecms/./app/javascript/theme/kanban.js","webpack://quakecms/./app/javascript/theme/list.js","webpack://quakecms/./app/javascript/theme/navbar-collapse.js","webpack://quakecms/./app/javascript/theme/navbar-dropdown.js","webpack://quakecms/./app/javascript/theme/popover.js","webpack://quakecms/./app/javascript/theme/tooltip.js","webpack://quakecms/./app/javascript/theme/wizard.js","webpack://quakecms/./app/javascript/theme/helpers/getCSSVariableValue.js","webpack://quakecms/./app/javascript/theme/chart.js","webpack://quakecms/./app/javascript/theme/user.js","webpack://quakecms/./app/javascript/src/tinymce.js","webpack://quakecms/./app/javascript/src/confirmation_dialog.js","webpack://quakecms/./app/javascript/src/sidebar.js","webpack://quakecms/./app/javascript/application.js","webpack://quakecms/./app/javascript/channels/index.js","webpack://quakecms/./app/javascript/src/category_value_url_builder.js","webpack://quakecms/./app/javascript/src/dynamic_add.js","webpack://quakecms/./app/javascript/src/dynamic_hidden_fields.js","webpack://quakecms/./app/javascript/src/google_places_autocomplete.js","webpack://quakecms/./app/javascript/src/instant_modal.js","webpack://quakecms/./app/javascript/src/job_url_builder.js","webpack://quakecms/./app/javascript/src/localisedTime.js","webpack://quakecms/./app/javascript/src/site_attributes_builder.js","webpack://quakecms/./app/javascript/src/tinymce_plugins/chatbot.js","webpack://quakecms/./app/javascript/src/tinymce_plugins/hr.js","webpack://quakecms/./app/javascript/theme/map.js"],"sourcesContent":["function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 3760;\nmodule.exports = webpackEmptyContext;","//\n// autosize.js\n// Dashkit module\n//\n\nimport autosize from 'autosize';\n\nconst toggles = document.querySelectorAll('[data-autosize]');\n\ntoggles.forEach((toggle) => {\n autosize(toggle);\n});\n\n// Make available globally\nwindow.autosize = autosize;\n","import {\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Offcanvas,\n Popover,\n ScrollSpy,\n Tab,\n Toast,\n Tooltip,\n} from 'bootstrap';\n\n// Make available globally\nwindow.Alert = Alert;\nwindow.Button = Button;\nwindow.Carousel = Carousel;\nwindow.Collapse = Collapse;\nwindow.Dropdown = Dropdown;\nwindow.Modal = Modal;\nwindow.Offcanvas = Offcanvas;\nwindow.Popover = Popover;\nwindow.ScrollSpy = ScrollSpy;\nwindow.Tab = Tab;\nwindow.Toast = Toast;\nwindow.Tooltip = Tooltip;\n","//\n// checklist.js\n// Dashkit module\n//\n\nimport { Sortable } from '@shopify/draggable';\n\nconst checklists = document.querySelectorAll('.checklist');\n\nif (checklists) {\n new Sortable(checklists, {\n draggable: '.form-check',\n handle: '.form-check-label',\n mirror: {\n constrainDimensions: true\n }\n });\n}","//\n// choices.js\n// Theme module\n//\n\nimport Choices from 'choices.js';\n\nfunction load_choices() {\n const toggles = document.querySelectorAll('[data-choices]');\n\n toggles.forEach((toggle) => {\n const elementOptions = toggle.dataset.choices ? JSON.parse(toggle.dataset.choices) : {};\n\n const defaultOptions = {\n classNames: {\n containerInner: toggle.className,\n input: 'form-control',\n inputCloned: 'form-control-sm',\n listDropdown: 'dropdown-menu',\n itemChoice: 'dropdown-item',\n activeState: 'show',\n selectedState: 'active',\n },\n shouldSort: false,\n callbackOnCreateTemplates: function (template) {\n return {\n choice: (classNames, data) => {\n const classes = `${classNames.item} ${classNames.itemChoice} ${\n data.disabled ? classNames.itemDisabled : classNames.itemSelectable\n }`;\n const disabled = data.disabled ? 'data-choice-disabled aria-disabled=\"true\"' : 'data-choice-selectable';\n const role = data.groupId > 0 ? 'role=\"treeitem\"' : 'role=\"option\"';\n const selectText = this.config.itemSelectText;\n\n const label =\n data.customProperties && data.customProperties.avatarSrc\n ? `\n
\n \"${data.label}\"\n
${data.label}\n `\n : data.label;\n\n return template(`\n
\n ${label}\n
\n `);\n },\n };\n },\n };\n\n const options = {\n ...elementOptions,\n ...defaultOptions,\n };\n\n new Choices(toggle, options);\n });\n}\n\nwindow.addEventListener('ready', load_choices);\nwindow.addEventListener('turbolinks:load', load_choices);\n\n// Make available globally\nwindow.Choices = Choices;\n","//\n// dropzone.js\n// Theme module\n//\n\nimport Dropzone from 'dropzone';\n\nDropzone.autoDiscover = false;\nDropzone.thumbnailWidth = null;\nDropzone.thumbnailHeight = null;\n\nconst toggles = document.querySelectorAll('[data-dropzone]');\n\ntoggles.forEach((toggle) => {\n let currentFile = undefined;\n\n const elementOptions = toggle.dataset.dropzone ? JSON.parse(toggle.dataset.dropzone) : {};\n\n const defaultOptions = {\n previewsContainer: toggle.querySelector('.dz-preview'),\n previewTemplate: toggle.querySelector('.dz-preview').innerHTML,\n init: function () {\n this.on('addedfile', function (file) {\n const maxFiles = elementOptions.maxFiles;\n\n if (maxFiles == 1 && currentFile) {\n this.removeFile(currentFile);\n }\n\n currentFile = file;\n });\n },\n };\n\n const options = {\n ...elementOptions,\n ...defaultOptions,\n };\n\n // Clear preview\n toggle.querySelector('.dz-preview').innerHTML = '';\n\n // Init dropzone\n new Dropzone(toggle, options);\n});\n\n// Make available globally\nwindow.Dropzone = Dropzone;\n","//\n// flatpickr.js\n// Theme module\n//\n\nimport flatpickr from 'flatpickr';\n\nfunction load_flatpickr(){\n const toggles = document.querySelectorAll('[data-flatpickr]');\n\n toggles.forEach((toggle) => {\n const options = toggle.dataset.flatpickr ? JSON.parse(toggle.dataset.flatpickr) : {};\n\n const instance = flatpickr(toggle, options);\n\n if(toggle.dataset.flatpickrSubmit){\n // submit the nearest form on date selected\n // must use onClose because onChange fires when selecting the first date in a range\n instance.config.onClose.push(function(selectedDates, dateStr, instance){ instance.input.closest('form').submit() } );\n }\n });\n}\n\nwindow.addEventListener('ready', load_flatpickr);\nwindow.addEventListener('turbolinks:load', load_flatpickr);\n\n// Make available globally\nwindow.flatpickr = flatpickr;\n","//\n// highlight.js\n// Dashkit module\n//\n\nimport hljs from 'highlight.js/lib/core';\nimport javascript from 'highlight.js/lib/languages/javascript';\nimport xml from 'highlight.js/lib/languages/xml';\n\nconst highlights = document.querySelectorAll('.highlight');\n\n// Only register the languages we need to reduce the download footprint\nhljs.registerLanguage('xml', xml);\nhljs.registerLanguage('javascript', javascript);\n\nhighlights.forEach((highlight) => {\n hljs.highlightBlock(highlight);\n});\n\n// Make available globally\nwindow.hljs = hljs;\n","//\n// inputmask.js\n// Theme module\n//\n\nimport Inputmask from 'inputmask';\n\nconst toggles = document.querySelectorAll('[data-inputmask]');\n\nconst options = {\n rightAlign: false,\n};\n\nInputmask(options).mask(toggles);\n\n// Make available globally\nwindow.Inputmask = Inputmask;\n","//\n// kanban.js\n// Dashkit module\n//\n\nimport { Sortable } from '@shopify/draggable';\n\nconst categories = document.querySelectorAll('.kanban-category');\nconst links = document.querySelectorAll('.kanban-add-link');\nconst forms = document.querySelectorAll('.kanban-add-form');\n\nfunction toggleItems(el) {\n const parent = el.closest('.kanban-add');\n const card = parent.querySelector('.card');\n const link = parent.querySelector('.kanban-add-link');\n const form = parent.querySelector('.kanban-add-form');\n\n link.classList.toggle('d-none');\n form.classList.toggle('d-none');\n\n if (card && card.classList.contains('card-sm')) {\n if (card.classList.contains('card-flush')) {\n card.classList.remove('card-flush');\n } else {\n card.classList.add('card-flush');\n }\n }\n}\n\nif (categories) {\n new Sortable(categories, {\n draggable: '.kanban-item',\n mirror: {\n constrainDimensions: true,\n },\n });\n}\n\nlinks.forEach((link) => {\n link.addEventListener('click', () => {\n toggleItems(link);\n });\n});\n\nforms.forEach((form) => {\n form.addEventListener('reset', function () {\n toggleItems(form);\n });\n\n form.addEventListener('submit', function (e) {\n e.preventDefault();\n });\n});\n\n// Make available globally\nwindow.Sortable = Sortable;\n","//\n// list.js\n// Theme module\n//\n\nimport List from 'list.js';\n\nexport default (function () {\n const lists = document.querySelectorAll('[data-list]');\n const sorts = document.querySelectorAll('[data-sort]');\n\n function init(list) {\n const listAlert = list.querySelector('.list-alert');\n const listAlertCount = list.querySelector('.list-alert-count');\n const listAlertClose = list.querySelector('.list-alert .btn-close');\n const listCheckboxes = list.querySelectorAll('.list-checkbox');\n const listCheckboxAll = list.querySelector('.list-checkbox-all');\n const listPagination = list.querySelectorAll('.list-pagination');\n const listPaginationPrev = list.querySelector('.list-pagination-prev');\n const listPaginationNext = list.querySelector('.list-pagination-next');\n const listOptions = list.dataset.list && JSON.parse(list.dataset.list);\n\n const defaultOptions = {\n listClass: 'list',\n searchClass: 'list-search',\n sortClass: 'list-sort',\n };\n\n // Merge options\n const options = Object.assign(defaultOptions, listOptions);\n\n // Init\n const listObj = new List(list, options);\n\n // Pagination\n if (listPagination) {\n [].forEach.call(listPagination, function (pagination) {\n pagination.addEventListener('click', function (e) {\n e.preventDefault();\n });\n });\n }\n\n // Pagination (next)\n if (listPaginationNext) {\n listPaginationNext.addEventListener('click', function (e) {\n e.preventDefault();\n\n const nextItem = parseInt(listObj.i) + parseInt(listObj.page);\n\n if (nextItem <= listObj.size()) {\n listObj.show(nextItem, listObj.page);\n }\n });\n }\n\n // Pagination (prev)\n if (listPaginationPrev) {\n listPaginationPrev.addEventListener('click', function (e) {\n e.preventDefault();\n\n const prevItem = parseInt(listObj.i) - parseInt(listObj.page);\n\n if (prevItem > 0) {\n listObj.show(prevItem, listObj.page);\n }\n });\n }\n\n // Checkboxes\n if (listCheckboxes) {\n [].forEach.call(listCheckboxes, function (checkbox) {\n checkbox.addEventListener('change', function () {\n countCheckboxes(listCheckboxes, listAlert, listAlertCount);\n\n if (listCheckboxAll) {\n listCheckboxAll.checked = false;\n }\n });\n });\n }\n\n // Checkbox\n if (listCheckboxAll) {\n listCheckboxAll.addEventListener('change', function () {\n [].forEach.call(listCheckboxes, function (checkbox) {\n checkbox.checked = listCheckboxAll.checked;\n });\n\n countCheckboxes(listCheckboxes, listAlert, listAlertCount);\n });\n }\n\n // Alert\n if (listAlertClose) {\n listAlertClose.addEventListener('click', function (e) {\n e.preventDefault();\n\n if (listCheckboxAll) {\n listCheckboxAll.checked = false;\n }\n\n [].forEach.call(listCheckboxes, function (checkbox) {\n checkbox.checked = false;\n });\n\n countCheckboxes(listCheckboxes, listAlert, listAlertCount);\n });\n }\n }\n\n function countCheckboxes(listCheckboxes, listAlert, listAlertCount) {\n const checked = [].slice.call(listCheckboxes).filter(function (checkbox) {\n return checkbox.checked;\n });\n\n if (listAlert) {\n checked.length ? listAlert.classList.add('show') : listAlert.classList.remove('show');\n listAlertCount.innerHTML = checked.length;\n }\n }\n\n if (typeof List !== 'undefined' && lists) {\n [].forEach.call(lists, function (list) {\n init(list);\n });\n }\n\n if (typeof List !== 'undefined' && sorts) {\n [].forEach.call(sorts, function (sort) {\n sort.addEventListener('click', function (e) {\n e.preventDefault();\n });\n });\n }\n})();\n\n// Make available globally\nwindow.List = List;\n","//\n// navbar.js\n// Theme module\n//\n\nimport { Collapse } from 'bootstrap';\n\nconst collapses = document.querySelectorAll('.navbar-nav .collapse');\n\ncollapses.forEach(collapse => {\n\n // Init collapses\n const collapseInstance = new Collapse(collapse, {\n toggle: false\n });\n\n // Hide sibling collapses on `show.bs.collapse`\n collapse.addEventListener('show.bs.collapse', (e) => {\n e.stopPropagation();\n\n const closestCollapse = collapse.parentElement.closest('.collapse');\n const siblingCollapses = closestCollapse.querySelectorAll('.collapse');\n\n siblingCollapses.forEach(siblingCollapse => {\n const siblingCollapseInstance = Collapse.getInstance(siblingCollapse);\n\n if (siblingCollapseInstance === collapseInstance) {\n return;\n }\n\n siblingCollapseInstance.hide(); \n });\n });\n\n // Hide nested collapses on `hide.bs.collapse`\n collapse.addEventListener('hide.bs.collapse', (e) => {\n e.stopPropagation();\n\n const childCollapses = collapse.querySelectorAll('.collapse');\n\n childCollapses.forEach(childCollapse => {\n const childCollapseInstance = Collapse.getInstance(childCollapse);\n\n childCollapseInstance.hide();\n });\n });\n});","//\n// navbar-dropdown.js\n//\n\nimport { Dropdown } from 'bootstrap';\n\nconst selectors = '.navbar .dropup, .navbar .dropend, .navbar .dropdown, .navbar .dropstart';\nconst dropdowns = document.querySelectorAll(selectors);\nconst NAVBAR_BREAKPOINT = 767;\n\nif (window.innerWidth > NAVBAR_BREAKPOINT) {\n dropdowns.forEach((dropdown) => {\n const toggle = dropdown.querySelector('[data-bs-toggle=\"dropdown\"]');\n\n if (!toggle) return;\n\n const instance = new Dropdown(toggle);\n\n dropdown.addEventListener('mouseenter', () => {\n instance.show();\n });\n\n dropdown.addEventListener('mouseleave', () => {\n instance.hide();\n });\n });\n}\n","//\n// popover.js\n// Theme module\n//\n\nimport { Popover } from 'bootstrap';\n\nfunction loadPopovers(){\n const popovers = document.querySelectorAll('[data-bs-toggle=\"popover\"]');\n\n popovers.forEach(popover => {\n new Popover(popover);\n });\n}\n\nwindow.addEventListener('ready', loadPopovers);\nwindow.addEventListener('turbolinks:load', loadPopovers);","//\n// popover.js\n// Theme module\n//\n\nimport { Tooltip } from 'bootstrap';\n\nfunction loadTooltips(){\n const tooltips = document.querySelectorAll('[data-bs-toggle=\"tooltip\"]');\n\n tooltips.forEach(tooltip => {\n new Tooltip(tooltip);\n });\n}\n\nwindow.addEventListener('ready', loadTooltips);\nwindow.addEventListener('turbolinks:load', loadTooltips);\n","//\n// wizard.js\n// Dashkit module\n//\n\nimport { Tab } from 'bootstrap';\n\nconst toggles = document.querySelectorAll('[data-toggle=\"wizard\"]');\n\ntoggles.forEach(toggle => {\n toggle.addEventListener('click', function(e) {\n e.preventDefault();\n\n // Toggle new tab\n const tab = new Tab(toggle);\n\n tab.show();\n\n // Remove active state\n toggle.classList.remove('active');\n });\n});\n","export default function getCSSVariableValue(variable) {\n return getComputedStyle(document.documentElement).getPropertyValue(variable);\n}\n","//\n// chart.js\n// Theme module\n//\n\nimport {\n ArcElement,\n BarController,\n BarElement,\n BubbleController,\n CategoryScale,\n Chart,\n Decimation,\n DoughnutController,\n Filler,\n Legend,\n LineController,\n LineElement,\n LinearScale,\n LogarithmicScale,\n PieController,\n PointElement,\n PolarAreaController,\n RadarController,\n RadialLinearScale,\n ScatterController,\n TimeScale,\n TimeSeriesScale,\n Title,\n Tooltip,\n} from 'chart.js';\n\nimport { getCSSVariableValue } from './helpers';\n\nChart.register(\n ArcElement,\n BarController,\n BarElement,\n BubbleController,\n CategoryScale,\n Decimation,\n DoughnutController,\n Filler,\n Legend,\n LinearScale,\n LineController,\n LineElement,\n LogarithmicScale,\n PieController,\n PointElement,\n PolarAreaController,\n RadarController,\n RadialLinearScale,\n ScatterController,\n TimeScale,\n TimeSeriesScale,\n Title,\n Tooltip\n);\n\nconst colors = {\n gray: {\n 300: getCSSVariableValue('--bs-chart-gray-300'),\n 600: getCSSVariableValue('--bs-chart-gray-600'),\n 700: getCSSVariableValue('--bs-chart-gray-700'),\n 800: getCSSVariableValue('--bs-chart-gray-800'),\n 900: getCSSVariableValue('--bs-chart-gray-900'),\n },\n primary: {\n 100: getCSSVariableValue('--bs-chart-primary-100'),\n 300: getCSSVariableValue('--bs-chart-primary-300'),\n 700: getCSSVariableValue('--bs-chart-primary-700'),\n },\n black: getCSSVariableValue('--bs-dark'),\n white: getCSSVariableValue('--bs-white'),\n transparent: 'transparent',\n};\n\nconst fonts = {\n base: 'Cerebri Sans',\n};\n\nconst toggles = document.querySelectorAll('[data-toggle=\"chart\"]');\nconst legends = document.querySelectorAll('[data-toggle=\"legend\"]');\n\n//\n// Functions\n//\n\nfunction globalOptions() {\n Chart.defaults.responsive = true;\n Chart.defaults.maintainAspectRatio = false;\n\n // Default\n Chart.defaults.color = getCSSVariableValue('--bs-chart-default-color');\n Chart.defaults.font.family = fonts.base;\n Chart.defaults.font.size = 13;\n\n // Layout\n Chart.defaults.layout.padding = 0;\n\n // Legend\n Chart.defaults.plugins.legend.display = false;\n\n // Point\n Chart.defaults.elements.point.radius = 0;\n Chart.defaults.elements.point.backgroundColor = colors.primary[700];\n\n // Line\n Chart.defaults.elements.line.tension = 0.4;\n Chart.defaults.elements.line.borderWidth = 3;\n Chart.defaults.elements.line.borderColor = colors.primary[700];\n Chart.defaults.elements.line.backgroundColor = colors.transparent;\n Chart.defaults.elements.line.borderCapStyle = 'rounded';\n\n // Bar\n Chart.defaults.elements.bar.backgroundColor = colors.primary[700];\n Chart.defaults.elements.bar.borderWidth = 0;\n Chart.defaults.elements.bar.borderRadius = 10;\n Chart.defaults.elements.bar.borderSkipped = false;\n Chart.defaults.datasets.bar.maxBarThickness = 10;\n\n // Arc\n Chart.defaults.elements.arc.backgroundColor = colors.primary[700];\n Chart.defaults.elements.arc.borderColor = getCSSVariableValue('--bs-chart-arc-border-color');\n Chart.defaults.elements.arc.borderWidth = 4;\n Chart.defaults.elements.arc.hoverBorderColor = getCSSVariableValue('--bs-chart-arc-hover-border-color');\n\n // Tooltips\n Chart.defaults.plugins.tooltip.enabled = false;\n Chart.defaults.plugins.tooltip.mode = 'index';\n Chart.defaults.plugins.tooltip.intersect = false;\n Chart.defaults.plugins.tooltip.external = externalTooltipHandler;\n Chart.defaults.plugins.tooltip.callbacks.label = externalTooltipLabelCallback;\n\n // Doughnut\n Chart.defaults.datasets.doughnut.cutout = '83%';\n Chart.overrides.doughnut.plugins.tooltip.callbacks.title = function (ctx) {\n return ctx[0].label;\n };\n Chart.overrides.doughnut.plugins.tooltip.callbacks.label = function (ctx) {\n const callbacks = ctx.chart.options.plugins.tooltip.callbacks;\n const before = callbacks.beforeLabel() || '';\n const after = callbacks.afterLabel() || '';\n\n return before + ctx.formattedValue + after;\n };\n\n // yAxis\n Chart.defaults.scales.linear.grid = {\n borderDash: [2],\n borderDashOffset: [2],\n color: getCSSVariableValue('--bs-chart-grid-line-color'),\n drawBorder: false,\n drawTicks: false,\n };\n\n Chart.defaults.scales.linear.ticks.beginAtZero = true;\n Chart.defaults.scales.linear.ticks.padding = 10;\n Chart.defaults.scales.linear.ticks.stepSize = 10;\n\n // xAxis\n Chart.defaults.scales.category.grid = {\n drawBorder: false,\n drawOnChartArea: false,\n drawTicks: false,\n };\n\n Chart.defaults.scales.category.ticks.padding = 20;\n}\n\nfunction getOrCreateTooltip(chart) {\n let tooltipEl = chart.canvas.parentNode.querySelector('div');\n\n if (!tooltipEl) {\n tooltipEl = document.createElement('div');\n tooltipEl.setAttribute('id', 'chart-tooltip');\n tooltipEl.setAttribute('role', 'tooltip');\n tooltipEl.classList.add('popover', 'bs-popover-top');\n\n const arrowEl = document.createElement('div');\n arrowEl.classList.add('popover-arrow', 'translate-middle-x');\n\n const contentEl = document.createElement('div');\n contentEl.classList.add('popover-content');\n\n tooltipEl.appendChild(arrowEl);\n tooltipEl.appendChild(contentEl);\n chart.canvas.parentNode.appendChild(tooltipEl);\n }\n\n return tooltipEl;\n}\n\nfunction externalTooltipHandler(context) {\n // Tooltip Element\n const { chart, tooltip } = context;\n const tooltipEl = getOrCreateTooltip(chart);\n\n // Hide if no tooltip\n if (tooltip.opacity === 0) {\n tooltipEl.style.visibility = 'hidden';\n return;\n }\n\n // Set Text\n if (tooltip.body) {\n const titleLines = tooltip.title || [];\n const bodyLines = tooltip.body.map((b) => b.lines);\n\n const headEl = document.createElement('div');\n titleLines.forEach((title) => {\n const headingEl = document.createElement('h3');\n headingEl.classList.add('popover-header', 'text-center', 'text-nowrap');\n\n const text = document.createTextNode(title);\n\n headingEl.appendChild(text);\n headEl.appendChild(headingEl);\n });\n\n const bodyEl = document.createElement('div');\n bodyLines.forEach((body, i) => {\n const colors = tooltip.labelColors[i];\n\n const indicatorEl = document.createElement('span');\n indicatorEl.classList.add('popover-body-indicator');\n indicatorEl.style.backgroundColor =\n chart.config.type === 'line' && colors.borderColor !== 'rgba(0,0,0,0.1)'\n ? colors.borderColor\n : colors.backgroundColor;\n\n const contentEl = document.createElement('div');\n contentEl.classList.add('popover-body', 'd-flex', 'align-items-center', 'text-nowrap');\n contentEl.classList.add(bodyLines.length > 1 ? 'justify-content-left' : 'justify-content-center');\n\n const text = document.createTextNode(body);\n\n contentEl.appendChild(indicatorEl);\n contentEl.appendChild(text);\n bodyEl.appendChild(contentEl);\n });\n\n const rootEl = tooltipEl.querySelector('.popover-content');\n\n // Remove old children\n while (rootEl.firstChild) {\n rootEl.firstChild.remove();\n }\n\n // Add new children\n rootEl.appendChild(headEl);\n rootEl.appendChild(bodyEl);\n }\n\n const { offsetLeft: positionX, offsetTop: positionY } = chart.canvas;\n\n // Display, position, and set styles for font\n tooltipEl.style.visibility = 'visible';\n tooltipEl.style.left = positionX + tooltip.caretX + 'px';\n tooltipEl.style.top = positionY + tooltip.caretY + 'px';\n tooltipEl.style.transform = 'translateX(-50%) translateY(-100%) translateY(-1rem)';\n}\n\nfunction externalTooltipLabelCallback(ctx) {\n const scale = ctx.chart.scales[ctx.dataset.yAxisID || 'y'];\n const label = ctx.chart.tooltip.dataPoints.length > 1 ? ' ' + ctx.dataset.label + ' ' : ' ';\n const content = label + scale.options.ticks.callback.apply(scale, [ctx.parsed.y, 0, []]);\n\n return content;\n}\n\nfunction toggleDataset(toggle) {\n const id = toggle.dataset.target;\n const action = toggle.dataset.action;\n const index = parseInt(toggle.dataset.dataset);\n\n const chart = document.querySelector(id);\n const chartInstance = Chart.getChart(chart);\n\n // Action: Toggle\n if (action === 'toggle') {\n const datasets = chartInstance.data.datasets;\n\n const activeDataset = datasets.filter(function (dataset) {\n return !dataset.hidden;\n })[0];\n\n let backupDataset = datasets.filter(function (dataset) {\n return dataset.order === 1000;\n })[0];\n\n // Backup active dataset\n if (!backupDataset) {\n backupDataset = {};\n\n for (const prop in activeDataset) {\n if (prop !== '_meta') {\n backupDataset[prop] = activeDataset[prop];\n }\n }\n\n backupDataset.order = 1000;\n backupDataset.hidden = true;\n\n // Push to the dataset list\n datasets.push(backupDataset);\n }\n\n // Toggle dataset\n const sourceDataset = datasets[index] === activeDataset ? backupDataset : datasets[index];\n\n for (const prop in activeDataset) {\n if (prop !== '_meta') {\n activeDataset[prop] = sourceDataset[prop];\n }\n }\n\n // Update chart\n chartInstance.update();\n }\n\n // Action: Add\n if (action === 'add') {\n const dataset = chartInstance.data.datasets[index];\n const isHidden = dataset.hidden;\n\n // Toggle dataset\n dataset.hidden = !isHidden;\n }\n\n // Update chart\n chartInstance.update();\n}\n\nfunction toggleLegend(legend) {\n const chart = Chart.getChart(legend);\n const legendEl = document.createElement('div');\n\n chart.legend.legendItems?.forEach((item) => {\n legendEl.innerHTML += `${item.text}`;\n });\n\n const id = legend.dataset.target;\n const container = document.querySelector(id);\n\n container.appendChild(legendEl);\n}\n\n//\n// Events\n//\n\n// Global options\nglobalOptions();\n\n// Toggle dataset\ntoggles.forEach(function (toggle) {\n const event = toggle.dataset.trigger;\n\n toggle.addEventListener(event, function () {\n toggleDataset(toggle);\n });\n});\n\n// // Toggle legend\ndocument.addEventListener('DOMContentLoaded', function () {\n legends.forEach(function (legend) {\n toggleLegend(legend);\n });\n});\n\n// Make available globally\nwindow.Chart = Chart;\n","//\n// user.js\n// Use this to write your custom JS\n//\n\nimport './chart';\n\nimport {\n ArcElement,\n BarController,\n BarElement,\n BubbleController,\n CategoryScale,\n Chart,\n Decimation,\n DoughnutController,\n Filler,\n Legend,\n LineController,\n LineElement,\n LinearScale,\n LogarithmicScale,\n PieController,\n PointElement,\n PolarAreaController,\n RadarController,\n RadialLinearScale,\n ScatterController,\n TimeScale,\n TimeSeriesScale,\n Title,\n Tooltip,\n} from 'chart.js';\n\nChart.register(\n ArcElement,\n BarController,\n BarElement,\n BubbleController,\n CategoryScale,\n Decimation,\n DoughnutController,\n Filler,\n Legend,\n LinearScale,\n LineController,\n LineElement,\n LogarithmicScale,\n PieController,\n PointElement,\n PolarAreaController,\n RadarController,\n RadialLinearScale,\n ScatterController,\n TimeScale,\n TimeSeriesScale,\n Title,\n Tooltip\n);\n\n// Audience chart\n\nconst audienceChart = document.getElementById('audienceChart');\n\nif (audienceChart) {\n new Chart(audienceChart, {\n type: 'line',\n options: {\n scales: {\n yAxisOne: {\n display: 'auto',\n grid: {\n color: '#283E59',\n },\n ticks: {\n callback: function (value) {\n return value + 'k';\n },\n },\n },\n yAxisTwo: {\n display: 'auto',\n grid: {\n color: '#283E59',\n },\n ticks: {\n callback: function (value) {\n return value + '%';\n },\n },\n },\n },\n },\n data: {\n labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n datasets: [\n {\n label: 'Customers',\n data: [0, 10, 5, 15, 10, 20, 15, 25, 20, 30, 25, 40],\n yAxisID: 'yAxisOne',\n },\n {\n label: 'Sessions',\n data: [50, 75, 35, 25, 55, 87, 67, 53, 25, 80, 87, 45],\n yAxisID: 'yAxisOne',\n hidden: true,\n },\n {\n label: 'Conversion',\n data: [40, 57, 25, 50, 57, 32, 46, 28, 59, 34, 52, 48],\n yAxisID: 'yAxisTwo',\n hidden: true,\n },\n ],\n },\n });\n}\n\n// Convertions chart\n\nconst conversionsChart = document.getElementById('conversionsChart');\n\nif (conversionsChart) {\n new Chart(conversionsChart, {\n type: 'bar',\n options: {\n scales: {\n y: {\n ticks: {\n callback: function (val) {\n return val + '%';\n },\n },\n },\n },\n },\n data: {\n labels: [\n 'Oct 1',\n 'Oct 2',\n 'Oct 3',\n 'Oct 4',\n 'Oct 5',\n 'Oct 6',\n 'Oct 7',\n 'Oct 8',\n 'Oct 9',\n 'Oct 10',\n 'Oct 11',\n 'Oct 12',\n ],\n datasets: [\n {\n label: '2020',\n data: [25, 20, 30, 22, 17, 10, 18, 26, 28, 26, 20, 32],\n },\n {\n label: '2019',\n data: [15, 10, 20, 12, 7, 0, 8, 16, 18, 16, 10, 22],\n backgroundColor: '#d2ddec',\n hidden: true,\n },\n ],\n },\n });\n}\n\n// Traffic chart\n\nconst trafficChart = document.getElementById('trafficChart');\n\nif (trafficChart) {\n new Chart(trafficChart, {\n type: 'doughnut',\n options: {\n plugins: {\n tooltip: {\n callbacks: {\n afterLabel: function () {\n return '%';\n },\n },\n },\n },\n },\n data: {\n labels: ['Direct', 'Organic', 'Referral'],\n datasets: [\n {\n data: [60, 25, 15],\n backgroundColor: ['#2C7BE5', '#A6C5F7', '#D2DDEC'],\n },\n {\n data: [15, 45, 20],\n backgroundColor: ['#2C7BE5', '#A6C5F7', '#D2DDEC'],\n hidden: true,\n },\n ],\n },\n });\n}\n\n// Traffic chart (alt)\n\nconst trafficChartAlt = document.getElementById('trafficChartAlt');\n\nif (trafficChartAlt) {\n new Chart(trafficChartAlt, {\n type: 'doughnut',\n options: {\n plugins: {\n tooltip: {\n callbacks: {\n afterLabel: function () {\n return '%';\n },\n },\n },\n },\n },\n data: {\n labels: ['Direct', 'Organic', 'Referral'],\n datasets: [\n {\n data: [60, 25, 15],\n backgroundColor: ['#2C7BE5', '#A6C5F7', '#D2DDEC'],\n },\n {\n data: [15, 45, 20],\n backgroundColor: ['#2C7BE5', '#A6C5F7', '#D2DDEC'],\n hidden: true,\n },\n ],\n },\n });\n}\n\n// Sales chart\n\nconst salesChart = document.getElementById('salesChart');\n\nif (salesChart) {\n new Chart(salesChart, {\n type: 'line',\n options: {\n scales: {\n y: {\n ticks: {\n callback: function (value) {\n return '$' + value + 'k';\n },\n },\n },\n },\n },\n data: {\n labels: ['Oct 1', 'Oct 3', 'Oct 6', 'Oct 9', 'Oct 12', 'Oct 5', 'Oct 18', 'Oct 21', 'Oct 24', 'Oct 27', 'Oct 30'],\n datasets: [\n {\n label: 'All',\n data: [0, 10, 5, 15, 10, 20, 15, 25, 20, 30, 25],\n },\n {\n label: 'Direct',\n data: [7, 40, 12, 27, 34, 17, 19, 30, 28, 32, 24],\n hidden: true,\n },\n {\n label: 'Organic',\n data: [2, 12, 35, 25, 36, 25, 34, 16, 4, 14, 15],\n hidden: true,\n },\n ],\n },\n });\n}\n\n// Orders chart\n\nconst ordersChart = document.getElementById('ordersChart');\n\nif (ordersChart) {\n new Chart(ordersChart, {\n type: 'bar',\n options: {\n scales: {\n y: {\n ticks: {\n callback: function (value) {\n return '$' + value + 'k';\n },\n },\n },\n },\n },\n data: {\n labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n datasets: [\n {\n label: 'Sales',\n data: [25, 20, 30, 22, 17, 10, 18, 26, 28, 26, 20, 32],\n },\n {\n label: 'Affiliate',\n data: [15, 10, 20, 12, 7, 0, 8, 16, 18, 16, 10, 22],\n backgroundColor: '#d2ddec',\n hidden: true,\n },\n ],\n },\n });\n}\n\n// Earnings chart\n\nconst earningsChart = document.getElementById('earningsChart');\n\nif (earningsChart) {\n new Chart(earningsChart, {\n type: 'bar',\n options: {\n scales: {\n yAxisOne: {\n display: 'auto',\n ticks: {\n callback: function (value) {\n return '$' + value + 'k';\n },\n },\n },\n yAxisTwo: {\n display: 'auto',\n ticks: {\n callback: function (value) {\n return value + 'k';\n },\n },\n },\n yAxisThree: {\n display: 'auto',\n ticks: {\n callback: function (value) {\n return value + '%';\n },\n },\n },\n },\n },\n data: {\n labels: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n ],\n datasets: [\n {\n label: 'Earnings',\n data: [18, 10, 5, 15, 10, 20, 15, 25, 20, 26, 25, 29, 18, 10, 5, 15, 10, 20],\n yAxisID: 'yAxisOne',\n },\n {\n label: 'Sessions',\n data: [50, 75, 35, 25, 55, 87, 67, 53, 25, 80, 87, 45, 50, 75, 35, 25, 55, 19],\n yAxisID: 'yAxisTwo',\n hidden: true,\n },\n {\n label: 'Bounce',\n data: [40, 57, 25, 50, 57, 32, 46, 28, 59, 34, 52, 48, 40, 57, 25, 50, 57, 29],\n yAxisID: 'yAxisThree',\n hidden: true,\n },\n ],\n },\n });\n}\n\n// Weekly hours chart\n\nconst weeklyHoursChart = document.getElementById('weeklyHoursChart');\n\nif (weeklyHoursChart) {\n new Chart(weeklyHoursChart, {\n type: 'bar',\n options: {\n scales: {\n y: {\n ticks: {\n callback: function (value) {\n return value + 'hrs';\n },\n },\n },\n },\n },\n data: {\n labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],\n datasets: [\n {\n data: [21, 12, 28, 15, 5, 12, 17, 2],\n },\n ],\n },\n });\n}\n\n// Overview chart\n\nconst overviewChart = document.getElementById('overviewChart');\n\nif (overviewChart) {\n new Chart(overviewChart, {\n type: 'line',\n options: {\n scales: {\n yAxisOne: {\n display: 'auto',\n ticks: {\n callback: function (value) {\n return '$' + value + 'k';\n },\n },\n },\n yAxisTwo: {\n display: 'auto',\n ticks: {\n callback: function (value) {\n return value + 'hrs';\n },\n },\n },\n },\n },\n data: {\n labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n datasets: [\n {\n label: 'Earned',\n data: [0, 10, 5, 15, 10, 20, 15, 25, 20, 30, 25, 40],\n yAxisID: 'yAxisOne',\n },\n {\n label: 'Hours Worked',\n data: [7, 35, 12, 27, 34, 17, 19, 30, 28, 32, 24, 39],\n yAxisID: 'yAxisTwo',\n hidden: true,\n },\n ],\n },\n });\n}\n\n// Sparkline chart\n\nconst sparklineChart = document.getElementById('sparklineChart');\n\nif (sparklineChart) {\n new Chart(sparklineChart, {\n type: 'line',\n options: {\n scales: {\n y: {\n display: false,\n },\n x: {\n display: false,\n },\n },\n elements: {\n line: {\n borderWidth: 2,\n },\n point: {\n hoverRadius: 0,\n },\n },\n plugins: {\n tooltip: {\n external: () => false,\n },\n },\n },\n data: {\n labels: new Array(12).fill('Label'),\n datasets: [\n {\n data: [0, 15, 10, 25, 30, 15, 40, 50, 80, 60, 55, 65],\n },\n ],\n },\n });\n}\n\n// Sparkline chart (gray)\n\nconst sparklineCharts = document.querySelectorAll(\n '#sparklineChartSocialOne, #sparklineChartSocialTwo, #sparklineChartSocialThree, #sparklineChartSocialFour'\n);\n\nif (sparklineCharts) {\n [].forEach.call(sparklineCharts, function (chart) {\n new Chart(chart, {\n type: 'line',\n options: {\n scales: {\n y: {\n display: false,\n },\n x: {\n display: false,\n },\n },\n elements: {\n line: {\n borderWidth: 2,\n borderColor: '#D2DDEC',\n },\n point: {\n hoverRadius: 0,\n },\n },\n plugins: {\n tooltip: {\n external: () => false,\n },\n },\n },\n data: {\n labels: new Array(12).fill('Label'),\n datasets: [\n {\n data: [0, 15, 10, 25, 30, 15, 40, 50, 80, 60, 55, 65],\n },\n ],\n },\n });\n });\n}\n\n// Feed chart\n\nconst feedChart = document.getElementById('feedChart');\n\nif (feedChart) {\n new Chart(feedChart, {\n type: 'bar',\n options: {\n scales: {\n y: {\n ticks: {\n callback: function (value) {\n return '$' + value + 'k';\n },\n },\n },\n },\n },\n data: {\n labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n datasets: [\n {\n label: 'Sales',\n data: [25, 20, 30, 22, 17, 10, 18, 26, 28, 26, 20, 32],\n },\n {\n label: 'Affiliate',\n data: [15, 10, 20, 12, 7, 0, 8, 16, 18, 16, 10, 22],\n backgroundColor: '#d2ddec',\n hidden: true,\n },\n ],\n },\n });\n}\n","import 'tinymce/tinymce';\nimport 'tinymce/themes/silver';\nimport 'tinymce/icons/default';\nimport 'tinymce/models/dom/model';\n\n// plugins\nimport 'tinymce/plugins/accordion';\nimport 'tinymce/plugins/autolink';\nimport 'tinymce/plugins/fullscreen';\nimport 'tinymce/plugins/image';\nimport 'tinymce/plugins/link';\nimport 'tinymce/plugins/lists';\nimport 'tinymce/plugins/media';\nimport 'tinymce/plugins/table';\nimport 'tinymce/plugins/code';\n\nimport './tinymce_plugins/chatbot';\nimport './tinymce_plugins/hr';\n\nfunction load_tinymce(){\n tinymce.init({\n selector: '.wysiwyg', // change this value according to your HTML\n menubar: false,\n skin: false,\n content_style: 'body { color: white; font-family: sans-serif; font-size: 15px; }',\n plugins: 'accordion aisuggest autolink code fullscreen hr image link lists media table',\n toolbar: 'undo redo | styles | bold italic forecolor removeformat | numlist bullist hr | table accordion image link media | alignleft aligncenter alignright alignjustify | aisuggest fullscreen code',\n media_poster: false,\n media_alt_source: false,\n convert_urls: false,\n link_class_list: [\n { title: 'None', value: '' },\n { title: 'Primary Colour Button', value: 'primaryBtn' },\n { title: 'Secondary Colour Button', value: 'secondaryBtn' },\n { title: 'Custom Style Button', value: 'customBtn' },\n { title: 'Custom Style Link', value: 'customLink' }\n ],\n sandbox_iframes: false,\n });\n}\n\nwindow.addEventListener('ready', load_tinymce);\nwindow.addEventListener('turbolinks:load', load_tinymce);\n\n// Make available globally\nwindow.tinymce = tinymce;\n","import { Modal } from 'bootstrap';\n\nfunction createModalHtml(\n id,\n icon,\n title,\n message,\n confirmButtonText,\n confirmButtonClass,\n cancelButtonText,\n cancelButtonClass\n) {\n return `\n
\n
\n
\n
\n

${title}

\n
\n
\n
\n \n

${message}

\n
\n
\n \n
\n
\n
\n `;\n}\n\nfunction load_confirmation_dialog() {\n // Add event listeners to all buttons with the data-confirmation-dialog attribute\n const confirmationLinks = document.querySelectorAll('[data-confirmation-dialog-message]');\n\n confirmationLinks.forEach((element) => {\n // Assign data attributes to variables\n const id = element.dataset.confirmationDialogId;\n const icon = element.dataset.confirmationDialogIcon;\n const message = element.dataset.confirmationDialogMessage;\n const title = element.dataset.confirmationDialogTitle;\n const confirmButtonText = element.dataset.confirmationDialogConfirmButtonText;\n const confirmButtonClass = element.dataset.confirmationDialogConfirmButtonClass;\n const cancelButtonText = element.dataset.confirmationDialogCancelButtonText;\n const cancelButtonClass = element.dataset.confirmationDialogCancelButtonClass;\n\n element.addEventListener('click', (event) => {\n // Prevent the button from submitting the form instantly.\n event.preventDefault();\n\n // Check if the modal already exists in the DOM\n let modalDOMElement = document.getElementById(id);\n if (!modalDOMElement) {\n // If the modal is not in the DOM, create it\n document.body.insertAdjacentHTML(\n 'beforeend',\n createModalHtml(id, icon, title, message, confirmButtonText, confirmButtonClass, cancelButtonText, cancelButtonClass)\n );\n modalDOMElement = document.getElementById(id);\n\n // Add the click event listener to the confirm button to manually handle the procedure\n document.getElementById(`${id}-confirm`).addEventListener('click', () => {\n // This is part of Rail's `button_to` helper, we call the parent
element to submit it\n element.closest('form').submit();\n confirmationModal.hide();\n });\n\n // Add event listener part of Bootstrap's Modal feature to remove the modal from the DOM when it's closed\n modalDOMElement.addEventListener('hidden.bs.modal', () => {\n modalDOMElement.remove();\n });\n }\n\n // Create a new instance of the Bootstrap Modal class and show it\n const confirmationModal = new Modal(modalDOMElement);\n confirmationModal.show();\n });\n });\n}\n\nwindow.addEventListener('ready', load_confirmation_dialog);\nwindow.addEventListener('turbolinks:load', load_confirmation_dialog);\n","import { Dropdown } from 'bootstrap';\n\nfunction load_sidebar() {\n const none = 'd-none';\n const block = 'd-block';\n const sidebar = document.getElementById('sidebar');\n const sidebarSm = document.getElementById('sidebarSm');\n const body = document.body;\n const collapseContainer = document.getElementById('collapseSidebar');\n const button = document.getElementById('collapseSidebarButton'); // The sidebar collapse button\n\n const setCookie = (name, value, days) => {\n const date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n document.cookie = `${name}=${value};expires=${date.toUTCString()};path=/`;\n };\n\n const toggleSidebar = () => {\n if (!sidebar || !sidebarSm || !body) return;\n\n const isSidebarHidden = sidebar.classList.contains(none);\n sidebarSm.classList.toggle(none, isSidebarHidden);\n sidebar.classList.toggle(none, !isSidebarHidden);\n body.classList.toggle('sidebar-sm', !isSidebarHidden);\n body.classList.toggle('sidebar-full', isSidebarHidden);\n button.innerHTML = isSidebarHidden ? '' : '';\n setCookie('use_small_sidebar', isSidebarHidden ? 'false' : 'true', 7);\n };\n\n const initializeCollapseSidebarButton = () => {\n if (button) {\n button.addEventListener('click', toggleSidebar);\n\n collapseContainer.addEventListener('mouseenter', () => {\n button.classList.add('show-collapse-button');\n });\n\n collapseContainer.addEventListener('mouseleave', () => {\n button.classList.remove('show-collapse-button');\n });\n\n sidebar.addEventListener('mouseenter', () => {\n button.classList.add('show-collapse-button');\n });\n\n sidebar.addEventListener('mouseleave', () => {\n button.classList.remove('show-collapse-button');\n });\n\n sidebarSm.addEventListener('mouseenter', () => {\n button.classList.add('show-collapse-button');\n });\n\n sidebarSm.addEventListener('mouseleave', () => {\n button.classList.remove('show-collapse-button');\n });\n }\n };\n\n const handleViewportChange = (e) => {\n const isWideViewport = e.matches;\n const isSidebarSm = body.classList.contains('sidebar-sm');\n\n if (!sidebar || !sidebarSm) return;\n\n if (isWideViewport) {\n sidebar.classList.toggle(none, isSidebarSm);\n sidebarSm.classList.toggle(none, !isSidebarSm);\n } else {\n sidebarSm.classList.add(none);\n sidebar.classList.remove(none);\n sidebar.classList.add(block);\n }\n };\n\n document.querySelectorAll('[data-bs-toggle=\"navdropdown\"]').forEach((dropdown) => {\n const instance = new Dropdown(dropdown);\n\n // Toggle the dropdown when the button is clicked\n dropdown.addEventListener('click', (e) => {\n e.preventDefault();\n instance.toggle();\n });\n });\n\n const mediaQuery = window.matchMedia('(min-width: 768px)');\n mediaQuery.addEventListener('change', handleViewportChange);\n handleViewportChange(mediaQuery);\n\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', initializeCollapseSidebarButton);\n } else {\n initializeCollapseSidebarButton();\n }\n}\n\nwindow.addEventListener('ready', load_sidebar);\nwindow.addEventListener('turbolinks:load', load_sidebar);\n","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nimport Rails from \"@rails/ujs\";\nimport Turbolinks from \"turbolinks\";\nimport * as ActiveStorage from \"@rails/activestorage\";\nimport \"channels\";\n\nRails.start();\nTurbolinks.start();\nActiveStorage.start();\n\nimport React from \"react\";\nwindow.react = React;\n\nvar componentRequireContext = require.context(\"components\", true);\nimport ReactRailsUJS from \"react_ujs\";\nReactRailsUJS.useContext(componentRequireContext);\n\nwindow.Turbolinks = Turbolinks;\nReactRailsUJS.detectEvents();\n\n// Theme\nimport './theme/theme';\nimport './src/dynamic_add';\nimport './src/dynamic_hidden_fields';\nimport './src/google_places_autocomplete';\nimport './src/job_url_builder';\nimport './src/category_value_url_builder';\nimport './src/tinymce';\nimport './src/site_attributes_builder';\nimport './src/localisedTime';\nimport './src/instant_modal';\nimport './src/confirmation_dialog';\nimport './src/sidebar';\n\n\n","// Load all the channels within this directory and all subdirectories.\n// Channel files must be named *_channel.js.\n\nconst channels = require.context('.', true, /_channel\\.js$/)\nchannels.keys().forEach(channels)\n","/*\nThis script populates a URL slug input on the job form based on the values that are entered into the title and reference\nfields. The user is free to change the URL later, but this provides them a good starting point.\n\nIf the job is persisted then this code does not run to prevent clobbering the value which may be driving many links.\n*/\n\nclass CategoryValueUrlBuilder {\n constructor(){\n this.input = document.querySelector('#category-value-form input#category_value_url_slug.unset');\n\n if(this.input == null){ return }; // input contains a persisted value so we will not modify it\n\n this.identifier_input = document.querySelector('#category-value-form #identifier-input input');\n\n this.identifier_input.addEventListener('input', this.updateUrl.bind(this));\n }\n\n updateUrl(){\n // start the identifier\n let new_url = this.identifier_input.value.toLowerCase();\n\n // naively sanitise, the user can always correct it\n new_url = new_url.replace(/[^a-zA-Z0-9-_]/g, '-').replace(/(\\-{2,})/g, '-').replace(/(\\-+)$/g, \"\");\n\n this.input.value = new_url;\n }\n}\n\nwindow.addEventListener('ready', (e) => { new CategoryValueUrlBuilder });\nwindow.addEventListener('turbolinks:load', (e) => { new CategoryValueUrlBuilder });\n","// This feature enables 'add another' when dealing with form fields where a user can provide multiple instances\n// of some inputs.\n// It clones everything inside the fieldset element, using the last existing fieldset as a template. It then increments\n// any identifiers on the inputs themselves to play nicely with Rails' `accepts_nested_attributes_for`\nfunction load_dynamic_adds(){\n const dynFSs = document.querySelectorAll('.dynamic-fieldset');\n\n dynFSs.forEach((dynFS) => {\n const createButton = dynFS.querySelector('button.add');\n createButton.addEventListener(\"click\", () => {\n // Clone the last row\n let nodeToClone = dynFS.querySelector('fieldset:last-of-type');\n let newFieldset = nodeToClone.cloneNode(true);\n\n // remove any elements that should not be cloned into the new element\n newFieldset.querySelectorAll('[data-do-not-clone]').forEach(element => {\n element.remove();\n });\n\n // increment fieldset index\n let lastId = nodeToClone.id;\n let newId = parseInt(lastId, 10) + 1;\n newFieldset.id = newId;\n\n let idRegex = new RegExp(lastId);\n\n // refresh the elements to new input values and incremented ids\n newFieldset.querySelectorAll('input,select').forEach(input => {\n if(input.type == 'checkbox' || input.type == 'radio'){\n input.checked = false;\n } else {\n input.value = null;\n }\n input.id = input.id.replace(idRegex, newId);\n input.name = input.name.replace(idRegex, newId);\n input.disabled = false;\n });\n\n // in case the cloned fieldset is one marked for destroy and was hidden\n newFieldset.classList.remove('d-none');\n\n // append to form\n dynFS.querySelector('.dynamic-fieldset-container').appendChild(newFieldset);\n });\n\n // if the delete button is pressed, flag the element as destroyed if appropriate\n dynFS.addEventListener(\"click\", (event)=> {\n if(event.target.closest('.dynamic-fieldset-remove')) {\n var fieldset = event.target.closest('fieldset');\n var input = fieldset.querySelector('input[data-dynamic-destroy]');\n input.value = 1;\n fieldset.classList.add('d-none');\n }\n });\n });\n}\n\nwindow.addEventListener('ready', load_dynamic_adds);\nwindow.addEventListener('turbolinks:load', load_dynamic_adds);\n","// This allows you to have sections of HTML that shows or hides depending on the values chosen for an input.\n// If the input changes to having a value in the whitelist, then the panel is shown.\n// If the value changes to one not in the whitelist, then the panel is hidden and inputs disabled for safety.\n// Attributes to enable this as follows. If the panel should start hidden then the initial .d-none class should be added by the view.\n//
\nfunction load_dynamic_hidden_fields(){\n const hidden_panels = document.querySelectorAll('.dynamic-hidden-fields');\n hidden_panels.forEach((panel) => {\n const watched_input = panel.dataset.watchedInput; // name of input\n const watched_form = panel.dataset.watchedForm ? document.querySelector(panel.dataset.watchedForm) : panel.closest('form'); // selector for form that has the input\n\n const allowed_values = JSON.parse(panel.dataset.allowedValues); // whitelist of values we are looking for\n\n const disable_inputs = panel.dataset.disableInputs ? JSON.parse(panel.dataset.disableInputs) : true; // if true, disable inputs when hidden, default to true\n \n let tested_input = watched_form[watched_input];\n\n // this handles checkbox inputs that also have a matching 'falsey' hidden input added by rails for deselection\n if(RadioNodeList.prototype.isPrototypeOf(tested_input)){\n tested_input = Array.prototype.slice.call(watched_form[watched_input]).find(e => e.type != 'hidden');\n }\n\n var onChange = function () {\n if(allowed_values.includes(tested_input.value) || (allowed_values.includes('checked') && tested_input.checked) || (allowed_values.includes('unchecked') && !tested_input.checked)){\n // show the extra content if correct value selected\n panel.classList.remove('d-none');\n if(disable_inputs){\n panel.querySelectorAll('input,select').forEach((input) => {\n input.disabled = false;\n });\n }\n } else {\n // hide if wrong value, disable inputs to stop incorrect modification\n panel.classList.add('d-none');\n if(disable_inputs){\n panel.querySelectorAll('input,select').forEach((input) => {\n input.disabled = true;\n });\n }\n }\n };\n watched_form.addEventListener('change', onChange);\n onChange();\n });\n}\n\nwindow.addEventListener('ready', load_dynamic_hidden_fields);\nwindow.addEventListener('turbolinks:load', load_dynamic_hidden_fields);","function load_google_places_autocomplete(){\n const autocompletes = document.querySelectorAll('.google-places-autocomplete');\n\n autocompletes.forEach((autocomplete) => {\n new google.maps.places.Autocomplete(autocomplete);\n });\n}\n\nwindow.addEventListener('ready', load_google_places_autocomplete);\nwindow.addEventListener('turbolinks:load', load_google_places_autocomplete);","function load_instant_modals(){\n const modals = document.querySelectorAll('.modal.instant-modal');\n\n modals.forEach((modal) => {\n const myModal = new window.Modal(modal)\n\n myModal.show();\n });\n}\n\nwindow.addEventListener('ready', load_instant_modals);\nwindow.addEventListener('turbolinks:load', load_instant_modals);\n","/*\nThis script populates a URL slug input on the job form based on the values that are entered into the title and reference\nfields. The user is free to change the URL later, but this provides them a good starting point.\n\nIf the job is persisted then this code does not run to prevent clobbering the value which may be driving many links.\n*/\n\nclass JobUrlBuilder {\n constructor(){\n this.input = document.querySelector('input#job_url_slug.unset');\n\n if(this.input == null){ return }; // input contains a persisted value so we will not modify it\n\n this.job_title_input = document.querySelector('input#job_title');\n this.job_reference_input = document.querySelector('input#job_external_reference');\n\n this.job_title_input.addEventListener('input', this.updateJobUrl.bind(this));\n this.job_reference_input.addEventListener('input', this.updateJobUrl.bind(this));\n }\n\n updateJobUrl(){\n // start with the job reference\n let new_url = this.job_reference_input.value\n\n // add a joiner if required\n if(new_url.length > 0){\n new_url += '-';\n }\n\n // add the job title\n new_url += this.job_title_input.value.toLowerCase();\n\n // naively sanitise, the user can always correct it\n new_url = new_url.replace(/[^a-zA-Z0-9-_]/g, '-').replace(/(\\-{2,})/g, '-').replace(/(\\-+)$/g, \"\");\n\n this.input.value = new_url;\n }\n}\n\nwindow.addEventListener('ready', (e) => { new JobUrlBuilder });\nwindow.addEventListener('turbolinks:load', (e) => { new JobUrlBuilder });\n","class localisedTime {\n localisedMode = true\n\n constructor() {\n this.times = document.querySelectorAll('[data-localised-time]')\n this.displayTimes()\n this.attachClickHandlers()\n }\n\n attachClickHandlers() {\n this.times.forEach(element => {\n element.addEventListener('click', this.toggleMode.bind(this))\n })\n }\n\n displayTimes(mode) {\n this.times.forEach(element => {\n var d = new Date(Date.parse(element.dataset.originalTime));\n if (this.localisedMode) {\n element.textContent = d.toLocaleString()\n } else {\n element.textContent = d.toISOString()\n }\n });\n }\n\n toggleMode(){\n this.localisedMode = !this.localisedMode;\n this.displayTimes();\n }\n}\n\nwindow.addEventListener('ready', (e) => { new localisedTime });\nwindow.addEventListener('turbolinks:load', (e) => { new localisedTime });\n","/*\nThis script populates a URL slug input on the job form based on the values that are entered into the title and reference\nfields. The user is free to change the URL later, but this provides them a good starting point.\n\nIf the job is persisted then this code does not run to prevent clobbering the value which may be driving many links.\n*/\n\nclass SiteAttributesBuilder {\n constructor(){\n this.codebuild_input = document.querySelector('form#sa-new-site input#site_aws_codebuild_project_name');\n this.s3bucket_input = document.querySelector('form#sa-new-site input#site_aws_s3_bucket_name');\n this.domain_input = document.querySelector('form#sa-new-site input#site_domains_attributes_0_name');\n\n\n this.site_name_input = document.querySelector('input#site_name');\n\n if(this.codebuild_input != null){\n this.site_name_input.addEventListener('input', this.updateCodebuild.bind(this));\n }\n\n if(this.s3bucket_input != null){\n this.site_name_input.addEventListener('input', this.updateS3Bucket.bind(this));\n }\n\n if(this.domain_input != null){\n this.site_name_input.addEventListener('input', this.updateDomain.bind(this));\n }\n }\n\n updateCodebuild(){\n // start with the site name\n let new_url = this.site_name_input.value\n\n // naively sanitise, the user can always correct it\n new_url = new_url.replace(/[^a-zA-Z0-9-_]/g, '-').replace(/(\\-{2,})/g, '-').toLowerCase();\n\n this.codebuild_input.value = new_url + '-deployment';\n }\n\n updateS3Bucket(){\n // start with the site name\n let new_url = this.site_name_input.value\n\n // naively sanitise, the user can always correct it\n new_url = new_url.replace(/[^a-zA-Z0-9-_]/g, '-').replace(/(\\-{2,})/g, '-').toLowerCase();\n\n this.s3bucket_input.value = new_url + '-sourceflow';\n }\n\n updateDomain(){\n // start with the site name\n let new_url = this.site_name_input.value\n\n // naively sanitise, the user can always correct it\n new_url = new_url.replace(/[^a-zA-Z0-9-_]/g, '-').replace(/(\\-{2,})/g, '-').toLowerCase();\n\n this.domain_input.value = new_url + '.sites.sourceflow.co.uk';\n }\n}\n\nwindow.addEventListener('ready', (e) => { new SiteAttributesBuilder });\nwindow.addEventListener('turbolinks:load', (e) => { new SiteAttributesBuilder });\n","tinymce.PluginManager.add('aisuggest', function(editor, url) {\n var openDialog = function () {\n return editor.windowManager.open({\n title: 'AI Content Generation',\n body: {\n type: 'panel',\n items: [\n {\n type: 'textarea',\n name: 'prompt',\n label: 'Prompt',\n placeholder: 'Write me an article about...'\n },\n {\n type: 'alertbanner',\n text: 'This feature is in beta. Text generation will take several seconds to complete. Please provide any feedback to Support or Customer Success.',\n level: 'info',\n icon: 'warning'\n }\n ]\n },\n buttons: [\n {\n type: 'cancel',\n text: 'Close'\n },\n {\n type: 'submit',\n text: 'Generate',\n primary: true\n }\n ],\n onSubmit: function (api) {\n var data = api.getData();\n console.log(data)\n fetch(`/${process.env.PATH_PREFIX}/api/v1/ai/suggestion.json`,\n {\n method: 'POST',\n body: JSON.stringify({ message: data.prompt }),\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n credentials: 'include'\n }).then(\n response => {\n response.json().then(data => {\n console.log(data)\n editor.insertContent(data.choices[0]?.message?.content?.replace(/\\n/g, '
'));\n })\n }\n )\n /* Insert content when the window form is submitted */\n // editor.insertContent('Title: ' + data.title);\n api.close();\n }\n });\n };\n /* Add a button that opens a window */\n editor.ui.registry.addButton('aisuggest', {\n text: 'AI',\n onAction: function () {\n /* Open window */\n openDialog();\n }\n });\n /* Adds a menu item, which can then be included in any menu via the menu/menubar configuration */\n editor.ui.registry.addMenuItem('aisuggest', {\n text: 'Example plugin',\n onAction: function() {\n /* Open window */\n openDialog();\n }\n });\n /* Return the metadata for the help plugin */\n return {\n getMetadata: function () {\n return {\n name: 'AI content suggestion',\n url: 'http://exampleplugindocsurl.com'\n };\n }\n };\n});\n","tinymce.PluginManager.add('hr', function(editor, url) {\n editor.addCommand('InsertHorizontalRule', function () {\n editor.execCommand('mceInsertContent', false, '
');\n });\n editor.ui.registry.addButton('hr', {\n text: 'hr',\n cmd: 'InsertHorizontalRule'\n });\n\n return {\n getMetadata: function () {\n return {\n name: 'Insert Horizontal Rule',\n url: 'http://exampleplugindocsurl.com'\n };\n }\n };\n})","//\n// map.js\n// Theme module\n//\n\nconst maps = document.querySelectorAll('[data-map]');\nconst accessToken = 'pk.eyJ1IjoiZ29vZHRoZW1lcyIsImEiOiJjanU5eHR4N2cybDU5NGVwOHZwNGprb3E0In0.msdw9q16dh8v4azJXUdiXg';\n\nif (typeof mapboxgl !== 'undefined') {\n maps.forEach(map => {\n const elementOptions = map.dataset.map ? JSON.parse(map.dataset.map) : {};\n\n const defaultOptions = {\n container: map,\n style: 'mapbox://styles/mapbox/light-v9',\n scrollZoom: false,\n interactive: false\n }\n\n const options = {\n ...elementOptions,\n ...defaultOptions\n };\n\n // Get access token\n mapboxgl.accessToken = accessToken;\n\n // Init map\n new mapboxgl.Map(options);\n })\n}\n"],"names":["webpackEmptyContext","req","e","Error","code","keys","resolve","id","module","exports","document","querySelectorAll","forEach","toggle","autosize","window","Alert","Button","Carousel","Collapse","Dropdown","Modal","Offcanvas","Popover","ScrollSpy","Tab","Toast","Tooltip","checklists","Sortable","draggable","handle","mirror","constrainDimensions","load_choices","options","dataset","choices","JSON","parse","classNames","containerInner","className","input","inputCloned","listDropdown","itemChoice","activeState","selectedState","shouldSort","callbackOnCreateTemplates","template","choice","data","classes","item","disabled","itemDisabled","itemSelectable","role","groupId","selectText","this","config","itemSelectText","label","customProperties","avatarSrc","value","Choices","addEventListener","Dropzone","currentFile","elementOptions","dropzone","defaultOptions","previewsContainer","querySelector","previewTemplate","innerHTML","init","on","file","maxFiles","removeFile","load_flatpickr","flatpickr","instance","flatpickrSubmit","onClose","push","selectedDates","dateStr","closest","submit","highlights","hljs","xml","javascript","highlight","toggles","Inputmask","rightAlign","mask","categories","links","forms","toggleItems","el","parent","card","link","form","classList","contains","remove","add","preventDefault","lists","sorts","countCheckboxes","listCheckboxes","listAlert","listAlertCount","checked","slice","call","filter","checkbox","length","List","list","listAlertClose","listCheckboxAll","listPagination","listPaginationPrev","listPaginationNext","listOptions","Object","assign","listClass","searchClass","sortClass","listObj","pagination","nextItem","parseInt","i","page","size","show","prevItem","sort","collapse","collapseInstance","stopPropagation","parentElement","siblingCollapse","siblingCollapseInstance","getInstance","hide","childCollapse","dropdowns","loadPopovers","popover","loadTooltips","tooltip","innerWidth","dropdown","getCSSVariableValue","variable","getComputedStyle","documentElement","getPropertyValue","Chart","register","ArcElement","BarController","BarElement","BubbleController","CategoryScale","Decimation","DoughnutController","Filler","Legend","LinearScale","LineController","LineElement","LogarithmicScale","PieController","PointElement","PolarAreaController","RadarController","RadialLinearScale","ScatterController","TimeScale","TimeSeriesScale","Title","colors","gray","primary","black","white","transparent","fonts","legends","externalTooltipHandler","context","chart","tooltipEl","canvas","parentNode","createElement","setAttribute","arrowEl","contentEl","appendChild","getOrCreateTooltip","opacity","style","visibility","body","titleLines","title","bodyLines","map","b","lines","headEl","headingEl","text","createTextNode","bodyEl","labelColors","indicatorEl","backgroundColor","type","borderColor","rootEl","firstChild","offsetLeft","positionX","offsetTop","positionY","left","caretX","top","caretY","transform","externalTooltipLabelCallback","ctx","scale","scales","yAxisID","dataPoints","ticks","callback","apply","parsed","y","defaults","responsive","maintainAspectRatio","color","font","family","layout","padding","plugins","legend","display","elements","point","radius","line","tension","borderWidth","borderCapStyle","bar","borderRadius","borderSkipped","datasets","maxBarThickness","arc","hoverBorderColor","enabled","mode","intersect","external","callbacks","doughnut","cutout","overrides","before","beforeLabel","after","afterLabel","formattedValue","linear","grid","borderDash","borderDashOffset","drawBorder","drawTicks","beginAtZero","stepSize","category","drawOnChartArea","event","trigger","target","action","index","chartInstance","getChart","activeDataset","hidden","backupDataset","order","prop","sourceDataset","update","isHidden","toggleDataset","legendEl","legendItems","fillStyle","toggleLegend","audienceChart","getElementById","yAxisOne","yAxisTwo","labels","conversionsChart","val","trafficChart","trafficChartAlt","salesChart","ordersChart","earningsChart","yAxisThree","weeklyHoursChart","overviewChart","sparklineChart","x","hoverRadius","Array","fill","sparklineCharts","feedChart","load_tinymce","tinymce","selector","menubar","skin","content_style","toolbar","media_poster","media_alt_source","convert_urls","link_class_list","sandbox_iframes","load_confirmation_dialog","element","confirmationDialogId","icon","confirmationDialogIcon","message","confirmationDialogMessage","confirmationDialogTitle","confirmButtonText","confirmationDialogConfirmButtonText","confirmButtonClass","confirmationDialogConfirmButtonClass","cancelButtonText","confirmationDialogCancelButtonText","cancelButtonClass","confirmationDialogCancelButtonClass","modalDOMElement","insertAdjacentHTML","createModalHtml","confirmationModal","load_sidebar","none","sidebar","sidebarSm","collapseContainer","button","toggleSidebar","isSidebarHidden","setCookie","name","days","date","Date","setTime","getTime","cookie","toUTCString","initializeCollapseSidebarButton","handleViewportChange","isWideViewport","matches","isSidebarSm","mediaQuery","matchMedia","readyState","Rails","start","Turbolinks","ActiveStorage","react","React","componentRequireContext","require","ReactRailsUJS","channels","CategoryValueUrlBuilder","constructor","identifier_input","updateUrl","bind","new_url","toLowerCase","replace","load_dynamic_adds","dynFS","nodeToClone","newFieldset","cloneNode","lastId","newId","idRegex","RegExp","fieldset","load_dynamic_hidden_fields","panel","watched_input","watchedInput","watched_form","watchedForm","allowed_values","allowedValues","disable_inputs","disableInputs","tested_input","RadioNodeList","prototype","isPrototypeOf","find","onChange","includes","load_google_places_autocomplete","autocomplete","google","maps","places","Autocomplete","load_instant_modals","modal","JobUrlBuilder","job_title_input","job_reference_input","updateJobUrl","localisedTime","localisedMode","times","displayTimes","attachClickHandlers","toggleMode","d","originalTime","textContent","toLocaleString","toISOString","SiteAttributesBuilder","codebuild_input","s3bucket_input","domain_input","site_name_input","updateCodebuild","updateS3Bucket","updateDomain","PluginManager","editor","url","openDialog","windowManager","open","items","placeholder","level","buttons","onSubmit","api","getData","console","log","fetch","method","stringify","prompt","headers","credentials","then","response","json","insertContent","content","close","ui","registry","addButton","onAction","addMenuItem","getMetadata","addCommand","execCommand","cmd","mapboxgl","container","scrollZoom","interactive","accessToken","Map"],"sourceRoot":""}