{"version":3,"file":"js/application-331fe04f4db0713f29ba.js","mappings":"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","sources":["webpack://koffiedirect/./app/javascript/channels/ sync _channel\\.js$","webpack://koffiedirect/./app/javascript/controllers/ sync _controller\\.js$","webpack://koffiedirect/./app/javascript/channels/index.js","webpack://koffiedirect/./app/javascript/controllers/hello_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/accordion_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/checkbox_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/collapsible_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/dialog_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/dropdown_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/dropzone_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/filter_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/hover-card_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/popover_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/sheet_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/slider_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/switch_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/tabs_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/toast_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/toggle_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/tooltip_controller.js","webpack://koffiedirect/./app/javascript/controllers/ui/transition_controller.js","webpack://koffiedirect/./app/javascript/shared/utility_functions.js","webpack://koffiedirect/./app/javascript/shared/custom_toast.js","webpack://koffiedirect/./app/javascript/controllers/index.js","webpack://koffiedirect/./app/javascript/packs/application.js","webpack://koffiedirect/./app/javascript/shared/select_actor.js","webpack://koffiedirect/./app/javascript/shared/jquery_alternative.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 = 463;\nmodule.exports = webpackEmptyContext;","var map = {\n\t\"./hello_controller.js\": 155,\n\t\"./ui/accordion_controller.js\": 354,\n\t\"./ui/checkbox_controller.js\": 404,\n\t\"./ui/collapsible_controller.js\": 310,\n\t\"./ui/dialog_controller.js\": 682,\n\t\"./ui/dropdown_controller.js\": 870,\n\t\"./ui/dropzone_controller.js\": 373,\n\t\"./ui/filter_controller.js\": 920,\n\t\"./ui/hover-card_controller.js\": 549,\n\t\"./ui/popover_controller.js\": 305,\n\t\"./ui/sheet_controller.js\": 885,\n\t\"./ui/slider_controller.js\": 397,\n\t\"./ui/switch_controller.js\": 613,\n\t\"./ui/tabs_controller.js\": 440,\n\t\"./ui/toast_controller.js\": 697,\n\t\"./ui/toggle_controller.js\": 138,\n\t\"./ui/tooltip_controller.js\": 788,\n\t\"./ui/transition_controller.js\": 973,\n\t\"controllers/hello_controller.js\": 155,\n\t\"controllers/ui/accordion_controller.js\": 354,\n\t\"controllers/ui/checkbox_controller.js\": 404,\n\t\"controllers/ui/collapsible_controller.js\": 310,\n\t\"controllers/ui/dialog_controller.js\": 682,\n\t\"controllers/ui/dropdown_controller.js\": 870,\n\t\"controllers/ui/dropzone_controller.js\": 373,\n\t\"controllers/ui/filter_controller.js\": 920,\n\t\"controllers/ui/hover-card_controller.js\": 549,\n\t\"controllers/ui/popover_controller.js\": 305,\n\t\"controllers/ui/sheet_controller.js\": 885,\n\t\"controllers/ui/slider_controller.js\": 397,\n\t\"controllers/ui/switch_controller.js\": 613,\n\t\"controllers/ui/tabs_controller.js\": 440,\n\t\"controllers/ui/toast_controller.js\": 697,\n\t\"controllers/ui/toggle_controller.js\": 138,\n\t\"controllers/ui/tooltip_controller.js\": 788,\n\t\"controllers/ui/transition_controller.js\": 973\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 74;","// 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","// Visit The Stimulus Handbook for more details\n// https://stimulusjs.org/handbook/introduction\n//\n// This example controller works with specially annotated HTML like:\n//\n//
\n//

\n//
\n\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"output\" ]\n\n connect() {\n this.outputTarget.textContent = 'Hello, Stimulus!'\n }\n}\n","// Inspired by https://github.com/kanety/stimulus-accordion\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n get togglers() {\n return this.context.bindingObserver.bindings\n .filter((binding) => binding.action.methodName == \"toggle\")\n .map((binding) => binding.action.element);\n }\n\n get openedTogglers() {\n return this.togglers.filter((toggler) => this.isOpened(toggler));\n }\n\n get contents() {\n return this.scope.findAllElements(\"[data-accordion-id]\");\n }\n\n connect() {\n this.init();\n }\n\n init() {\n this.togglers.forEach((toggler) => {\n let content = this.findContent(toggler);\n if (this.isOpened(toggler)) {\n this.show(toggler, content, false);\n } else {\n this.hide(toggler, content, false);\n }\n });\n }\n\n toggle(e) {\n this.togglers.forEach((toggler) => {\n if (toggler.contains(e.target)) {\n if (this.isOpened(toggler)) {\n this.close(toggler);\n } else {\n this.open(toggler);\n }\n } else if (this.isOpened(toggler)) {\n this.close(toggler);\n }\n });\n\n e.preventDefault();\n }\n\n open(toggler) {\n let content = this.findContent(toggler);\n this.show(toggler, content);\n this.dispatch(\"opened\", { detail: { toggler: toggler, content: content } });\n }\n\n close(toggler) {\n let content = this.findContent(toggler);\n this.hide(toggler, content);\n this.dispatch(\"closed\", { detail: { toggler: toggler, content: content } });\n }\n\n show(toggler, content, transition = true) {\n if (transition) {\n content.style.height = \"0px\";\n content.removeEventListener(\"transitionend\", this.transitionEnd);\n content.addEventListener(\"transitionend\", this.transitionEnd);\n setTimeout(() => {\n content.style.height = content.scrollHeight + \"px\";\n });\n }\n\n this.toggleClass(toggler, content, true);\n this.toggleText(toggler, true);\n }\n\n hide(toggler, content, transition = true) {\n if (transition) {\n content.style.height = content.scrollHeight + \"px\";\n content.removeEventListener(\"transitionend\", this.transitionEnd);\n content.addEventListener(\"transitionend\", this.transitionEnd);\n setTimeout(() => {\n content.style.height = \"0px\";\n });\n }\n\n this.toggleClass(toggler, content, false);\n this.toggleText(toggler, false);\n }\n\n transitionEnd(e) {\n e.target.style.height = \"\";\n }\n\n toggleClass(toggler, content, opened) {\n if (opened) {\n toggler.classList.add(\"st-accordion__icon--opened\");\n content.classList.add(\"st-accordion__content--visible\");\n toggler.dataset.state = \"open\";\n } else {\n toggler.classList.remove(\"st-accordion__icon--opened\");\n content.classList.remove(\"st-accordion__content--visible\");\n toggler.dataset.state = \"closed\";\n }\n }\n\n toggleText(toggler, opened) {\n let text;\n if (opened) {\n text = toggler.getAttribute(\"data-accordion-opened-text-param\");\n } else {\n text = toggler.getAttribute(\"data-accordion-closed-text-param\");\n }\n if (text) toggler.innerHTML = text;\n }\n\n isOpened(toggler) {\n return toggler.matches(\".st-accordion__icon--opened\");\n }\n\n findContent(toggler) {\n let id = this.getID(toggler);\n return this.scope.findElement(`[data-accordion-id=\"${id}\"]`);\n }\n\n getID(toggler) {\n return toggler.getAttribute(\"href\").replace(/^#/, \"\");\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nexport default class extends Controller {\n connect() {\n this.button = this.element.querySelector(\"button\");\n this.checkmark = this.button.querySelector(\"span\");\n }\n\n toggle() {\n if (this.checkmark.classList.contains(\"hidden\")) {\n this.checkmark.classList.remove(\"hidden\");\n this.button.dataset.state = \"checked\";\n } else {\n this.checkmark.classList.add(\"hidden\");\n this.button.dataset.state = \"unchecked\";\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"item\"];\n static classes = [\"hidden\"];\n\n connect() {\n this.class = this.hasHiddenClass ? this.hiddenClass : \"hidden\";\n }\n\n toggle() {\n this.itemTargets.forEach((item) => {\n item.classList.toggle(this.class);\n });\n }\n\n show() {\n this.itemTargets.forEach((item) => {\n item.classList.remove(this.class);\n });\n }\n\n hide() {\n this.itemTargets.forEach((item) => {\n item.classList.add(this.class);\n });\n }\n}\n","// Inspired by https://github.com/kanety/stimulus-dialog\nimport { Controller } from \"@hotwired/stimulus\";\nimport \"@kanety/stimulus-static-actions\";\n\nexport default class UIDialog extends Controller {\n static targets = [\"dialog\", \"modal\", \"focus\", \"drag\", \"backdrop\", \"closeButton\"];\n static actions = [\n [\"element\", \"keydown@window->closeByKey\"],\n [\"modal\", \"click->closeByModal\"],\n [\"closeButton\", \"click->close\"],\n ];\n\n initialize() {}\n connect() {}\n open(e) {\n this.openBy(e.target);\n e.preventDefault();\n }\n\n close(e) {\n this.closeBy(e.target);\n e.preventDefault();\n }\n\n toggle(e) {\n if (this.isVisible()) {\n this.closeBy(e.target);\n } else {\n this.openBy(e.target);\n }\n e.preventDefault();\n }\n\n closeByKey(e) {\n if (e.keyCode == 27) {\n this.closeBy(e.target);\n e.preventDefault();\n }\n }\n\n closeByModal(e) {\n if (!this.dialogTarget.contains(e.target)) {\n this.closeBy(e.target);\n }\n }\n\n isVisible() {\n return this.dialogTarget.classList.contains(\"st-dialog--visible\");\n }\n\n openBy(target) {\n this.toggleClass(true);\n\n if (this.hasFocusTarget) {\n this.focusTarget.focus();\n }\n\n this.dispatch(\"opened\", { detail: { target: target } });\n }\n\n closeBy(target) {\n this.toggleClass(false);\n\n if (target.getAttribute('data-ui--dialog-target') === 'modal') {\n document.body.classList.remove(\"overflow-hidden\");\n }\n this.dispatch(\"closed\", { detail: { target: target } });\n }\n\n // Refactor Me\n // This needs to be combined with the toggle method in sheet_controller\n toggleClass(visible) {\n if (visible) {\n this.dialogTarget.classList.remove(\"hidden\");\n this.dialogTarget.dataset.state = \"open\";\n if (this.hasBackdropTarget) {\n this.backdropTarget.classList.remove(\"hidden\");\n this.backdropTarget.dataset.state = \"open\";\n }\n if (this.hasModalTarget) {\n this.modalTarget.classList.remove(\"hidden\");\n this.modalTarget.dataset.state = \"open\";\n }\n } else {\n this.dialogTarget.classList.add(\"hidden\");\n this.dialogTarget.dataset.state = \"closed\";\n if (this.hasBackdropTarget) {\n this.backdropTarget.classList.add(\"hidden\");\n this.backdropTarget.dataset.state = \"closed\";\n }\n if (this.hasModalTarget) {\n this.modalTarget.classList.add(\"hidden\");\n this.modalTarget.dataset.state = \"closed\";\n }\n }\n }\n}\n","// Inspired By: https://github.com/stimulus-components/stimulus-dropdown/blob/master/src/index.ts\nimport UIPopover from \"controllers/ui/popover_controller\";\nimport { useTransition } from \"stimulus-use\";\n\nexport default class extends UIPopover {}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"fileInput\"];\n connect() {\n this.element.addEventListener(\"dragover\", this.preventDragDefaults);\n this.element.addEventListener(\"dragenter\", this.preventDragDefaults);\n }\n\n disconnect() {\n this.element.removeEventListener(\"dragover\", this.preventDragDefaults);\n this.element.removeEventListener(\"dragenter\", this.preventDragDefaults);\n }\n\n preventDragDefaults(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n trigger() {\n this.fileInputTarget.click();\n }\n\n acceptFiles(event) {\n event.preventDefault();\n const files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n [...files].forEach((file) => {\n this.uploadFile(file);\n });\n }\n\n // Implement your own file upload strategy here...\n uploadFile(file) {\n console.log(\"Received file for upload: \", file);\n console.log(\"Implement your own file upload strategy here...\");\n // const formData = new FormData();\n // formData.append(\"file\", file);\n\n // fetch(\"/upload\", {\n // method: \"POST\",\n // body: formData,\n // })\n // .then((response) => response.json())\n // .then((data) => {\n // console.log(data);\n // });\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class UIFilter extends Controller {\n static targets = [\"source\", \"item\"];\n\n connect() {}\n\n filter(event) {\n let lowerCaseFilterTerm = this.sourceTarget.value.toLowerCase();\n let regex = new RegExp(lowerCaseFilterTerm);\n if (this.hasItemTarget) {\n this.itemTargets.forEach((el, i) => {\n let filterableKey = el.innerText.toLowerCase();\n\n // Check for consecutive characters match using regex\n el.classList.toggle(\"hidden\", !regex.test(filterableKey));\n });\n }\n }\n}\n","// Inspired by: https://github.com/excid3/tailwindcss-stimulus-components/blob/master/src/popover.js\n\nimport { Controller } from \"@hotwired/stimulus\";\nimport { createPopper } from \"@popperjs/core\";\nimport { useDebounce, useHover } from \"stimulus-use\";\n\nexport default class UIHoverCardController extends Controller {\n static debounces = [\"mouseEnter\", \"mouseLeave\"];\n static targets = [\"content\", \"wrapper\", \"trigger\"];\n\n connect() {\n useDebounce(this);\n useHover(this, { element: this.triggerTarget });\n this.popperInstance = createPopper(this.triggerTarget, this.contentTarget, {\n placement: this.contentTarget.dataset.side || \"bottom\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 8],\n },\n },\n ],\n });\n }\n\n mouseEnter() {\n this.popperInstance.update();\n this.contentTarget.dataset.state = \"open\";\n this.contentTarget.classList.remove(\"hidden\");\n }\n\n mouseLeave() {\n this.popperInstance.update();\n this.contentTarget.dataset.state = \"closed\";\n this.contentTarget.classList.add(\"hidden\");\n }\n}\n","// Inspired by: https://github.com/excid3/tailwindcss-stimulus-components/blob/master/src/popover.js\n\nimport { Controller } from \"@hotwired/stimulus\";\nimport { createPopper } from \"@popperjs/core\";\nimport { useClickOutside } from \"stimulus-use\";\n\nexport default class UIPopover extends Controller {\n static values = {\n dismissAfter: Number,\n };\n static targets = [\"content\", \"wrapper\", \"trigger\"];\n\n connect() {\n useClickOutside(this);\n this.popperInstance = createPopper(this.triggerTarget, this.contentTarget, {\n placement: this.contentTarget.dataset.side || \"bottom\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 8],\n },\n },\n ],\n });\n }\n\n // Show the popover\n show() {\n this.contentTarget.classList.remove(\"hidden\");\n this.contentTarget.dataset.state = \"open\";\n }\n\n // Hide the popover\n hide() {\n this.contentTarget.classList.add(\"hidden\");\n this.contentTarget.dataset.state = \"closed\";\n }\n\n clickOutside(event) {\n this.hide();\n }\n\n // Toggle the popover on demand\n toggle(event) {\n this.popperInstance.update();\n if (this.contentTarget.classList.contains(\"hidden\")) {\n this.show();\n\n if (this.hasDismissAfterValue) {\n setTimeout(() => {\n this.hide();\n }, this.dismissAfterValue);\n }\n } else {\n this.hide();\n }\n }\n}\n","import UIDialog from \"controllers/ui/dialog_controller\";\nimport \"@kanety/stimulus-static-actions\";\n\nexport default class extends UIDialog {\n // Handles a button triggering the sheet in a different\n // controller instance\n // REFACTOR: This is the toggle method in dialog_controller with dom elements\n // instead of targets. Update the method there to receive dom elements and this\n // can be refactored to use those methods instead of reimplementing.\n toggleOutlet() {\n const sheetTarget = document.querySelector(this.element.dataset.UiSheetOutlet);\n const dialogTarget = sheetTarget.querySelector(\"[data-ui--sheet-target='dialog']\");\n const modalTarget = sheetTarget.querySelector(\"[data-ui--sheet-target='modal']\");\n const contentTarget = sheetTarget.querySelector(\"[data-ui--sheet-target='content']\");\n const visible = dialogTarget.dataset.state == \"closed\" ? false : true;\n const mainTarget = document.body;\n if (!visible) {\n document.body.classList.add(\"overflow-hidden\");\n contentTarget.classList.add(\"overflow-y-scroll\", \"h-full\");\n dialogTarget.classList.remove(\"hidden\");\n dialogTarget.dataset.state = \"open\";\n modalTarget.classList.remove(\"hidden\");\n modalTarget.dataset.state = \"open\";\n } else {\n document.body.classList.remove(\"overflow-hidden\");\n contentTarget.classList.remove(\"overflow-y-scroll\", \"h-full\");\n dialogTarget.classList.add(\"hidden\");\n dialogTarget.dataset.state = \"closed\";\n modalTarget.classList.add(\"hidden\");\n modalTarget.dataset.state = \"closed\";\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class UISliderController extends Controller {\n updateRange() {\n const input = this.element;\n const min = input.min;\n const max = input.max;\n const val = input.value;\n\n const fillRatio = parseInt(((val - min) * 100) / (max - min));\n input.style = `background-size: ${fillRatio}% 100%`;\n input.setAttribute(\"value\", fillRatio);\n }\n}\n","// Inspired by: https://github.com/excid3/tailwindcss-stimulus-components/blob/master/src/popover.js\n\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class UIToggleController extends Controller {\n connect() {}\n\n toggle() {\n const button = this.element.querySelector(\"button\");\n const span = this.element.querySelector(\"span\");\n const input1 = this.element.querySelector(\"input[type='hidden']\");\n const input2 = this.element.querySelector(\"input[type='checkbox']\");\n\n if (this.element.dataset.state == \"checked\") {\n input1.value = \"0\";\n input2.value = \"0\";\n button.dataset.state = \"unchecked\";\n span.dataset.state = \"unchecked\";\n this.element.dataset.state = \"unchecked\";\n } else {\n input1.value = \"1\";\n input2.value = \"1\";\n button.dataset.state = \"checked\";\n span.dataset.state = \"checked\";\n this.element.dataset.state = \"checked\";\n }\n }\n}\n","// https://github.com/excid3/tailwindcss-stimulus-components/blob/master/src/tabs.js\nimport { Controller } from \"@hotwired/stimulus\";\nimport \"@kanety/stimulus-static-actions\";\n\nexport default class extends Controller {\n static targets = [\"tab\", \"panel\"];\n static actions = [[\"tab\", \"click->change\"]];\n\n connect() {\n this.activeTabClasses = (this.data.get(\"activeTab\") || \"active\").split(\" \");\n this.inactiveTabClasses = (this.data.get(\"inactiveTab\") || \"inactive\").split(\" \");\n if (this.anchor) this.index = this.tabTargets.findIndex((tab) => tab.id === this.anchor);\n // this.showTab();\n }\n\n change(event) {\n // If target specifies an index, use that\n if (event.currentTarget.dataset.index) {\n this.index = event.currentTarget.dataset.index;\n\n // If target specifies an id, use that\n } else if (event.currentTarget.dataset.id) {\n this.index = this.tabTargets.findIndex((tab) => tab.id == event.currentTarget.dataset.id);\n\n // Otherwise, use the index of the current target\n } else {\n this.index = this.tabTargets.indexOf(event.currentTarget);\n }\n\n window.dispatchEvent(new CustomEvent(\"tsc:tab-change\"));\n }\n\n showTab() {\n this.tabTargets.forEach((tab, index) => {\n const panel = this.panelTargets[index];\n\n if (index === this.index) {\n panel.classList.remove(\"hidden\");\n tab.classList.remove(...this.inactiveTabClasses);\n tab.classList.add(...this.activeTabClasses);\n tab.dataset.state = \"active\";\n panel.dataset.state = \"active\";\n\n // Update URL with the tab ID if it has one\n // This will be automatically selected on page load\n // - Breaks any other anchors\n // if (tab.id) {\n // location.hash = tab.id;\n // }\n } else {\n panel.classList.add(\"hidden\");\n tab.classList.remove(...this.activeTabClasses);\n tab.classList.add(...this.inactiveTabClasses);\n tab.dataset.state = \"inactive\";\n panel.dataset.state = \"inactive\";\n }\n });\n }\n\n get index() {\n return parseInt(this.data.get(\"index\") || 0);\n }\n\n set index(value) {\n this.data.set(\"index\", value >= 0 ? value : 0);\n this.showTab();\n }\n\n get anchor() {\n return document.URL.split(\"#\").length > 1 ? document.URL.split(\"#\")[1] : null;\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class UIToastController extends Controller {\n static targets = [\"item\"];\n\n connect() {\n if (this.element.role == \"region\" && this.element.dataset.auto != \"false\") {\n setTimeout(() => {\n this.open();\n }, 1000);\n this.close();\n }\n }\n\n open() {\n const toastElement = this.element.querySelector(\"[data-ui--toast-target='item']\");\n this.element.dataset.state = \"open\";\n this.element.classList.remove(\"hidden\");\n this.showToast(toastElement);\n }\n\n close() {\n const toastElement = this.element.querySelector(\"[data-ui--toast-target='item']\");\n this.element.dataset.state = \"closed\";\n this.element.classList.add(\"hidden\");\n this.closeToast(toastElement);\n }\n\n showToast(el) {\n if (el) {\n el.dataset.state = \"open\";\n el.classList.remove(\"hidden\");\n }\n }\n\n closeToast(el) {\n if (el) {\n setTimeout(() => {\n el.dataset.state = \"closed\";\n el.classList.add(\"hidden\");\n }, el.dataset.duration || 3000);\n }\n }\n\n trigger() {\n const idTarget = this.element.dataset.target;\n const toastContainer = document.querySelector(`${idTarget}`);\n toastContainer.dataset.state = \"open\";\n toastContainer.classList.remove(\"hidden\");\n const toastElement = toastContainer.querySelector(\"[data-ui--toast-target='item']\");\n this.showToast(toastElement);\n this.closeToast(toastElement);\n }\n\n openAll() {\n const toastElements = document.querySelectorAll(\n \"[data-ui--toast-target='item']:not([data-visible='false'])\",\n );\n toastElements.forEach((toastElement) => {\n this.showToast(toastElement);\n });\n }\n\n closeAll() {\n const toastElements = document.querySelectorAll(\"[data-ui--toast-target='item']\");\n toastElements.forEach((toastElement) => {\n this.closeToast(toastElement);\n });\n }\n}\n","// Inspired by: https://github.com/excid3/tailwindcss-stimulus-components/blob/master/src/popover.js\n\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class UIToggleController extends Controller {\n connect() {}\n\n toggle() {\n if (this.element.dataset.state == \"on\") {\n this.element.dataset.state = \"off\";\n } else {\n this.element.dataset.state = \"on\";\n }\n }\n}\n","import UIHoverCardController from \"controllers/ui/hover-card_controller\";\n\nexport default class UITooltipController extends UIHoverCardController {}\n","import { Controller } from \"@hotwired/stimulus\";\nimport { useTransition } from \"stimulus-use\";\n\nexport default class extends Controller {\n connect() {\n useTransition(this);\n }\n}\n","import SlimSelect from 'slim-select';\n\nexport const slimSelect = (target) => {\n new SlimSelect({\n select: target,\n });\n}\n\nexport const openModalId = () => {\n\tlet activeModalId = '';\n\tdocument.querySelectorAll(\".modal\").forEach(function (ele) {\n\t\tif (!ele.classList.contains('pointer-events-none')) {\n\t\t\tactiveModalId = ele.id;\n\t\t}\n\t})\n\treturn activeModalId;\n}\n\nexport const toggleModal = (modalId = null) => {\n\tconst activeModalId = openModalId();\n\tconst body = document.querySelector('body');\n\tlet modal = '';\n\tif (modalId != null && modalId.length > 0)\n\t\tmodal = document.getElementById(modalId);\n\telse\n\t\tmodal = document.getElementById(activeModalId);\n\n\tmodal.classList.toggle('opacity-0');\n\tmodal.classList.toggle('pointer-events-none');\n\tbody.classList.toggle('modal-active');\n}\n\nexport const appendData = (element, text, value) => {\n const selectData = element.slim.getData();\n selectData.push({text: text, value: value});\n element.slim.setData(selectData);\n}\n\nexport const populateSelectWithArr = (element, data, promptText) => {\n const selectData = [{text: promptText}];\n data.forEach(option => {\n selectData.push({text: option});\n });\n element.slim.setData(selectData);\n}\n//Create and append the options\nexport const populateSelect = (element, data, promptText, createOpt) => {\n\t// Default prompt\n\tconst selectData = [{text: promptText}];\n\n\tdata.forEach(option => {\n selectData.push({text: option.name, value: option.id});\n });\n\n\t// as create \n\tif (element.id == 'activity_feed_product_id' && document.getElementById('activity_feed_product_type').value != 'Product')\n\t\tcreateOpt = false\n\t// last option(as action)\n\tif (createOpt == true) {\n selectData.push({text: 'CREATE NEW', value: 'create_new'})\n\t}\n element.slim.setData(selectData);\n}\n\nexport const removeOptions = (element) => {\n if (!!element.slim) {\n element.slim.setData([]);\n }\n}\n\nexport const refreshTriggerStates = (promptText) => {\n const taskTypeDivs = document.querySelectorAll(\".task-type\");\n if (taskTypeDivs.length > 0) {\n taskTypeDivs.forEach((taskTypeDiv) => {\n taskTypeDiv.addEventListener('change', function(e) {\n const taskTypeSelected = e.target.options[e.target.selectedIndex]?.value?.split('-')[1];\n const taskTypeText = e.target.options[e.target.selectedIndex]?.text;\n const eleTrigger = e.target.parentElement.nextElementSibling.children[1];\n \n const models = ['Batch', 'Container', 'Product', 'Variant'] + ['None'];\n \n if (models.includes(taskTypeText)) {\n if (eleTrigger.options.length > 1)\n removeOptions(eleTrigger);\n \n const selectData = [{text: promptText}];\n \n if (taskTypeText != 'None') {\n selectData.push({text: 'create', value: 'create'})\n selectData.push({text: 'update', value: 'update'})\n }\n eleTrigger.slim.setData(selectData);\n }\n else {\n \n fetch(`/task_types/${taskTypeSelected}/actor_status_list`)\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n })\n .then(data => {\n const statuses = data.status_list;\n\n if (eleTrigger.options.length > 1) {\n removeOptions(eleTrigger);\n }\n\n const selectData = [{ text: promptText }];\n\n statuses.forEach(option => {\n selectData.push({ text: option.text, value: option.id });\n });\n\n eleTrigger.slim.setData(selectData);\n })\n .catch(error => console.error('Error fetching data:', error));\n }\n })\n });\n }\n}\n\nexport default { openModalId, toggleModal, populateSelectWithArr, populateSelect, removeOptions, refreshTriggerStates, slimSelect }","export function handleToastClose() {\n const toastContainers = document.querySelectorAll('#toast-container');\n if (toastContainers.length > 0) {\n const toastCloseButtons = document.querySelectorAll('.toast-close');\n toastCloseButtons.forEach(function(toastCloseButton) {\n toastCloseButton.addEventListener('click', function() {\n toastContainers.forEach(function(toastContainer) {\n closeToast(toastContainer);\n });\n });\n });\n toastContainers.forEach(function(toastContainer) {\n fadeOutToast(toastContainer);\n });\n }\n}\n\nfunction fadeOutToast(toastContainer, counterThreshold = 70) {\n let counter = 100; \n const fadeOutInterval = setInterval(function() {\n counter -= 1; \n\n if (counter <= counterThreshold) {\n clearInterval(fadeOutInterval);\n closeToast(toastContainer);\n }\n }, 100); \n}\n\nfunction closeToast(toastContainer) {\n let opacity = 100; \n const fadeOutInterval2 = setInterval(function() {\n opacity -= 1;\n toastContainer.style.opacity = opacity / 100;\n if (opacity <= 0) {\n clearInterval(fadeOutInterval2);\n toastContainer.style.display = 'none';\n }\n }, 7);\n}","// Load all the controllers within this directory and all subdirectories.\n// Controller files must be named *_controller.js.\n\nimport { Application } from \"stimulus\"\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\"\n\nconst application = Application.start()\nconst context = require.context(\"controllers\", true, /_controller\\.js$/)\napplication.load(definitionsFromContext(context))\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 $ from 'jquery';\nglobal.$ = window.$ = window.jQuery = $;\nimport \"@hotwired/turbo-rails\"\nimport { toggleModal, populateSelectWithArr, populateSelect, appendData, removeOptions, refreshTriggerStates, slimSelect } from '../shared/utility_functions';\nimport \"channels\";\nimport { setupActorSelect } from \"../shared/select_actor\";\nimport { Application } from \"stimulus\";\nimport Carousel from \"stimulus-carousel\";\nimport \"@fortawesome/fontawesome-free/css/all\";\nimport { getScript, height, showElements, hideElements, toggle, offset, multiSelectValues, addClass, removeClass, documentOn, elementOn } from '../shared/jquery_alternative';\nimport { handleToastClose } from '../shared/custom_toast'\n\nconst application = Application.start();\napplication.register(\"carousel\", Carousel);\n\nimport \"cocoon-js-vanilla\";\n\nimport * as d3 from \"d3\";\n\nimport LocalTime from \"local-time\";\n\nimport \"stylesheets/application\";\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\nLocalTime.start();\nTurbo.session.drive = false\n\ndocument.addEventListener('turbo:load', function() {\n handleToastClose();\n document.querySelectorAll('select').forEach(function(element) {\n if (!element.slim){\n slimSelect(element);\n element.style.display = 'block';\n element.style.opacity = '0';\n element.style.height = '0';\n element.style.width = '0';\n element.style.padding = '0';\n element.style.margin = '0';\n }\n });\n});\n\ndocument.addEventListener('cocoon:after-insert', function (event) {\n document.querySelectorAll('select').forEach(function(element) {\n if (!element.slim){\n slimSelect(element);\n element.style.display = 'block';\n element.style.opacity = '0';\n element.style.height = '0';\n element.style.width = '0';\n element.style.padding = '0';\n element.style.margin = '0';\n }\n });\n});\n\n\ndocument.addEventListener('DOMContentLoaded', function() {\n const landUseBarGraphContainers = document.querySelectorAll('.land-use-bar-graph');\n if (landUseBarGraphContainers.length > 0) {\n initLandUseGraphs();\n }\n \n const farmFieldGeodataMapContainers = document.querySelectorAll('.geodata-map');\n if (farmFieldGeodataMapContainers.length > 0) {\n initFarmerGeodataMaps(farmFieldGeodataMapContainers);\n }\n \n const donutChart = document.querySelector('#donut-chart');\n if (donutChart) {\n fetch('/business/dashboard_chart')\n .then(response => response.json())\n .then(data => {\n // Create a donut chart\n createDonutChart(data, '#donut-chart', 'Tasks status (overall)');\n createDonutChart(data.weekly, '#donut-chart-weekly', 'Tasks status (last 7 days)');\n createDonutChart(data.monthly, '#donut-chart-monthly', 'Tasks status (last 30 days)');\n })\n .catch(error => console.error('Error fetching data:', error));\n }\n\n handleToastClose();\n document.querySelectorAll('select').forEach(function(element) {\n if (!element.slim){\n slimSelect(element);\n element.style.display = 'block';\n element.style.opacity = '0';\n element.style.height = '0';\n element.style.width = '0';\n element.style.padding = '0';\n element.style.margin = '0';\n }\n });\n const flashMessage = document.querySelector('.flash-message');\n const sendSmsLink = document.querySelector('.send-sms-link');\n const smsSentText = document.querySelector('.sms-sent-text');\n if (flashMessage && flashMessage?.textContent == 'A pin has been sent to your phone. Please enter it here before it expires in 15 minutes.') {\n sendSmsLink.style.display = 'none';\n smsSentText.style.display = 'block';\n setTimeout(() => {\n smsSentText.style.display = 'none';\n sendSmsLink.style.display = 'block';\n }, 30000);\n }\n // Sidenav slider for mobile devices\n const leftPanelButton = document.querySelector('.left-panel-button');\n const leftPanelContent = document.querySelector('.left-panel');\n const mainLayout = document.querySelector('.main-layout');\n const iterations = 100;\n const intervalTime = 2;\n\n if (leftPanelButton && leftPanelContent) {\n leftPanelButton.addEventListener('click', function () {\n if (leftPanelButton.style.display == 'block') {\n if (leftPanelContent.style.left != '-100%') {\n let currentIteration = 0;\n let leftValue = '0%';\n\n let interval = setInterval(function () {\n let currentValue = parseInt(leftValue, 10);\n currentValue -= 1;\n\n leftValue = currentValue + '%';\n leftPanelContent.style.left = leftValue;\n\n currentIteration++;\n \n if (currentIteration >= iterations) {\n clearInterval(interval);\n leftPanelContent.style.display = 'none';\n leftPanelButton.style.display = '';\n }\n }, intervalTime);\n }\n }\n else {\n leftPanelButton.style.display = 'block';\n leftPanelContent.style.left = '-100%';\n leftPanelContent.style.display = 'block';\n \n let currentIteration = 0;\n let leftValue = '-100%';\n \n let interval = setInterval(function () {\n let currentValue = parseInt(leftValue, 10);\n currentValue += 1;\n \n leftValue = currentValue + '%';\n leftPanelContent.style.left = leftValue;\n \n currentIteration++;\n \n if (currentIteration >= iterations) {\n clearInterval(interval);\n }\n }, intervalTime);\n }\n });\n mainLayout.addEventListener('click', function () {\n if (leftPanelButton.style.display == 'block') {\n if (leftPanelContent.style.left != '-100%') {\n let currentIteration = 0;\n let leftValue = '0%';\n\n let interval = setInterval(function () {\n let currentValue = parseInt(leftValue, 10);\n currentValue -= 1;\n\n leftValue = currentValue + '%';\n leftPanelContent.style.left = leftValue;\n\n currentIteration++;\n \n if (currentIteration >= iterations) {\n clearInterval(interval);\n leftPanelContent.style.display = 'none';\n leftPanelButton.style.display = '';\n }\n }, intervalTime);\n }\n }\n })\n }\n // Container creation form\n const containerDownArrow = document.getElementById('container-down-arrow');\n const containerUpArrow = document.getElementById('container-up-arrow');\n\n if (containerDownArrow) {\n containerDownArrow.addEventListener('click', function() {\n containerDownArrow.style.display = 'none';\n containerUpArrow.style.display = 'flex';\n document.querySelectorAll('.dropdown-fields').forEach(function(field) {\n field.style.display = 'flex';\n });\n });\n \n containerUpArrow.addEventListener('click', function() {\n containerUpArrow.style.display = 'none';\n containerDownArrow.style.display = 'flex';\n document.querySelectorAll('.dropdown-fields').forEach(function(field) {\n field.style.display = 'none';\n });\n });\n }\n\n const priceField = document.getElementById('container_per_kg_price');\n const currencyField = document.getElementById('container_currency');\n\n const volumeField = document.getElementById('container_volume');\n const unitField = document.getElementById('container_unit');\n\n if (priceField) {\n priceField.addEventListener('input', function () {\n if (priceField.value) {\n currencyField.required = true;\n } else {\n currencyField.required = false;\n }\n });\n }\n\n if (volumeField) {\n volumeField.addEventListener('input', function () {\n if (volumeField.value) {\n unitField.required = true;\n } else {\n unitField.required = false;\n }\n });\n }\n\n // Get all elements with the class \"remove-fillable-field\" (only available on task_type edit page)\n const removeFieldButtons = document.querySelectorAll(\".remove-fillable-field\");\n\n // Add a click event listener to each \"remove-fillable-field\" button\n if (removeFieldButtons.length > 0) {\n removeFieldButtons.forEach(function(button) {\n button.addEventListener(\"click\", function(event) {\n event.preventDefault();\n\n // Find the parent \"nested-field\" element\n const nestedField = button.closest(\".nested-fields\");\n\n // Remove the parent \"nested-field\" from its parent form\n if (nestedField) {\n nestedField.remove();\n }\n });\n });\n };\n\n const overlay = document.querySelector('.modal-overlay');\n if (typeof (overlay) != 'undefined' && overlay != null) {\n overlay.addEventListener('click', toggleModal);\n }\n\n const closemodal = document.querySelectorAll('.modal-close');\n for (let i = 0; i < closemodal.length; i++) {\n closemodal[i].addEventListener('click', toggleModal);\n }\n\n document.onkeydown = function(evt) {\n evt = evt || window.event;\n let isEscape = false;\n if (\"key\" in evt) {\n isEscape = (evt.key === \"Escape\" || evt.key === \"Esc\");\n } else {\n isEscape = (evt.keyCode === 27);\n }\n if (isEscape && document.body.classList.contains('modal-active')) {\n toggleModal();\n }\n };\n\n const anchors = [].slice.call(document.getElementsByClassName('anchor_class'));\n //TEMP-SOLTUION: this should be managed via css\n // by default first tab selection\n const themeColor = '#829277';\n if (anchors.length > 0) {\n anchors[0].children[0].style['background-color'] = themeColor;\n anchors[0].style.color = themeColor;\n }\n\n anchors.map((anchor) => {\n anchor.addEventListener('click', function(e) {\n\n for (let anchor of document.getElementsByClassName('anchor_class')) {\n if (anchor == this) {\n this.children[0].style['background-color'] = themeColor;\n this.style.color = themeColor;\n }\n else {\n anchor.children[0].style['background-color'] = 'black';\n anchor.style.color = 'black';\n }\n }\n });\n });\n\n // on workflow setup form\n const workflowSelect = document.querySelector(\".workflow-select\");\n const workflowFields = document.querySelectorAll(\".workflow-fields .workflow\");\n\n for (let i = 0; i < workflowSelect?.options?.length; i++) {\n const selectedWorkflow = workflowSelect.options[i].value;\n console.log(selectedWorkflow);\n const workflowId = `workflow-${selectedWorkflow}`;\n workflowFields[i].setAttribute(\"id\", workflowId);\n\n if (i === 0) {\n workflowFields[i].style.display = \"block\";\n } else {\n workflowFields[i].style.display = \"none\";\n }\n }\n\n if (workflowSelect) {\n workflowSelect.addEventListener(\"change\", function() {\n const selectedWorkflow = this.value;\n \n workflowFields.forEach(function(workflow, index) {\n if (workflow.id === `workflow-${selectedWorkflow}`) {\n workflow.style.display = \"block\";\n } else {\n workflow.style.display = \"none\";\n }\n });\n });\n }\n\n // on activity form\n const actionName = document.getElementById('activity_feed_action');\n const subjectName = document.getElementById('activity_feed_subject_id');\n const productType = document.getElementById('activity_feed_product_type');\n const productName = document.getElementById('activity_feed_product_id');\n\n // on task form\n const referenceName = document.getElementById('task_reference_id');\n const authorName = document.getElementById('task_author_id');\n const assignedToName = document.getElementById('task_assigned_to_id');\n\n // on invite form\n const UserActorName = document.getElementById('user_actor_type_ids');\n const UserClientName = document.getElementById('user_client_id');\n\n // on container form\n const containerCountry = document.querySelector('#container_country');\n if (containerCountry) {\n containerCountry.addEventListener('change', function(e) {\n const countrySelected = e.target.options[e.target.selectedIndex].value;\n const quality_statement_ele = document.getElementById('container_quality_statement');\n\n const quality_statements = JSON.parse(containerCountry.dataset.qualities)[countrySelected];\n removeOptions(quality_statement_ele);\n\n if (quality_statements)\n populateSelectWithArr(quality_statement_ele, quality_statements, 'Select a quality statement');\n });\n }\n\n const activityFeedActorType = document.querySelector('#activity_feed_actor_type');\n if (activityFeedActorType) {\n setupActorSelect('activity_feed_actor_type', 'activity_feed_actor_id', 'Select an Actor', (e) => {\n const actorSelected = e.target.options[e.target.selectedIndex].value;\n fetch(`/activity_feeds/actions_list?klass_name=${ actorSelected }`)\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n })\n .then(data => {\n removeOptions(actionName);\n populateSelect(actionName, data.actions, 'Select an Action', false);\n })\n .catch(error => console.error('Error fetching data:', error));\n });\n\n document.querySelector(\"#activity_feed_subject_type\").addEventListener('change', function(e) {\n const subjectSelected = e.target.options[e.target.selectedIndex]?.value;\n\n fetch(`/activity_feeds/autocomplete?klass_name=${ subjectSelected }`)\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n })\n .then(data => {\n removeOptions(subjectName);\n let prompt = '';\n if (subjectSelected == 'Batch') {\n prompt = 'Select a Batch';\n }\n else if (subjectSelected == 'Container') {\n prompt = 'Select a Container';\n }\n else if (subjectSelected == 'Product') {\n prompt = 'Select a Product';\n }\n else {\n prompt = 'Select a Variant';\n }\n populateSelect(subjectName, data, prompt, false);\n })\n .catch(error => console.error('Error fetching data:', error));\n });\n\n document.querySelector(\"#activity_feed_product_id\").addEventListener('change', function(e) {\n const selectedOption = e.target.options[e.target.selectedIndex]?.value;\n if (selectedOption == 'create_new') {\n toggleModal('product-modal');\n }\n });\n }\n\n function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n // on workflow form\n if (document.querySelector('#workflow_name') != null) {\n\n refreshTriggerStates('Select trigger state');\n\n document.querySelector('#steps').addEventListener('cocoon:after-insert', function () {\n refreshTriggerStates('Select trigger state');\n });\n }\n\n // on Workflow setup form\n if (document.querySelector('.assigned-type') != null) {\n\n document.querySelectorAll(\".assigned-type\").forEach(function (assignedType) {\n assignedType.addEventListener('change', function(e) {\n const assignedToSelected = e.target.options[e.target.selectedIndex]?.value;\n const eleAssigned = e.target.parentElement.parentElement.nextElementSibling.children[0].children[1];\n \n fetch(`/activity_feeds/autocomplete?klass_name=${ assignedToSelected }`)\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n })\n .then(data => {\n const promptText = 'Select assign to';\n \n if (eleAssigned.options.length > 1)\n removeOptions(eleAssigned);\n // Default prompt\n const selectData = [{text: promptText}];\n\n data.forEach(option => {\n selectData.push({text: option.name, value: option.id});\n });\n eleAssigned.slim.setData(selectData);\n })\n .catch(error => console.error('Error fetching data:', error)); \n });\n });\n }\n\n // on task index/show\n if (document.querySelector('.task-index,.task-show') != null) {\n $('.task-index,.task-show').on('click', 'button.task-form', function(e) {\n const status_field = $(this).parents().find('#task_status');\n const new_status = capitalizeFirstLetter($(this).data('status'));\n status_field.val(new_status);\n });\n\n $('.task-index,.task-show').on('click', '.up', function(e) {\n $(this).addClass('hidden');\n $(this).next().removeClass('hidden');\n $(this).parent().prev().find('.custom-fields').addClass('hidden');\n });\n\n $('.task-index,.task-show').on('click', '.down', function(e) {\n $(this).addClass('hidden');\n $(this).prev().removeClass('hidden');\n $(this).parent().prev().find('.custom-fields').removeClass('hidden');\n });\n\n $('.more').on('click', function() {\n $(this).addClass('hidden');\n $(this).next().removeClass('hidden');\n $(this).prev().find('.more-statuses').removeClass('hidden');\n });\n\n $('.less').on('click', function() {\n $(this).addClass('hidden');\n $(this).prev().removeClass('hidden');\n $(this).prev().prev().find('.more-statuses').addClass('hidden');\n });\n }\n\n const taskEntryFields = document.querySelector('.task-entry');\n if (taskEntryFields != null) {\n elementOn(document.body, 'click', '.task-entry', function(e) {\n if (e.target.matches('button.task-form')) {\n const status_field = this.querySelector('#task_status');\n const new_status = capitalizeFirstLetter(e.target.dataset.status);\n status_field.value = new_status;\n }\n });\n // Step 1\n document.getElementById('step1').addEventListener('click', function(e) {\n const targetDiv = document.getElementById('step2-info');\n targetDiv.style.display = 'flex';\n targetDiv.scrollIntoView({ behavior: 'smooth' });\n document.getElementById('step2-btn').style.display = 'flex';\n });\n\n document.getElementById('step1-arrow').addEventListener('click', function(e) {\n if (e.target.classList.contains('fa-chevron-down')){\n e.target.classList.remove('fa-chevron-down');\n e.target.classList.add('fa-chevron-up');\n document.querySelectorAll('.step1-info').forEach(step1Info => {\n step1Info.style.display = 'flex';\n });\n }\n else if (e.target.classList.contains('fa-chevron-up')){\n e.target.classList.remove('fa-chevron-up');\n e.target.classList.add('fa-chevron-down');\n document.querySelectorAll('.step1-info').forEach(step1Info => {\n step1Info.style.display = 'none';\n });\n }\n });\n\n // Step 2\n document.getElementById('step2').addEventListener('click', function(e) {\n const targetDiv = document.getElementById('step3-info');\n targetDiv.style.display = 'flex';\n targetDiv.scrollIntoView({ behavior: 'smooth' });\n document.getElementById('step3-btns').style.display = 'block';\n });\n \n document.getElementById('step2-arrow').addEventListener('click', function(e) {\n if (e.target.classList.contains('fa-chevron-down')){\n e.target.classList.remove('fa-chevron-down');\n e.target.classList.add('fa-chevron-up');\n document.getElementById('step2-info').style.display = 'flex';\n }\n else if (e.target.classList.contains('fa-chevron-up')){\n e.target.classList.remove('fa-chevron-up');\n e.target.classList.add('fa-chevron-down');\n document.getElementById('step2-info').style.display = 'none';\n }\n });\n\n // Step 3\n document.getElementById('step3-arrow').addEventListener('click', function(e) {\n if (e.target.classList.contains('fa-chevron-down')){\n e.target.classList.remove('fa-chevron-down');\n e.target.classList.add('fa-chevron-up');\n document.getElementById('step3-info').style.display = 'flex';\n }\n else if (e.target.classList.contains('fa-chevron-up')){\n e.target.classList.remove('fa-chevron-up');\n e.target.classList.add('fa-chevron-down');\n document.getElementById('step3-info').style.display = 'none';\n }\n });\n }\n\n // on task form\n if (document.querySelector('#task_title') != null) {\n\n document.querySelector(\"#task_reference_type\").addEventListener('change', function(e) {\n const referenceSelected = e.target.options[e.target.selectedIndex]?.value;\n\n if (referenceSelected) {\n fetch(`/activity_feeds/autocomplete?klass_name=${ referenceSelected }`)\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n })\n .then(data => {\n removeOptions(referenceName);\n let prompt = '';\n if (referenceSelected == 'Batch') {\n prompt = 'Select a Batch';\n }\n else if (referenceSelected == 'Container') {\n prompt = 'Select a Container';\n }\n else if (referenceSelected == 'Product') {\n prompt = 'Select a Product';\n }\n else {\n prompt = 'Select a Variant';\n }\n populateSelect(referenceName, data, prompt, false);\n })\n .catch(error => console.error('Error fetching data:', error)); \n }\n });\n\n document.querySelector(\"#task_assigned_to_type\").addEventListener('change', function(e) {\n const assignedToSelected = e.target.options[e.target.selectedIndex]?.value;\n\n if (assignedToSelected) {\n fetch(`/activity_feeds/autocomplete?klass_name=${ assignedToSelected }`)\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n })\n .then(data => {\n removeOptions(assignedToName);\n const prompt = 'Select assign to';\n populateSelect(assignedToName, data, prompt, false);\n })\n .catch(error => console.error('Error fetching data:', error)); \n }\n });\n\n document.querySelector(\"#task_author_type\").addEventListener('change', function(e) {\n const authorSelected = e.target.options[e.target.selectedIndex]?.value;\n\n if (authorSelected) {\n fetch(`/activity_feeds/autocomplete?klass_name=${ authorSelected }`)\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n })\n .then(data => {\n removeOptions(authorName);\n const prompt = 'Select an author';\n populateSelect(authorName, data, prompt, false);\n })\n .catch(error => console.error('Error fetching data:', error)); \n }\n });\n }\n\n // on task type form\n if (document.querySelector('#task_type_reference_type') != null) {\n document.querySelector(\"#task_type_reference_type\").addEventListener('change', function(e) {\n if(e.target.value == 'Container') {\n document.getElementById('container_fillable_fields').style.display = 'block';\n document.getElementById('batch_fillable_fields').style.display = '';\n }\n else if(e.target.value == 'Batch') {\n document.getElementById('batch_fillable_fields').style.display = 'block';\n document.getElementById('container_fillable_fields').style.display = '';\n }\n else {\n document.getElementById('batch_fillable_fields').style.display = '';\n document.getElementById('container_fillable_fields').style.display = '';\n }\n });\n }\n // on user invite form\n if (document.querySelector('#user_actor_type_ids') != null) {\n const element = document.querySelector('#user_actor_type_ids');\n\n fetch(`/actors_autocomplete`)\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n })\n .then(data => {\n removeOptions(element);\n const prompt = 'Select an author';\n const selectData = [{text: prompt}];\n data.forEach(option => {\n selectData.push({text: `${ option.name } - ${ option.klass_name }`, value: `${ option.klass_name }:${ option.id }`});\n });\n element.slim.setData(selectData);\n })\n .catch(error => console.error('Error fetching data:', error)); \n }\n\n // on client invite form\n if (document.querySelector('#user_client_id') != null) {\n const element = document.querySelector('#user_client_id');\n \n fetch(`/actors_autocomplete?c=true`)\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n })\n .then(data => {\n removeOptions(element);\n const prompt = 'Select an author';\n const selectData = [{text: prompt}];\n data.forEach(option => {\n selectData.push({text: `${ option.name } - ${ option.klass_name }`, value: `${ option.klass_name }:${ option.id }`});\n });\n element.slim.setData(selectData);\n })\n .catch(error => console.error('Error fetching data:', error)); \n }\n\n $('.transaction').on('click', '.transaction-trail', function(e) {\n const datasetId = $(this).data('datasetId');\n\n //TODO: we may not need to send request again as we have already saved info\n // It is good if we need to get further info from response\n if (datasetId) {\n fetch(`/datasets/${ datasetId }`)\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n })\n .then(data => {\n document.querySelector('.b-id').textContent = data.dataset_id;\n document.querySelector('.b-hash').textContent = data.data_hash;\n document.querySelector('.b-time').textContent = data.import_time;\n document.querySelector('.b-height').textContent = data.otjson_size_in_bytes;\n document.querySelector('.b-r-hash').textContent = data.root_hash;\n // $('.b-status').text(response.status)\n toggleModal('transaction-modal');\n })\n .catch(error => console.error('Something went wrong! See browser logs\\n Error fetching data:', error)); \n }\n else {\n console.log('Dataset ID is missing for this record!');\n alert('Something went wrong! See browser console logs');\n }\n e.preventDefault();\n });\n\n $('a#farmer').on('click', function(e) {\n if (document.querySelector('.farmer-address') != null) {\n const latitude = document.querySelector('.farmer-address').dataset.latitude;\n const longitude = document.querySelector('.farmer-address').dataset.longitude;\n initMap('box', { lat: parseInt(latitude), lng: parseInt(longitude) },3);\n // if no activity is there, then this element would not be in the DOM\n if (document.getElementById('left_panel_map') != null) {\n initMap('left_panel_map', { lat: parseInt(latitude), lng: parseInt(longitude) },4);\n }\n }\n\n });\n $('a#shipping').on('click', function(e) {\n if (document.querySelector('.shipper-address') != null) {\n const latitude = document.querySelector('.shipper-address').dataset.latitude;\n const longitude = document.querySelector('.shipper-address').dataset.longitude;\n initMap('box', { lat: parseInt(latitude), lng: parseInt(longitude) },3);\n // if no activity is there, then this element would not be in the DOM\n if (document.getElementById('left_panel_map') != null) {\n initMap('left_panel_map', { lat: parseInt(latitude), lng: parseInt(longitude) },4);\n }\n }\n });\n\n $('a#Blending').on('click', function(e) {\n if (document.querySelector('.packer-address') != null) {\n const latitude = document.querySelector('.packer-address').dataset.latitude;\n const longitude = document.querySelector('.packer-address').dataset.longitude;\n initMap('box', { lat: parseInt(latitude), lng: parseInt(longitude) },3);\n // if no activity is there, then this element would not be in the DOM\n if (document.getElementById('left_panel_map') != null) {\n initMap('left_panel_map', { lat: parseInt(latitude), lng: parseInt(longitude) },4);\n }\n }\n });\n\n $('a#fdc').on('click', function(e) {\n if (document.querySelector('.organization-address') != null) {\n const latitude = document.querySelector('.organization-address').dataset.latitude;\n const longitude = document.querySelector('.organization-address').dataset.longitude;\n initMap('box', { lat: parseInt(latitude), lng: parseInt(longitude) },3);\n // if no activity is there, then this element would not be in the DOM\n if (document.getElementById('left_panel_map') != null) {\n initMap('left_panel_map', { lat: parseInt(latitude), lng: parseInt(longitude) },4);\n }\n }\n $('#fdc').removeClass('hidden');\n });\n\n $('a#Warehousing').on('click', function(e) {\n if (document.querySelector('.blender-address') != null) {\n const latitude = document.querySelector('.blender-address').dataset.latitude;\n const longitude = document.querySelector('.blender-address').dataset.longitude;\n initMap('box', { lat: parseInt(latitude), lng: parseInt(longitude) },3);\n // if no activity is there, then this element would not be in the DOM\n if (document.getElementById('left_panel_map') != null) {\n initMap('left_panel_map', { lat: parseInt(latitude), lng: parseInt(longitude) },4);\n }\n }\n });\n\n $('.timeline__event').on('click', '.pfeed-line', function(e) {\n $(this).addClass('hidden');\n $(this).next().removeClass('hidden');\n $(this).next().next().removeClass('hidden');\n });\n\n $('.timeline__event').on('click', '.mfeed-line', function(e) {\n $(this).addClass('hidden');\n $(this).prev().addClass('hidden');\n $(this).prev().prev().removeClass('hidden');\n });\n\n if (productType) {\n productType.addEventListener('change', function(e) {\n const productSelected = e.target.options[e.target.selectedIndex]?.value;\n \n fetch(`/activity_feeds/autocomplete?klass_name=${ productSelected }`)\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n })\n .then(data => {\n removeOptions(productName);\n let prompt = '';\n\n if (productSelected == 'Batch') {\n prompt = 'Select a Batch';\n }\n else if (productSelected == 'Product') {\n prompt = 'Select a Product';\n }\n else if (productSelected == 'Container') {\n prompt = 'Select a Container';\n }\n else {\n prompt = 'Select a Variant';\n }\n populateSelect(productName, data, prompt, true);\n })\n .catch(error => console.error('Error fetching data:', error)); \n });\n }\n\n if (document.querySelector('.profile-edit') != null) {\n document.querySelector('.profile-edit').addEventListener('click', displayForm);\n\n $('.edit_form').on('click', '.cancel-btn', function(e) {\n e.preventDefault();\n $('.edit_form').addClass('hidden');\n $('.profile-edit').removeClass('hidden');\n });\n }\n\n $(\"#blender-btn\").on(\"click\", function(event) {\n event.preventDefault();\n create('form#blender');\n });\n\n $(\"#farmer-btn\").on(\"click\", function(event) {\n event.preventDefault();\n create('form#farmer');\n });\n\n $(\"#packer-btn\").on(\"click\", function(event) {\n event.preventDefault();\n create('form#packer');\n });\n\n $(\"#roaster-btn\").on(\"click\", function(event) {\n event.preventDefault();\n create('form#roaster');\n });\n\n $(\"#shipper-btn\").on(\"click\", function(event) {\n event.preventDefault();\n create('form#shipper');\n });\n\n $(\"#warehouse-btn\").on(\"click\", function(event) {\n event.preventDefault();\n create('form#warehouse');\n });\n\n $('#product-btn').on('click', function(event) {\n event.preventDefault();\n create('form#product');\n });\n\n $('#organization-btn').on('click', function(event) {\n event.preventDefault();\n create('form#organization');\n });\n\n if (document.getElementById('box') != null) {\n const farmerDirectAddress = JSON.parse(document.querySelector('.coordinates').dataset.farmerDirectAddress);\n initMap('box', { lat: farmerDirectAddress.latitude, lng: farmerDirectAddress.longitude },3);\n // if no activity is there, then this element would not be in the DOM\n if (document.getElementById('left_panel_map') != null) {\n initMap('left_panel_map', { lat: farmerDirectAddress.latitude, lng: farmerDirectAddress.longitude },4);\n }\n }\n\n $('.input-images').on('change', (e) => {\n let fileNames = [];\n\n for (let i = 0; i < e.target.files.length; i++) {\n const file = e.target.files[i];\n fileNames.push(file.name);\n }\n $('.image-names').removeClass('hidden');\n $('.image-names').html(fileNames.join(', '));\n });\n});\n\nfunction initFarmerGeodataMaps(farmFieldGeodataMapContainers) {\n const geodataAccordionIcons = document.querySelectorAll('.geodata-arrows');\n geodataAccordionIcons.forEach((geodataAccordion) => {\n geodataAccordion.addEventListener('click', (e) => {\n if (e.target.classList.contains('fa-chevron-down')){\n e.target.classList.remove('fa-chevron-down');\n e.target.classList.add('fa-chevron-up');\n e.target.parentElement.nextElementSibling.style.display = 'block';\n }\n else if (e.target.classList.contains('fa-chevron-up')){\n e.target.classList.remove('fa-chevron-up');\n e.target.classList.add('fa-chevron-down');\n e.target.parentElement.nextElementSibling.style.display = 'none';\n }\n });\n })\n const geodataValueContainers = document.querySelectorAll('.farm-field-geodata');\n const geodataValues = [];\n let index = 0;\n geodataValueContainers.forEach(geodataValueContainer => {\n geodataValues.push(JSON.parse(geodataValueContainer.textContent));\n })\n farmFieldGeodataMapContainers.forEach(farmFieldGeodataMapContainer => {\n const farmField = JSON.parse(geodataValues[index]);\n index += 1;\n\n if (Array.isArray(farmField.coordinates[0])){\n farmFieldGeodataMapContainer.style.width = '460px';\n farmFieldGeodataMapContainer.style.height = '340px';\n const map = new google.maps.Map(farmFieldGeodataMapContainer, {\n zoom: 3,\n mapTypeId: \"roadmap\",\n minZoom: 2\n });\n // Construct the polygon\n let polygonCoordinates = [];\n farmField.coordinates[0].forEach(function(coordinate) {\n polygonCoordinates.push({lat: coordinate[1], lng: coordinate[0]});\n });\n const polygon = new google.maps.Polygon({\n paths: polygonCoordinates,\n strokeColor: '#B2C294',\n strokeOpacity: 0.8,\n strokeWeight: 2,\n fillColor: '#B2C294',\n fillOpacity: 0.35\n });\n \n // Add polygon to map\n polygon.setMap(map);\n \n // Fit the map to the polygon bounds\n const bounds = new google.maps.LatLngBounds();\n polygonCoordinates.forEach(function(coordinate) {\n bounds.extend(coordinate);\n });\n map.fitBounds(bounds);\n }\n })\n}\n\nfunction initLandUseGraphs() {\n const landUseAccordionIcons = document.querySelectorAll('.land-use-arrows');\n landUseAccordionIcons.forEach((landUseAccordion) => {\n landUseAccordion.addEventListener('click', (e) => {\n if (e.target.classList.contains('fa-chevron-down')){\n e.target.classList.remove('fa-chevron-down');\n e.target.classList.add('fa-chevron-up');\n e.target.parentElement.nextElementSibling.style.display = 'block';\n }\n else if (e.target.classList.contains('fa-chevron-up')){\n e.target.classList.remove('fa-chevron-up');\n e.target.classList.add('fa-chevron-down');\n e.target.parentElement.nextElementSibling.style.display = 'none';\n }\n });\n })\n const landUseDataContainers = document.querySelectorAll('.land-use-data');\n const landUseDatasets = [];\n landUseDataContainers.forEach(landUseDataContainer => {\n if (landUseDataContainer.textContent != '') {\n landUseDatasets.push(JSON.parse(landUseDataContainer.textContent));\n } else {\n landUseDatasets.push([]);\n }\n })\n\n const width = 400;\n const height = 200;\n const margin = { top: 20, right: 20, bottom: 30, left: 40 };\n\n // Create SVG container\n const svgs = d3.selectAll(\".land-use-bar-graph\");\n let index = 0;\n svgs.each(function() {\n const landUseData = landUseDatasets[index];\n index += 1;\n\n if (landUseData.length > 0) {\n landUseData.forEach(data => {\n data.key = normalizeLandUseLabels(data.key);\n })\n const svg = d3.select(this)\n .append(\"svg\")\n .attr(\"width\", width + margin.left + margin.right)\n .attr(\"height\", height + margin.top + margin.bottom + 90)\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n \n // Create scales\n const xScale = d3.scaleBand()\n .domain(landUseData.map(d => d.key))\n .range([0, width])\n .padding(0.1);\n \n const yScale = d3.scaleLinear()\n .domain([0, 100])\n .range([height, 0]);\n \n // Create bars\n svg.selectAll(\"rect\")\n .data(landUseData)\n .enter().append(\"rect\")\n .attr(\"x\", d => xScale(d.key))\n .attr(\"y\", d => yScale(d.value))\n .attr(\"width\", xScale.bandwidth())\n .attr(\"height\", d => height - yScale(d.value))\n .attr(\"fill\", \"#829277\");\n \n // Create x-axis\n svg.append(\"g\")\n .attr(\"transform\", `translate(0,${height})`)\n .call(d3.axisBottom(xScale))\n .selectAll('.tick text')\n .style('text-anchor', 'end') // Align the tick labels to the end of the tick\n .attr('dy', '0.5em') // Adjust the vertical position of the tick labels\n .attr('transform', 'rotate(-45)'); \n \n // Create y-axis\n svg.append(\"g\")\n .call(d3.axisLeft(yScale));\n }\n });\n}\n\nfunction normalizeLandUseLabels(str) {\n return str\n .toLowerCase()\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\nfunction createDonutChart(data, container, titleText) {\n // Set up the dimensions and radius for the donut chart\n const width = 400;\n const height = 530;\n const radius = Math.min(width, height) / 2;\n\n const color = d3.scaleOrdinal(['#D1DABC', '#B2C294', '#96AB70', '#788F53', '#5D713F', '#455331', '#3D472D', '#343E29', '#1A2013']);\n\n const svg = d3.select(container)\n .append('svg')\n .attr('viewBox', `0 0 ${width} ${height}`)\n .attr('preserveAspectRatio', 'none')\n .style('width', '100%')\n .style('height', '100%')\n .append('g')\n .attr('transform', `translate(${width / 2},${height / 2})`);\n\n\n // Add title to SVG\n svg.append('text')\n .attr(\"transform\", `translate(0,${-200})`)\n .attr(\"text-anchor\", \"middle\") \n .style(\"font-size\", \"26px\") \n .style(\"font-weight\", \"bold\")\n .text(titleText);\n\n // Create arc function for the donut chart\n const arc = d3.arc()\n .innerRadius(radius - 80)\n .outerRadius(radius - 40);\n\n // Create pie function\n const pie = d3.pie()\n .value(d => d.value)\n .sort(null);\n\n // Prepare data\n const donutData = [\n { label: 'Incoming Tasks', value: data.incoming_tasks },\n { label: 'Completed Tasks', value: data.completed_tasks },\n ];\n\n // Create the donut chart\n svg.selectAll('path')\n .data(pie(donutData))\n .enter()\n .append('path')\n .attr('d', arc)\n .attr('fill', d => color(d.data.label))\n .attr('stroke', 'white')\n .style('stroke-width', '2px')\n .each(function (d) {\n // Add text inside each donut section\n const centroid = arc.centroid(d);\n svg.append('text')\n .attr('x', centroid[0])\n .attr('y', centroid[1])\n .attr('dy', '.35em')\n .style('text-anchor', 'middle')\n .text(d.data.value != 0 ? d.data.value : '');\n });\n\n // Add a legend\n const legend = svg.selectAll('.legend')\n .data(color.domain())\n .enter()\n .append('g')\n .attr('class', 'legend')\n .attr('transform', (d, i) => `translate(0,${i * 35})`);\n\n legend.append('rect')\n .attr('x', width / 2 - 18)\n .attr('y', 160)\n .attr('width', 18)\n .attr('height', 18)\n .style('fill', color);\n\n legend.append('text')\n .attr('x', width / 2 - 24)\n .attr('y', 170)\n .attr('dy', '.35em')\n .style('text-anchor', 'end')\n .text(d => d);\n}\n\nfunction uploadFile(file, klassName, klassId, customFields) {\n customFields.querySelector('#progress-bar-div').style.display = 'block';\n customFields.querySelector('#file-upload-in-progress').style.display = 'block';\n customFields.querySelector('#file-upload-btns').style.display = 'none';\n const chunkSize = 10485760; // ~10MB in bytes\n let start = 0;\n let i = 0;\n\n const fileName = file.name.replace(/\\s/g, '_');\n const fileKey = `${klassName}/${klassId}/${Date.now()}_${fileName}`.replace(/\\.[^.]+$/, '');\n var blob_path = '';\n function processChunk(multipartUpload) {\n let end = start + chunkSize;\n if (end > file.size) {\n end = file.size;\n }\n\n const chunk = file.slice(start, end);\n const index = (i === 0) ? 'first' : (end >= file.size) ? 'last' : 'mid';\n const partNumber = i + 1;\n const singleFile = (i === 0 && end == file.size) ? true : false;\n\n return uploadChunk(chunk, start, klassName, klassId, fileKey, index, partNumber, multipartUpload, fileName, singleFile)\n .then((returnedMultipartUpload) => {\n if (returnedMultipartUpload && !returnedMultipartUpload.error) {\n blob_path = returnedMultipartUpload;\n start = end;\n i++;\n \n // Calculate the progress and update the progress bar and text\n const progress = (end / file.size) * 100;\n customFields.querySelector('#progress-bar').style.width = `${progress}%`;\n customFields.querySelector('#progress-text').textContent = `${Math.round(progress)}%`;\n \n if (start < file.size) {\n return processChunk(returnedMultipartUpload); // Recursively process the next chunk\n }\n }\n else {\n const fileUploadFailed = customFields.querySelector('#file-upload-failed')\n customFields.querySelector('#file-upload-in-progress').style.display = '';\n fileUploadFailed.innerHTML = `File Upload Failed.\\nError: ${returnedMultipartUpload.error}`\n fileUploadFailed.style.display = 'block';\n console.error('Error:', returnedMultipartUpload.error);\n throw new Error(returnedMultipartUpload.error);\n }\n });\n }\n\n processChunk(null).then(() => {\n customFields.querySelector('#file-upload-in-progress').style.display = '';\n customFields.querySelector('#file-upload-complete').style.display = 'block';\n const fileContainer = customFields.querySelector('.file-names');\n\n const fileLink = document.createElement('a');\n fileLink.href = blob_path;\n fileLink.textContent = fileName;\n fileLink.className = 'text-primary font-bold p-2';\n fileLink.target = '_blank';\n const br = document.createElement('br');\n\n fileContainer.textContent = '';\n fileContainer.appendChild(fileLink);\n fileContainer.appendChild(br);\n // console.log('All chunks processed and sent for upload!');\n });\n}\n\nfunction uploadChunk(chunk, startIndex, klassName, klassId, fileKey, index='mid', partNumber, multipartUpload='', fileName, singleFile) {\n const formData = new FormData();\n formData.append('file', chunk);\n formData.append('start', startIndex);\n formData.append('file_key', fileKey);\n formData.append('index', index);\n formData.append('part_number', partNumber);\n formData.append('file_name', fileName);\n formData.append('single_file', singleFile);\n formData.append('klass_name', klassName);\n formData.append('klass_id', klassId);\n if (multipartUpload) {\n formData.append('multipart_upload', JSON.stringify(multipartUpload));\n }\n\n return fetch(`/blobs/upload_chunk?timestamp=${Date.now()}`, {\n method: 'POST',\n body: formData\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(`${response.status}: ${response.statusText}`);\n }\n return response.json();\n })\n .then(data => {\n if (data.multipart_upload) {\n const multipartUpload = data.multipart_upload;\n return multipartUpload;\n }\n return null;\n })\n .catch(error => {\n return { error: error.message }; // Return an error object\n });\n}\n\nconst fileInputs = document.querySelectorAll('#file-input');\n\n// Event listener for file upload\nfileInputs.forEach(fileInput => {\n if (fileInput) {\n fileInput.addEventListener('change', function(event) {\n const customFields = event.target.closest('.custom-fields') || document;\n const removeButton = customFields.querySelector(\"#file-remove-btn\");\n const uploadButton = customFields.querySelector(\"#file-upload-btn\");\n const fileButtons = customFields.querySelector('#file-upload-btns');\n const fileNameField = customFields.querySelector('.file-names');\n if (fileButtons) {\n fileButtons.style.display = 'flex';\n }\n\n // Event listener for file selection\n if (fileNameField) {\n let fileNames = [];\n for (let i = 0; i < event.target.files.length; i++) {\n const file = event.target.files[i];\n fileNames.push(file.name);\n }\n fileNameField.style.display = 'block';\n fileNameField.innerHTML = fileNames.join(', ');\n }\n\n // Event listener for file input selection\n if (uploadButton) { \n uploadButton.addEventListener('click', (event) => {\n const file = fileInput.files[0];\n // if (file.type !== \"application/pdf\") {\n // alert(\"Please select a PDF file.\");\n // return;\n // }\n\n let klassId;\n let klassName;\n if ($('#task_id').length) {\n klassId = $('#task_id').val();\n klassName = \"tasks\";\n } else if ($('#farmer_id').length) {\n klassId = $('#farmer_id').val();\n klassName = \"geodata\";\n }\n uploadFile(file, klassName, klassId, customFields);\n });\n\n // Secondary validation for file upload\n uploadButton.addEventListener('click', (event) => {\n if (fileInput.files.length > 0) {\n // Do nothing\n } else {\n alert(\"Please select a file before clicking upload.\");\n }\n });\n }\n\n // Event listener for file input removal\n if (removeButton) {\n removeButton.addEventListener('click', (event) => {\n const fileButtons = customFields.querySelector('#file-upload-btns');\n const progressBarDiv = customFields.querySelector('#progress-bar-div');\n fileInput.value = '';\n\n fileButtons.style.display = '';\n progressBarDiv.style.display = '';\n fileNameField.textContent = '';\n });\n }\n });\n }\n});\n\nconst displayForm = () => {\n document.querySelector('.profile-edit').classList.add('hidden');\n document.querySelector('.edit_form').classList.remove('hidden');\n};\n\nconst create = (formId) => {\n const form = document.querySelector(formId);\n fetch(form.action, {\n method: \"POST\",\n body: new URLSearchParams(new FormData(form)),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n })\n .then(response => response.json())\n .then(object => {\n if (form.id === 'product') {\n const activtyFeedProductId = document.getElementById('activity_feed_product_id');\n appendData(activtyFeedProductId, object.resource.name, object.resource.id);\n } else {\n const activityFeedActorId = document.getElementById('activity_feed_actor_id');\n appendData(activityFeedActorId, object.resource.name, object.resource.id);\n }\n toggleModal();\n });\n};\n\nvar currentInfoWindow = null; //using to close info window\n\nconst initMap = (elementId, center, zoom) => {\n let coordinates = [];\n let actorDetails = [];\n if (document.querySelector('.coordinates').dataset.coordinates != null) {\n coordinates = JSON.parse(document.querySelector('.coordinates').dataset.coordinates);\n actorDetails = JSON.parse(document.querySelector('.coordinates').dataset.actorDetails);\n }\n\n const map = new google.maps.Map(document.getElementById(elementId), {\n zoom: zoom,\n center: center,\n mapTypeId: \"satellite\",\n minZoom: 2\n });\n\n // Define a symbol using SVG path notation, with an opacity of 1.\n const lineSymbol = {\n path: \"M 0,-1 0,1\",\n strokeOpacity: 1,\n scale: 4,\n };\n\n const coffeePathCoordinates = coordinates;\n const coffeePath = new google.maps.Polyline({\n path: coffeePathCoordinates,\n geodesic: true,\n strokeColor: \"#688065\",\n strokeOpacity: 0,\n icons: [\n {\n icon: lineSymbol,\n offset: \"0\",\n repeat: \"20px\",\n }\n ]\n });\n coffeePath.setMap(map);\n\n coordinates.forEach((coordinate, index) => {\n drawMarker(map, coordinate, actorDetails[index].name, actorDetails[index].description, actorDetails[index].image_url, actorDetails[index].actor_class);\n });\n\n};\n\nconst drawMarker = (map, coordinate, title, content, imageUrl, actorClass) => {\n\n const cont = `

${ title }(${ actorClass })


` + content;\n\n const aboutMarker = {\n client: { let: 'C', col: 'E32083' },\n blender: { let: 'B', col: 'F3C583' },\n farmer: { let: 'F', col: '939B62' },\n organization: { let: 'O', col: 'A5E1AD' },\n packer: { let: 'P', col: '233E8B' },\n roaster: { let: 'R', col: \"1EAE98\" },\n shipper: { let: 'S', col: 'F9B208' },\n warehouse: { let: 'W', col: 'FF5200' }\n };\n\n const marker = new google.maps.Marker({\n position: coordinate,\n map,\n title: `${ title }(${ actorClass })`,\n icon: `https://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=${ aboutMarker[actorClass].let }|${ aboutMarker[actorClass].col }`\n\n // icon: icon\n });\n marker.addListener(\"click\", () => {\n\n const infowindow = new google.maps.InfoWindow({\n content: cont,\n });\n\n infowindow.open({\n anchor: marker,\n map,\n shouldFocus: false,\n });\n\n //closing current info window\n if (currentInfoWindow != null) {\n currentInfoWindow.close();\n }\n currentInfoWindow = infowindow;\n });\n};\n//DOM STRINGS OBJECT\nconst DOM = {\n timelineDate: document.querySelectorAll('.timeline__date'),\n timelineElem: document.querySelectorAll('.timeline__elem'),\n timelineBar: document.querySelector('.timeline__bar')\n};\n\n//TIMELINE ELEM SET DIRECTION TO EVENT ITEMS (left or right oriented)\n\n//getting direction from .timeline-elem\nconst __getDir = timelineElem => {\n\n if (timelineElem.classList.contains('timeline__elem--left')) {\n return 'left';\n } else if (timelineElem.classList.contains('timeline__elem--right')) {\n return 'right';\n }\n\n};\n\nconst setDirEvent = () => {\n\n DOM.timelineElem.forEach(elem => {\n\n const direction = __getDir(elem);\n\n const timelineEvent = elem.querySelector('.timeline__event');\n\n timelineEvent.classList.add(`timeline__event--${ direction }`);\n\n });\n\n};\n\n//TIMELINE ELEM DATE STYLES (background)\nconst __getBGImage = () => {\n\n // const compStyle = getComputedStyle(DOM.timelineBar);\n\n //return compStyle.backgroundImage;\n\n};\n\n// const __getBGSize_height = () => {\n\n// const timebarHeight = DOM.timelineBar.offsetHeight;\n\n// return timebarHeight;\n\n// }\n\nconst __getBGPos_y = (dateElem) => {\n\n const timelinebarBox = DOM.timelineBar.getBoundingClientRect();\n\n const dateBox = dateElem.getBoundingClientRect();\n\n const pos_y = dateBox.top - timelinebarBox.top;\n\n return pos_y;\n\n};\n\nconst setDateBG = () => {\n\n const bgImg = __getBGImage();\n\n //const bgHeight = __getBGSize_height();\n\n DOM.timelineDate.forEach(elem => {\n\n //setting bgImage\n elem.style.backgroundImage = bgImg;\n\n //setting bgSize\n elem.style.backgroundSize = `100%`;\n\n //setting bgPosition\n const dateOffset = __getBGPos_y(elem);\n\n elem.style.backgroundPosition = `0 -${ dateOffset }px`;\n\n });\n\n};\n\n//ONLOAD FUNCTION\nwindow.addEventListener('load', () => {\n\n //setting direction class to the timeline event block\n setDirEvent();\n\n //set date background styles\n setDateBG();\n\n});\n\n\n\n\nimport \"controllers\";\n","import { toggleModal, populateSelect, removeOptions } from './utility_functions';\n\nexport function setupActorSelect(actorTypeId, actorNameId, selectPrompt, onActorTypeSelect) {\n const actorType = document.getElementById(actorTypeId);\n const actorName = document.getElementById(actorNameId);\n\n document.querySelector(`#${ actorNameId }`).addEventListener('change', function(e) {\n const selectedOption = e.target.options[e.target.selectedIndex]?.value;\n if (selectedOption == 'create_new') {\n if (actorType.options[actorType.selectedIndex].text == 'Blender') {\n toggleModal('blender-modal');\n }\n else if (actorType.options[actorType.selectedIndex].text == 'Farmer') {\n toggleModal('farmer-modal');\n }\n else if (actorType.options[actorType.selectedIndex].text == 'Packer') {\n toggleModal('packer-modal');\n }\n else if (actorType.options[actorType.selectedIndex].text == 'Roaster') {\n toggleModal('roaster-modal');\n }\n else if (actorType.options[actorType.selectedIndex].text == 'Shipper') {\n toggleModal('shipper-modal');\n }\n else if (actorType.options[actorType.selectedIndex].text == 'Warehouse') {\n toggleModal('warehouse-modal');\n }\n else if (actorType.options[actorType.selectedIndex].text == 'Organization') {\n toggleModal('organization-modal');\n }\n }\n });\n\n document.querySelector(`#${ actorTypeId }`).addEventListener('change', function(e) {\n const actorSelected = e.target.options[e.target.selectedIndex]?.value;\n\n fetch(`/activity_feeds/autocomplete?klass_name=${ actorSelected }`)\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n })\n .then(data => {\n removeOptions(actorName);\n populateSelect(actorName, data, selectPrompt, true);\n })\n .catch(error => console.error('Error fetching data:', error)); \n \n if (onActorTypeSelect) {\n onActorTypeSelect(e);\n }\n });\n}\n"," export const getScript = url => new Promise((resolve, reject) => {\r\n const script = document.createElement('script');\r\n script.src = url;\r\n script.async = true;\r\n\r\n script.onerror = reject;\r\n\r\n script.onload = script.onreadystatechange = function() {\r\n const loadState = this.readyState;\r\n\r\n if (loadState && loadState !== 'loaded' && loadState !== 'complete') return;\r\n\r\n script.onload = script.onreadystatechange = null;\r\n\r\n resolve();\r\n };\r\n\r\n document.head.appendChild(script);\r\n});\r\n\r\nexport function height(el) {\r\n parseFloat(getComputedStyle(el, null).height.replace(\"px\", \"\"));\r\n}\r\n\r\nexport function showElements(elements) {\r\n elements.forEach(el => el.style.display = '');\r\n}\r\n\r\nexport function hideElements(elements) {\r\n elements.forEach(el => el.style.display = 'none');\r\n}\r\n\r\nexport function toggle(element) {\r\n if (element.style.display == 'none') {\r\n element.style.display = '';\r\n } else {\r\n element.style.display = 'none';\r\n }\r\n}\r\n\r\nexport function offset(el) {\r\n var rect = el.getBoundingClientRect();\r\n\r\n return {\r\n top: rect.top + document.body.scrollTop,\r\n left: rect.left + document.body.scrollLeft\r\n };\r\n}\r\n\r\nexport function multiSelectValues(element) {\r\n let selected = [];\r\n Array.from(element.options).forEach(option => {\r\n if (option.selected) {\r\n selected.push(option.value);\r\n }\r\n });\r\n return selected;\r\n}\r\n\r\nexport function addClass(elementSelector, klass) {\r\n document.querySelectorAll(elementSelector).forEach(el => el.classList.add(klass));\r\n}\r\n\r\nexport function removeClass(elementSelector, klass) {\r\n document.querySelectorAll(elementSelector).forEach(el => el.classList.remove(klass));\r\n}\r\n\r\nexport const documentOn = (eventName, elementSelector, handler) => {\r\n // $(document).on(eventName, elementSelector, handler);\r\n // console.log(\"Adding for eventName\", eventName, elementSelector);\r\n document.addEventListener(eventName, function(e) {\r\n // loop parent nodes from the target to the delegation node\r\n // console.log(\"Searching for eventName\", eventName, elementSelector);\r\n for (var target = e.target; target && target != this; target = target.parentNode) {\r\n if (target.matches(elementSelector)) {\r\n handler.call(target, e);\r\n break;\r\n }\r\n }\r\n }, false);\r\n};\r\n\r\nexport const elementOn = (element, eventName, elementSelector, handler) => {\r\n // $(document).on(eventName, elementSelector, handler);\r\n // console.log(\"Adding for eventName\", eventName, elementSelector);\r\n element.addEventListener(eventName, function(e) {\r\n // loop parent nodes from the target to the delegation node\r\n // console.log(\"Searching for eventName\", eventName, elementSelector);\r\n for (var target = e.target; target && target != this; target = target.parentNode) {\r\n if (target.matches(elementSelector)) {\r\n handler.call(target, e);\r\n break;\r\n }\r\n }\r\n }, false);\r\n};"],"names":["webpackEmptyContext","req","e","Error","code","keys","resolve","id","module","exports","map","webpackContext","webpackContextResolve","__webpack_require__","o","Object","channels","require","forEach","_default","_Controller","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","key","value","this","outputTarget","textContent","Controller","get","context","bindingObserver","bindings","filter","binding","action","methodName","element","_this","togglers","toggler","isOpened","scope","findAllElements","init","_this2","content","findContent","show","hide","_this3","contains","target","close","open","preventDefault","dispatch","detail","length","undefined","style","height","removeEventListener","transitionEnd","addEventListener","setTimeout","scrollHeight","toggleClass","toggleText","opened","classList","add","dataset","state","remove","text","getAttribute","innerHTML","matches","getID","findElement","concat","replace","button","querySelector","checkmark","hasHiddenClass","hiddenClass","itemTargets","item","toggle","_defineProperty","UIDialog","openBy","closeBy","isVisible","keyCode","dialogTarget","hasFocusTarget","focusTarget","focus","document","body","visible","hasBackdropTarget","backdropTarget","hasModalTarget","modalTarget","_UIPopover","UIPopover","preventDragDefaults","stopPropagation","fileInputTarget","click","event","_toConsumableArray","dataTransfer","files","file","uploadFile","console","log","UIFilter","lowerCaseFilterTerm","sourceTarget","toLowerCase","regex","RegExp","hasItemTarget","el","i","filterableKey","innerText","test","UIHoverCardController","useDebounce","useHover","triggerTarget","popperInstance","createPopper","contentTarget","placement","side","modifiers","name","options","offset","update","useClickOutside","hasDismissAfterValue","dismissAfterValue","dismissAfter","Number","_UIDialog","sheetTarget","UiSheetOutlet","UISliderController","input","min","max","val","fillRatio","parseInt","setAttribute","UIToggleController","span","input1","input2","activeTabClasses","data","split","inactiveTabClasses","anchor","index","tabTargets","findIndex","tab","currentTarget","indexOf","window","dispatchEvent","CustomEvent","_tab$classList","_tab$classList2","_tab$classList3","_tab$classList4","panel","panelTargets","set","showTab","URL","UIToastController","role","auto","toastElement","showToast","closeToast","duration","idTarget","toastContainer","querySelectorAll","UITooltipController","_UIHoverCardControlle","useTransition","slimSelect","SlimSelect","select","openModalId","activeModalId","ele","toggleModal","modalId","modal","getElementById","appendData","selectData","slim","getData","push","setData","populateSelectWithArr","promptText","option","populateSelect","createOpt","removeOptions","refreshTriggerStates","taskTypeDivs","taskTypeDiv","_e$target$options$e$t","_e$target$options$e$t2","taskTypeSelected","selectedIndex","taskTypeText","eleTrigger","parentElement","nextElementSibling","children","includes","fetch","then","response","ok","status","json","statuses","status_list","error","handleToastClose","toastContainers","toastCloseButton","counterThreshold","counter","fadeOutInterval","setInterval","clearInterval","fadeOutToast","opacity","fadeOutInterval2","display","application","Application","start","createDonutChart","container","titleText","width","radius","Math","color","d3","svg","append","attr","arc","innerRadius","outerRadius","pie","d","sort","donutData","label","incoming_tasks","completed_tasks","selectAll","enter","each","centroid","legend","domain","klassName","klassId","customFields","fileName","fileKey","Date","now","blob_path","processChunk","multipartUpload","end","size","chunk","slice","partNumber","singleFile","startIndex","formData","FormData","JSON","stringify","method","statusText","multipart_upload","message","uploadChunk","returnedMultipartUpload","fileUploadFailed","progress","round","fileContainer","fileLink","createElement","href","className","br","appendChild","load","definitionsFromContext","global","$","jQuery","register","Carousel","LocalTime","Turbo","session","drive","padding","margin","landUseAccordion","landUseDataContainers","landUseDatasets","landUseDataContainer","parse","top","right","bottom","left","svgs","landUseData","word","charAt","toUpperCase","join","xScale","range","yScale","bandwidth","call","initLandUseGraphs","farmFieldGeodataMapContainers","geodataAccordion","geodataValueContainers","geodataValues","geodataValueContainer","farmFieldGeodataMapContainer","farmField","Array","isArray","coordinates","google","maps","Map","zoom","mapTypeId","minZoom","polygonCoordinates","coordinate","lat","lng","Polygon","paths","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","setMap","bounds","LatLngBounds","extend","fitBounds","initFarmerGeodataMaps","weekly","monthly","flashMessage","sendSmsLink","smsSentText","leftPanelButton","leftPanelContent","mainLayout","currentIteration","leftValue","interval","currentValue","containerDownArrow","containerUpArrow","field","priceField","currencyField","volumeField","unitField","required","removeFieldButtons","nestedField","closest","overlay","closemodal","onkeydown","evt","anchors","getElementsByClassName","themeColor","_step","_iterator","_createForOfIteratorHelper","s","n","done","err","f","workflowSelect","workflowFields","_workflowSelect$optio","selectedWorkflow","workflowId","workflow","actorTypeId","actorNameId","selectPrompt","onActorTypeSelect","actorType","actorName","actionName","subjectName","productType","productName","referenceName","authorName","assignedToName","containerCountry","capitalizeFirstLetter","string","countrySelected","quality_statement_ele","quality_statements","qualities","actorSelected","actions","subjectSelected","assignedType","_e$target$options$e$t3","assignedToSelected","eleAssigned","on","status_field","parents","find","new_status","addClass","next","removeClass","parent","prev","eventName","elementSelector","handler","parentNode","elementOn","targetDiv","scrollIntoView","behavior","step1Info","_e$target$options$e$t4","referenceSelected","_e$target$options$e$t5","_e$target$options$e$t6","authorSelected","klass_name","datasetId","dataset_id","data_hash","import_time","otjson_size_in_bytes","root_hash","alert","latitude","longitude","initMap","_e$target$options$e$t7","productSelected","displayForm","create","farmerDirectAddress","fileNames","html","fileInput","removeButton","uploadButton","fileButtons","fileNameField","progressBarDiv","formId","form","URLSearchParams","headers","object","activtyFeedProductId","resource","activityFeedActorId","currentInfoWindow","elementId","center","actorDetails","coffeePathCoordinates","Polyline","path","geodesic","icons","icon","scale","repeat","drawMarker","description","image_url","actor_class","title","imageUrl","actorClass","cont","aboutMarker","client","let","col","blender","farmer","organization","packer","roaster","shipper","warehouse","marker","Marker","position","addListener","infowindow","InfoWindow","shouldFocus","DOM","timelineDate","timelineElem","timelineBar","setDateBG","elem","backgroundImage","__getBGImage","backgroundSize","dateElem","timelinebarBox","dateOffset","getBoundingClientRect","backgroundPosition","direction"],"sourceRoot":""}