@iamproperty/components 7.8.2--beta8 → 7.8.2--beta9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/assets/css/components/actionbar.component.css +1 -1
  2. package/assets/css/components/actionbar.component.css.map +1 -1
  3. package/assets/css/components/address-lookup.component.css +1 -1
  4. package/assets/css/components/address-lookup.component.css.map +1 -1
  5. package/assets/css/components/banner.component.css +1 -1
  6. package/assets/css/components/banner.component.css.map +1 -1
  7. package/assets/css/components/barchart.component.css +1 -1
  8. package/assets/css/components/barchart.component.css.map +1 -1
  9. package/assets/css/components/branch-selector.css +1 -1
  10. package/assets/css/components/branch-selector.css.map +1 -1
  11. package/assets/css/components/calendar.component.css +1 -1
  12. package/assets/css/components/calendar.component.css.map +1 -1
  13. package/assets/css/components/card.component.css +1 -1
  14. package/assets/css/components/card.component.css.map +1 -1
  15. package/assets/css/components/carousel.component.css +1 -1
  16. package/assets/css/components/carousel.component.css.map +1 -1
  17. package/assets/css/components/charts.module.css +1 -1
  18. package/assets/css/components/charts.module.css.map +1 -1
  19. package/assets/css/components/collapsible-side.css +1 -1
  20. package/assets/css/components/collapsible-side.css.map +1 -1
  21. package/assets/css/components/config.component.css +1 -1
  22. package/assets/css/components/config.component.css.map +1 -1
  23. package/assets/css/components/doughnutchart.component.css +1 -1
  24. package/assets/css/components/doughnutchart.component.css.map +1 -1
  25. package/assets/css/components/fileupload.css +1 -1
  26. package/assets/css/components/fileupload.css.map +1 -1
  27. package/assets/css/components/modal.component.css +1 -1
  28. package/assets/css/components/modal.component.css.map +1 -1
  29. package/assets/css/components/multi-step-modal.component.css +1 -1
  30. package/assets/css/components/multi-step-modal.component.css.map +1 -1
  31. package/assets/css/components/multiselect.css +1 -1
  32. package/assets/css/components/multiselect.css.map +1 -1
  33. package/assets/css/components/nav-standalone.component.css +1 -1
  34. package/assets/css/components/nav-standalone.component.css.map +1 -1
  35. package/assets/css/components/nav.component.css +1 -1
  36. package/assets/css/components/nav.component.css.map +1 -1
  37. package/assets/css/components/nav.global.css +1 -1
  38. package/assets/css/components/nav.global.css.map +1 -1
  39. package/assets/css/components/notification.css +1 -1
  40. package/assets/css/components/notification.css.map +1 -1
  41. package/assets/css/components/pagination.css +1 -1
  42. package/assets/css/components/pagination.css.map +1 -1
  43. package/assets/css/components/search.component.css +1 -1
  44. package/assets/css/components/search.component.css.map +1 -1
  45. package/assets/css/components/split-button.component.css +1 -1
  46. package/assets/css/components/split-button.component.css.map +1 -1
  47. package/assets/css/components/tabs.component.css +1 -1
  48. package/assets/css/components/tabs.component.css.map +1 -1
  49. package/assets/css/components/video-card.component.css +1 -1
  50. package/assets/css/components/video-card.component.css.map +1 -1
  51. package/assets/css/components/video-modal.component.css +1 -1
  52. package/assets/css/components/video-modal.component.css.map +1 -1
  53. package/assets/css/components/video.component.css +1 -1
  54. package/assets/css/components/video.component.css.map +1 -1
  55. package/assets/css/core.min.css +1 -1
  56. package/assets/css/core.min.css.map +1 -1
  57. package/assets/css/elements/buttons--global.css +1 -1
  58. package/assets/css/elements/buttons--global.css.map +1 -1
  59. package/assets/css/elements/buttons.css +1 -1
  60. package/assets/css/elements/buttons.css.map +1 -1
  61. package/assets/css/style.min.css +1 -1
  62. package/assets/css/style.min.css.map +1 -1
  63. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  64. package/assets/js/components/actionbar/actionbar.component.min.js +2 -2
  65. package/assets/js/components/address-lookup/address-lookup.component.min.js +2 -2
  66. package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
  67. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  68. package/assets/js/components/banner/banner.component.min.js +2 -2
  69. package/assets/js/components/barchart/barchart.component.min.js +2 -2
  70. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  71. package/assets/js/components/bone/bone.component.min.js +1 -1
  72. package/assets/js/components/branch-selector/branch-selector.component.min.js +2 -2
  73. package/assets/js/components/button/button.component.min.js +1 -1
  74. package/assets/js/components/calendar/calendar.component.min.js +2 -2
  75. package/assets/js/components/card/card.component.min.js +2 -2
  76. package/assets/js/components/carousel/carousel.component.min.js +2 -2
  77. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
  78. package/assets/js/components/config/config.component.min.js +2 -2
  79. package/assets/js/components/content/content.component.min.js +1 -1
  80. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  81. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +4 -4
  82. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  83. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  84. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  85. package/assets/js/components/form/form.component.min.js +1 -1
  86. package/assets/js/components/header/header.component.min.js +1 -1
  87. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  88. package/assets/js/components/input/input.component.min.js +1 -1
  89. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  90. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  91. package/assets/js/components/menu/menu.component.min.js +1 -1
  92. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  93. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  94. package/assets/js/components/modal/modal.component.min.js +2 -2
  95. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  96. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +3 -3
  97. package/assets/js/components/multiselect/multiselect.component.js +5 -2
  98. package/assets/js/components/multiselect/multiselect.component.min.js +4 -4
  99. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  100. package/assets/js/components/nav/nav.component.min.js +6 -6
  101. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  102. package/assets/js/components/nav-standalone/nav-standalone.component.min.js +7 -7
  103. package/assets/js/components/nav-standalone/nav-standalone.component.min.js.map +1 -1
  104. package/assets/js/components/notification/notification.component.min.js +2 -2
  105. package/assets/js/components/pagination/pagination.component.min.js +2 -2
  106. package/assets/js/components/password/password.component.min.js +1 -1
  107. package/assets/js/components/popover/popover.component.min.js +1 -1
  108. package/assets/js/components/rank/rank.component.min.js +1 -1
  109. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  110. package/assets/js/components/rating/rating.component.min.js +1 -1
  111. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  112. package/assets/js/components/search/search.component.min.js +2 -2
  113. package/assets/js/components/skeleton/skeleton.component.min.js +1 -1
  114. package/assets/js/components/slider/slider.component.min.js +1 -1
  115. package/assets/js/components/split-button/split-button.component.min.js +2 -2
  116. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +2 -2
  117. package/assets/js/components/std-nav/std-nav.component.js +9 -2
  118. package/assets/js/components/std-nav/std-nav.component.min.js +5 -5
  119. package/assets/js/components/std-nav/std-nav.component.min.js.map +1 -1
  120. package/assets/js/components/table/table.component.min.js +1 -1
  121. package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
  122. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  123. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
  124. package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
  125. package/assets/js/components/tabs/tabs.component.min.js +3 -3
  126. package/assets/js/components/tag/tag.component.min.js +2 -2
  127. package/assets/js/components/tag/tag.component.min.js.map +1 -1
  128. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  129. package/assets/js/components/video/video.component.min.js +5 -5
  130. package/assets/js/components/video-card/video-card.component.min.js +2 -2
  131. package/assets/js/components/video-modal/video-modal.component.min.js +2 -2
  132. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  133. package/assets/js/modules/dropdown.js +1 -0
  134. package/assets/js/modules/nav.js +3 -0
  135. package/assets/js/scripts.bundle.js +1 -1
  136. package/assets/js/scripts.bundle.min.js +1 -1
  137. package/assets/sass/components/charts.module.scss +1 -1
  138. package/assets/sass/components/doughnutchart.component.scss +5 -3
  139. package/assets/sass/components/nav.global.scss +122 -101
  140. package/assets/sass/components/search.component.scss +1 -1
  141. package/assets/sass/elements/buttons--global.css +4 -1
  142. package/assets/ts/components/multiselect/multiselect.component.ts +5 -2
  143. package/assets/ts/components/std-nav/std-nav.component.ts +12 -1
  144. package/assets/ts/modules/dropdown.ts +3 -2
  145. package/assets/ts/modules/nav.ts +4 -0
  146. package/dist/components.es.js +675 -675
  147. package/dist/components.umd.js +35 -35
  148. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nav.component.min.js","sources":["../../modules/nav.js","nav.component.js"],"sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nexport const navTemplate = /* HTML */ `<div class=\"container\">\n <slot name=\"logo\"></slot>\n\n <div class=\"buttons-holder\">\n <button class=\"btn-menu\" part=\"btn-menu-account\" id=\"btn-menu-account\">\n <span class=\"btn btn-primary\">\n <span id=\"account-btn-title\"></span>\n <i class=\"fa-user fa-solid\"></i>\n <i class=\"fa-regular fa-xmark-large\"></i>\n </span>\n </button>\n <button class=\"btn-menu\" part=\"btn-menu\" id=\"btn-menu\">\n Menu\n <i class=\"fa-regular fa-bars\"></i>\n <i class=\"fa-regular fa-xmark-large\"></i>\n </button>\n </div>\n\n <div class=\"menu__outer\" part=\"menu__outer\">\n <div class=\"menu closed\" part=\"menu\">\n\n <div class=\"menu__primary\">\n <slot></slot>\n <slot name=\"dual\"></slot>\n </div>\n <div class=\"dialog__wrapper d-none\" id=\"search-wrapper\"></div>\n\n <slot name=\"actions\"></slot>\n\n <div class=\"menu__secondary bg-light\">\n <div class=\"container\">\n\n <slot name=\"secondary\"></slot>\n </div>\n </div>\n </div>\n <div class=\"nav--menu\" part=\"nav--menu\">\n <slot name=\"account\"></slot>\n </div>\n </div>\n</div>\n<div class=\"backdrop\" part=\"backdrop\"></div>`;\n// #region Standadised Nav\nexport const populateNav = (data, slot = '') => {\n let html = ``;\n data.forEach((feature) => {\n if (feature.attributes.sections.length)\n html += `<details name=\"megamenu\" ${slot != '' ? `slot=\"${slot}\"` : ''}><summary>${feature.attributes.title}</summary><div data-title=\"${feature.attributes.title}\">${populateSections(feature.attributes.sections)}</div></details>`;\n else if (feature.attributes.links)\n html += `<details name=\"megamenu\" ${slot != '' ? `slot=\"${slot}\"` : ''}><summary>${feature.attributes.title}</summary><div data-title=\"${feature.attributes.title}\">${populateLinks(feature.attributes.links)}</div></details>`;\n else\n html += `<a href=\"/\" ${slot != '' ? `slot=\"${slot}\"` : ''}>${feature.attributes.title}</a>`;\n });\n return html;\n};\nexport const populateSections = (data) => {\n let html = ``;\n data.forEach((section) => {\n html += `<span class=\"section section--${section.layout}\">\n ${section.title ? `<span class=\"lead section-title\" data-product=\"${section.id}\" data-title>${section.title}:</span>` : ''}\n ${section.description ? `<span class=\"lead section-desc text-body\" data-product=\"${section.id}\"><i class=\"fa-solid fa-rocket colour-warning\"></i> ${section.description}</span>` : ''}\n ${populateLinks(section.links)}\n </span>`;\n });\n return html;\n};\nexport const populateLinks = (data) => {\n let html = ``;\n data.forEach((link) => {\n html += `<a href=\"${link.destinations.unlinked}\" title=\"Learn more about this features product\" target=\"_blank\" data-product=\"${link.productKey}\" data-feature=\"${link.featureKey}\" data-enabled=\"${link.destinations.linkedEnabled}\" data-disabled=\"${link.destinations.linkedDisabled}\">${link.title}</a>`;\n });\n return html;\n};\nexport const loadNavData = (mode) => __awaiter(void 0, void 0, void 0, function* () {\n const ajaxURL = mode != 'dev' ? 'https://hub.iamproperty.group/data/ecosystem-switcher.json' : 'https://dev.hub.iamproperty.group/data/ecosystem-switcher.json';\n try {\n const response = yield fetch(ajaxURL, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n });\n const json = yield response.json();\n const data = json.data ? json.data : json;\n return data;\n }\n catch (error) {\n if ((error === null || error === void 0 ? void 0 : error.name) === 'AbortError') {\n return true;\n }\n console.log(error);\n return 'There has been a problem. Please try again in a few moments.';\n }\n});\nexport const loadUserData = (mode, subject, product) => __awaiter(void 0, void 0, void 0, function* () {\n const ajaxURL = mode != 'dev' ? 'https://api.sso.iamproperty.group/navigation/access-context' : 'https://api.dev.sso.iamproperty.group/navigation/access-context';\n try {\n const response = yield fetch(ajaxURL, {\n method: 'post',\n headers: {\n Accept: 'application/vnd.api+json',\n 'Content-Type': 'application/vnd.api+json'\n },\n body: JSON.stringify({\n \"data\": {\n \"type\": \"navigation-access-context-request\",\n \"attributes\": {\n \"subject\": subject,\n \"requestingProduct\": product,\n \"navigationSchemaVersion\": \"2026-04-16\"\n }\n }\n })\n });\n const json = yield response.json();\n const data = json.data ? json.data : json;\n return data;\n }\n catch (error) {\n if ((error === null || error === void 0 ? void 0 : error.name) === 'AbortError') {\n return true;\n }\n console.log(error);\n return 'There has been a problem. Please try again in a few moments.';\n }\n});\nexport const setEnabledLinks = (component, data) => {\n const elements = component.querySelectorAll('[data-product][data-feature]');\n elements.forEach((element) => {\n if (data.attributes.features[element.getAttribute('data-product')]) {\n const isEnabled = data.attributes.features[element.getAttribute('data-product')].includes(element.getAttribute('data-feature'));\n element.setAttribute('data-is-enabled', isEnabled);\n if (isEnabled && element.getAttribute('data-enabled')) {\n element.setAttribute('href', element.getAttribute('data-enabled'));\n element.removeAttribute('target');\n element.removeAttribute('title');\n }\n }\n });\n};\n// #endregion\nexport const branchSelector = (component) => {\n const branchSelector = component.querySelector(\"iam-branch-selector\");\n const mql = window.matchMedia(\"(width > 62em)\");\n if (mql.matches)\n branchSelector === null || branchSelector === void 0 ? void 0 : branchSelector.setAttribute('slot', 'secondary');\n mql.addEventListener(\"change\", (e) => {\n if (e.matches && component.classList.contains('has-secondary'))\n branchSelector === null || branchSelector === void 0 ? void 0 : branchSelector.setAttribute('slot', 'secondary');\n else\n branchSelector === null || branchSelector === void 0 ? void 0 : branchSelector.setAttribute('slot', 'account');\n });\n};\nexport const menuEvents = (component, menu, menuButton, accountMenu, accountMenuButton) => {\n menuButton.addEventListener('click', (e) => {\n var _a;\n e.preventDefault();\n menu.classList.toggle('open');\n accountMenu.classList.remove('open');\n if (menu.classList.contains('open')) {\n component.classList.add('open');\n }\n else {\n component.classList.remove('open');\n }\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.querySelector('.btn-primary').classList.remove('active');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.removeAttribute('aria-expanded');\n (_a = component.querySelector(':scope > details[open]')) === null || _a === void 0 ? void 0 : _a.removeAttribute('open');\n }, false);\n};\nexport const megaMenuTitles = (component) => {\n // Mega menu title\n component.querySelectorAll('details').forEach((detailsElement) => {\n const summary = detailsElement.querySelector('summary');\n const containerDiv = detailsElement.querySelector(':Scope > div');\n if (containerDiv)\n containerDiv.setAttribute('data-title', summary.textContent);\n });\n};\nexport const megaMenusEvents = (component, menu, menuButton, accountMenu, accountMenuButton, backdrop) => {\n component.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('summary')) {\n const summary = event.target.closest('summary');\n const details = summary.closest('details');\n if (window.innerWidth > 992 && !event.target.closest('.nav--menu')) {\n if (details === null || details === void 0 ? void 0 : details.hasAttribute('open')) { // Is open before the user clicks on the details summary\n backdrop.classList.remove('show');\n component.classList.remove('open');\n component.classList.remove('open-secondary');\n }\n else {\n backdrop.classList.add('show');\n component.classList.add('open');\n if ((details === null || details === void 0 ? void 0 : details.hasAttribute('slot')) && (details === null || details === void 0 ? void 0 : details.getAttribute('slot')) == \"secondary\")\n component.classList.add('open-secondary');\n // Open the first details element if one isn't open\n if (!details.querySelector('details[open]') && details.querySelector('details'))\n details.querySelector('details').setAttribute('open', true);\n }\n // Close all other siblings of details\n details === null || details === void 0 ? void 0 : details.parentNode.querySelectorAll(':scope > details').forEach(element => {\n if (element != details)\n element.removeAttribute('open');\n });\n menu.classList.remove('open');\n accountMenu.classList.remove('open');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.querySelector('.btn-primary').classList.remove('active');\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.removeAttribute('aria-expanded');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.removeAttribute('aria-expanded');\n }\n }\n });\n};\nexport const accountMenuEvents = (component, menu, menuButton, accountMenu, accountMenuButton, backdrop) => {\n accountMenuButton.addEventListener('click', () => {\n var _a;\n // Close the main menu\n menu.classList.remove('open');\n accountMenu.classList.toggle('open');\n if (accountMenu.classList.contains('open')) {\n component.classList.add('open');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.querySelector('.btn-primary').classList.add('active');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.setAttribute('aria-expanded', true);\n }\n else {\n component.classList.remove('open');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.querySelector('.btn-primary').classList.remove('active');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.removeAttribute('aria-expanded');\n }\n (_a = component.querySelector(':scope > details[open]')) === null || _a === void 0 ? void 0 : _a.removeAttribute('open');\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.removeAttribute('aria-expanded');\n });\n};\nexport const backdropEvents = (component, menu, menuButton, accountMenu, accountMenuButton, backdrop) => {\n // Close the menu on the click of the backdrop on desktop\n backdrop.addEventListener('click', () => {\n const openMenu = component.querySelector(':scope > details[open]');\n if (openMenu)\n openMenu.removeAttribute('open');\n component.classList.remove('open');\n menu.classList.remove('open');\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.removeAttribute('aria-expanded');\n accountMenu.classList.remove('open');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.querySelector('.btn-primary').classList.remove('active');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.removeAttribute('aria-expanded');\n backdrop.classList.remove('show');\n });\n};\n","import { navTemplate, branchSelector, menuEvents, megaMenuTitles, megaMenusEvents, accountMenuEvents, backdropEvents } from '../../modules/nav';\nclass iamNav extends HTMLElement {\n constructor() {\n super();\n const shadowRoot = this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const navCSS = `@import \"${assetLocation}/css/components/nav.component.css\";`;\n const loadExtraCSS = `@import \"${assetLocation}/css/components/nav.global.css\";`;\n const template = document.createElement('template');\n template.innerHTML = /* HTML */ `\n <style class=\"styles\">\n ${navCSS}\n </style>\n\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/8bd0fca975.css\" crossorigin=\"anonymous\">\n ${navTemplate}\n `;\n shadowRoot.appendChild(template.content.cloneNode(true));\n // insert extra CSS\n if (!document.getElementById('navGlobal'))\n document.head.insertAdjacentHTML('beforeend', `<style id=\"navGlobal\">${loadExtraCSS}</style>`);\n }\n connectedCallback() {\n var _a;\n const backdrop = this.shadowRoot.querySelector('.backdrop');\n const menuButton = this.shadowRoot.querySelector('#btn-menu');\n const menu = this.shadowRoot.querySelector('.menu');\n const accountMenuButton = this.shadowRoot.querySelector('#btn-menu-account');\n const accountMenu = this.shadowRoot.querySelector('.nav--menu');\n const accountBtnTitle = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#account-btn-title');\n // #region Add Helper classes\n // Has secondary link\n if (this.querySelector('[slot=\"secondary\"]')) {\n this.classList.add('has-secondary');\n }\n // #endregion\n accountBtnTitle.innerHTML = this.hasAttribute('data-account-btn-title') ? this.getAttribute('data-account-btn-title') : 'My account';\n if (!this.querySelector('[slot=\"account\"]')) {\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.remove();\n accountMenu === null || accountMenu === void 0 ? void 0 : accountMenu.remove();\n accountBtnTitle === null || accountBtnTitle === void 0 ? void 0 : accountBtnTitle.remove();\n }\n // Allow outside JS to close the menu\n this.addEventListener('request-close', () => {\n menuButton.removeAttribute('aria-expanded');\n menu.classList.remove('open');\n this.classList.remove('open');\n });\n menuEvents(this, menu, menuButton, accountMenu, accountMenuButton);\n megaMenuTitles(this);\n megaMenusEvents(this, menu, menuButton, accountMenu, accountMenuButton, backdrop);\n accountMenuEvents(this, menu, menuButton, accountMenu, accountMenuButton, backdrop);\n backdropEvents(this, menu, menuButton, accountMenu, accountMenuButton, backdrop);\n branchSelector(this);\n // #region Search\n if (this.querySelector('[slot=\"search\"]')) {\n menu.classList.add('has-search');\n const searchWrapper = this.shadowRoot.querySelector('#search-wrapper');\n searchWrapper.classList.remove('d-none');\n searchWrapper.insertAdjacentHTML('afterbegin', `<button class=\"btn btn-secondary btn-compact fa-search me-0 mb-0\" id=\"search-button\" aria-controls=\"search-dialog\">Open Search field</button>\n <dialog id=\"search-dialog\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col mb-0 ms-auto col-md-7\">\n <slot name=\"search\"></slot>\n </div>\n <div class=\"col d-none d-md-block mw-fit-content ms-3\">\n <button class=\"btn btn-compact btn-secondary fa-xmark-large m-0 mb-0\" type=\"button\" id=\"search-close\">Close search field</button>\n </div>\n </div>\n </div>\n </dialog>`);\n const searchButton = this.shadowRoot.querySelector('#search-button');\n const searchClose = this.shadowRoot.querySelector('#search-close');\n const searchDialog = this.shadowRoot.querySelector('#search-dialog');\n if (this.hasAttribute('data-search-open')) {\n searchDialog.setAttribute('open', 'open');\n this.classList.add('search-open');\n searchButton.setAttribute('aria-expanded', true);\n }\n searchButton.addEventListener('click', () => {\n searchDialog.setAttribute('open', 'open');\n this.classList.add('search-open');\n searchButton.setAttribute('aria-expanded', true);\n });\n searchClose.addEventListener('click', () => {\n searchDialog.removeAttribute('open');\n this.classList.remove('search-open');\n searchButton.removeAttribute('aria-expanded');\n });\n }\n // #endregion\n }\n}\nexport default iamNav;\n"],"names":["navTemplate","branchSelector","component","mql","e","menuEvents","menu","menuButton","accountMenu","accountMenuButton","_a","megaMenuTitles","detailsElement","summary","containerDiv","megaMenusEvents","backdrop","event","details","element","accountMenuEvents","backdropEvents","openMenu","iamNav","shadowRoot","template","accountBtnTitle","searchWrapper","searchButton","searchClose","searchDialog"],"mappings":"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"}
1
+ {"version":3,"file":"nav.component.min.js","sources":["../../modules/nav.js","nav.component.js"],"sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nexport const navTemplate = /* HTML */ `<div class=\"container\">\n <slot name=\"logo\"></slot>\n\n <div class=\"buttons-holder\">\n <button class=\"btn-menu\" part=\"btn-menu-account\" id=\"btn-menu-account\">\n <span class=\"btn btn-primary\">\n <span id=\"account-btn-title\"></span>\n <i class=\"fa-user fa-solid\"></i>\n <i class=\"fa-regular fa-xmark-large\"></i>\n </span>\n </button>\n <button class=\"btn-menu\" part=\"btn-menu\" id=\"btn-menu\">\n Menu\n <i class=\"fa-regular fa-bars\"></i>\n <i class=\"fa-regular fa-xmark-large\"></i>\n </button>\n </div>\n\n <div class=\"menu__outer\" part=\"menu__outer\">\n <div class=\"menu closed\" part=\"menu\">\n\n <div class=\"menu__primary\">\n <slot></slot>\n <slot name=\"dual\"></slot>\n </div>\n <div class=\"dialog__wrapper d-none\" id=\"search-wrapper\"></div>\n\n <slot name=\"actions\"></slot>\n\n <div class=\"menu__secondary bg-light\">\n <div class=\"container\">\n\n <slot name=\"secondary\"></slot>\n </div>\n </div>\n </div>\n <div class=\"nav--menu\" part=\"nav--menu\">\n <slot name=\"account\"></slot>\n </div>\n </div>\n</div>\n<div class=\"backdrop\" part=\"backdrop\"></div>`;\n// #region Standadised Nav\nexport const populateNav = (data, slot = '') => {\n let html = ``;\n data.forEach((feature) => {\n if (feature.attributes.sections.length)\n html += `<details name=\"megamenu\" ${slot != '' ? `slot=\"${slot}\"` : ''}><summary>${feature.attributes.title}</summary><div data-title=\"${feature.attributes.title}\">${populateSections(feature.attributes.sections)}</div></details>`;\n else if (feature.attributes.links)\n html += `<details name=\"megamenu\" ${slot != '' ? `slot=\"${slot}\"` : ''}><summary>${feature.attributes.title}</summary><div data-title=\"${feature.attributes.title}\">${populateLinks(feature.attributes.links)}</div></details>`;\n else\n html += `<a href=\"/\" ${slot != '' ? `slot=\"${slot}\"` : ''}>${feature.attributes.title}</a>`;\n });\n return html;\n};\nexport const populateSections = (data) => {\n let html = ``;\n data.forEach((section) => {\n html += `<span class=\"section section--${section.layout}\">\n ${section.title ? `<span class=\"lead section-title\" data-product=\"${section.id}\" data-title>${section.title}:</span>` : ''}\n ${section.description ? `<span class=\"lead section-desc text-body\" data-product=\"${section.id}\"><i class=\"fa-solid fa-rocket colour-warning\"></i> ${section.description}</span>` : ''}\n ${populateLinks(section.links)}\n </span>`;\n });\n return html;\n};\nexport const populateLinks = (data) => {\n let html = ``;\n data.forEach((link) => {\n html += `<a href=\"${link.destinations.unlinked}\" title=\"Learn more about this features product\" target=\"_blank\" data-product=\"${link.productKey}\" data-feature=\"${link.featureKey}\" data-enabled=\"${link.destinations.linkedEnabled}\" data-disabled=\"${link.destinations.linkedDisabled}\">${link.title}</a>`;\n });\n return html;\n};\nexport const loadNavData = (mode) => __awaiter(void 0, void 0, void 0, function* () {\n const ajaxURL = mode != 'dev' ? 'https://hub.iamproperty.group/data/ecosystem-switcher.json' : 'https://dev.hub.iamproperty.group/data/ecosystem-switcher.json';\n try {\n const response = yield fetch(ajaxURL, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n });\n const json = yield response.json();\n const data = json.data ? json.data : json;\n return data;\n }\n catch (error) {\n if ((error === null || error === void 0 ? void 0 : error.name) === 'AbortError') {\n return true;\n }\n console.log(error);\n return 'There has been a problem. Please try again in a few moments.';\n }\n});\nexport const loadUserData = (mode, subject, product) => __awaiter(void 0, void 0, void 0, function* () {\n const ajaxURL = mode != 'dev' ? 'https://api.sso.iamproperty.group/navigation/access-context' : 'https://api.dev.sso.iamproperty.group/navigation/access-context';\n try {\n const response = yield fetch(ajaxURL, {\n method: 'post',\n headers: {\n Accept: 'application/vnd.api+json',\n 'Content-Type': 'application/vnd.api+json'\n },\n body: JSON.stringify({\n \"data\": {\n \"type\": \"navigation-access-context-request\",\n \"attributes\": {\n \"subject\": subject,\n \"requestingProduct\": product,\n \"navigationSchemaVersion\": \"2026-04-16\"\n }\n }\n })\n });\n const json = yield response.json();\n const data = json.data ? json.data : json;\n return data;\n }\n catch (error) {\n if ((error === null || error === void 0 ? void 0 : error.name) === 'AbortError') {\n return true;\n }\n console.log(error);\n return 'There has been a problem. Please try again in a few moments.';\n }\n});\nexport const setEnabledLinks = (component, data) => {\n const elements = component.querySelectorAll('[data-product][data-feature]');\n elements.forEach((element) => {\n if (data.attributes.features[element.getAttribute('data-product')]) {\n const isEnabled = data.attributes.features[element.getAttribute('data-product')].includes(element.getAttribute('data-feature'));\n element.setAttribute('data-is-enabled', isEnabled);\n if (isEnabled && element.getAttribute('data-enabled')) {\n element.setAttribute('href', element.getAttribute('data-enabled'));\n element.removeAttribute('target');\n element.removeAttribute('title');\n }\n }\n });\n};\n// #endregion\nexport const branchSelector = (component) => {\n const branchSelector = component.querySelector(\"iam-branch-selector\");\n const mql = window.matchMedia(\"(width > 62em)\");\n if (mql.matches)\n branchSelector === null || branchSelector === void 0 ? void 0 : branchSelector.setAttribute('slot', 'secondary');\n mql.addEventListener(\"change\", (e) => {\n if (e.matches && component.classList.contains('has-secondary'))\n branchSelector === null || branchSelector === void 0 ? void 0 : branchSelector.setAttribute('slot', 'secondary');\n else\n branchSelector === null || branchSelector === void 0 ? void 0 : branchSelector.setAttribute('slot', 'account');\n });\n};\nexport const menuEvents = (component, menu, menuButton, accountMenu, accountMenuButton) => {\n menuButton.addEventListener('click', (e) => {\n var _a;\n e.preventDefault();\n menu.classList.toggle('open');\n accountMenu.classList.remove('open');\n if (menu.classList.contains('open')) {\n component.classList.add('open');\n }\n else {\n component.classList.remove('open');\n }\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.querySelector('.btn-primary').classList.remove('active');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.removeAttribute('aria-expanded');\n (_a = component.querySelector(':scope > details[open]')) === null || _a === void 0 ? void 0 : _a.removeAttribute('open');\n }, false);\n};\nexport const megaMenuTitles = (component) => {\n // Mega menu title\n component.querySelectorAll('details').forEach((detailsElement) => {\n const summary = detailsElement.querySelector('summary');\n const containerDiv = detailsElement.querySelector(':Scope > div');\n if (containerDiv)\n containerDiv.setAttribute('data-title', summary.textContent);\n });\n};\nexport const megaMenusEvents = (component, menu, menuButton, accountMenu, accountMenuButton, backdrop) => {\n component.addEventListener('click', (event) => {\n if (event && event.target instanceof HTMLElement && event.target.closest('summary')) {\n const summary = event.target.closest('summary');\n const details = summary.closest('details');\n if (details.hasAttribute('slot') && details.getAttribute('slot') == \"account\") {\n return false;\n }\n if (window.innerWidth > 992 && !event.target.closest('.nav--menu')) {\n if (details === null || details === void 0 ? void 0 : details.hasAttribute('open')) { // Is open before the user clicks on the details summary\n backdrop.classList.remove('show');\n component.classList.remove('open');\n component.classList.remove('open-secondary');\n }\n else {\n backdrop.classList.add('show');\n component.classList.add('open');\n if ((details === null || details === void 0 ? void 0 : details.hasAttribute('slot')) && (details === null || details === void 0 ? void 0 : details.getAttribute('slot')) == \"secondary\")\n component.classList.add('open-secondary');\n // Open the first details element if one isn't open\n if (!details.querySelector('details[open]') && details.querySelector('details'))\n details.querySelector('details').setAttribute('open', true);\n }\n // Close all other siblings of details\n details === null || details === void 0 ? void 0 : details.parentNode.querySelectorAll(':scope > details').forEach(element => {\n if (element != details)\n element.removeAttribute('open');\n });\n menu.classList.remove('open');\n accountMenu.classList.remove('open');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.querySelector('.btn-primary').classList.remove('active');\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.removeAttribute('aria-expanded');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.removeAttribute('aria-expanded');\n }\n }\n });\n};\nexport const accountMenuEvents = (component, menu, menuButton, accountMenu, accountMenuButton, backdrop) => {\n accountMenuButton.addEventListener('click', () => {\n var _a;\n // Close the main menu\n menu.classList.remove('open');\n accountMenu.classList.toggle('open');\n if (accountMenu.classList.contains('open')) {\n component.classList.add('open');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.querySelector('.btn-primary').classList.add('active');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.setAttribute('aria-expanded', true);\n }\n else {\n component.classList.remove('open');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.querySelector('.btn-primary').classList.remove('active');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.removeAttribute('aria-expanded');\n }\n (_a = component.querySelector(':scope > details[open]')) === null || _a === void 0 ? void 0 : _a.removeAttribute('open');\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.removeAttribute('aria-expanded');\n });\n};\nexport const backdropEvents = (component, menu, menuButton, accountMenu, accountMenuButton, backdrop) => {\n // Close the menu on the click of the backdrop on desktop\n backdrop.addEventListener('click', () => {\n const openMenu = component.querySelector(':scope > details[open]');\n if (openMenu)\n openMenu.removeAttribute('open');\n component.classList.remove('open');\n menu.classList.remove('open');\n menuButton === null || menuButton === void 0 ? void 0 : menuButton.removeAttribute('aria-expanded');\n accountMenu.classList.remove('open');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.querySelector('.btn-primary').classList.remove('active');\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.removeAttribute('aria-expanded');\n backdrop.classList.remove('show');\n });\n};\n","import { navTemplate, branchSelector, menuEvents, megaMenuTitles, megaMenusEvents, accountMenuEvents, backdropEvents } from '../../modules/nav';\nclass iamNav extends HTMLElement {\n constructor() {\n super();\n const shadowRoot = this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const navCSS = `@import \"${assetLocation}/css/components/nav.component.css\";`;\n const loadExtraCSS = `@import \"${assetLocation}/css/components/nav.global.css\";`;\n const template = document.createElement('template');\n template.innerHTML = /* HTML */ `\n <style class=\"styles\">\n ${navCSS}\n </style>\n\n <link rel=\"stylesheet\" href=\"https://kit.fontawesome.com/8bd0fca975.css\" crossorigin=\"anonymous\">\n ${navTemplate}\n `;\n shadowRoot.appendChild(template.content.cloneNode(true));\n // insert extra CSS\n if (!document.getElementById('navGlobal'))\n document.head.insertAdjacentHTML('beforeend', `<style id=\"navGlobal\">${loadExtraCSS}</style>`);\n }\n connectedCallback() {\n var _a;\n const backdrop = this.shadowRoot.querySelector('.backdrop');\n const menuButton = this.shadowRoot.querySelector('#btn-menu');\n const menu = this.shadowRoot.querySelector('.menu');\n const accountMenuButton = this.shadowRoot.querySelector('#btn-menu-account');\n const accountMenu = this.shadowRoot.querySelector('.nav--menu');\n const accountBtnTitle = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#account-btn-title');\n // #region Add Helper classes\n // Has secondary link\n if (this.querySelector('[slot=\"secondary\"]')) {\n this.classList.add('has-secondary');\n }\n // #endregion\n accountBtnTitle.innerHTML = this.hasAttribute('data-account-btn-title') ? this.getAttribute('data-account-btn-title') : 'My account';\n if (!this.querySelector('[slot=\"account\"]')) {\n accountMenuButton === null || accountMenuButton === void 0 ? void 0 : accountMenuButton.remove();\n accountMenu === null || accountMenu === void 0 ? void 0 : accountMenu.remove();\n accountBtnTitle === null || accountBtnTitle === void 0 ? void 0 : accountBtnTitle.remove();\n }\n // Allow outside JS to close the menu\n this.addEventListener('request-close', () => {\n menuButton.removeAttribute('aria-expanded');\n menu.classList.remove('open');\n this.classList.remove('open');\n });\n menuEvents(this, menu, menuButton, accountMenu, accountMenuButton);\n megaMenuTitles(this);\n megaMenusEvents(this, menu, menuButton, accountMenu, accountMenuButton, backdrop);\n accountMenuEvents(this, menu, menuButton, accountMenu, accountMenuButton, backdrop);\n backdropEvents(this, menu, menuButton, accountMenu, accountMenuButton, backdrop);\n branchSelector(this);\n // #region Search\n if (this.querySelector('[slot=\"search\"]')) {\n menu.classList.add('has-search');\n const searchWrapper = this.shadowRoot.querySelector('#search-wrapper');\n searchWrapper.classList.remove('d-none');\n searchWrapper.insertAdjacentHTML('afterbegin', `<button class=\"btn btn-secondary btn-compact fa-search me-0 mb-0\" id=\"search-button\" aria-controls=\"search-dialog\">Open Search field</button>\n <dialog id=\"search-dialog\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col mb-0 ms-auto col-md-7\">\n <slot name=\"search\"></slot>\n </div>\n <div class=\"col d-none d-md-block mw-fit-content ms-3\">\n <button class=\"btn btn-compact btn-secondary fa-xmark-large m-0 mb-0\" type=\"button\" id=\"search-close\">Close search field</button>\n </div>\n </div>\n </div>\n </dialog>`);\n const searchButton = this.shadowRoot.querySelector('#search-button');\n const searchClose = this.shadowRoot.querySelector('#search-close');\n const searchDialog = this.shadowRoot.querySelector('#search-dialog');\n if (this.hasAttribute('data-search-open')) {\n searchDialog.setAttribute('open', 'open');\n this.classList.add('search-open');\n searchButton.setAttribute('aria-expanded', true);\n }\n searchButton.addEventListener('click', () => {\n searchDialog.setAttribute('open', 'open');\n this.classList.add('search-open');\n searchButton.setAttribute('aria-expanded', true);\n });\n searchClose.addEventListener('click', () => {\n searchDialog.removeAttribute('open');\n this.classList.remove('search-open');\n searchButton.removeAttribute('aria-expanded');\n });\n }\n // #endregion\n }\n}\nexport default iamNav;\n"],"names":["navTemplate","branchSelector","component","mql","e","menuEvents","menu","menuButton","accountMenu","accountMenuButton","_a","megaMenuTitles","detailsElement","summary","containerDiv","megaMenusEvents","backdrop","event","details","element","accountMenuEvents","backdropEvents","openMenu","iamNav","shadowRoot","template","accountBtnTitle","searchWrapper","searchButton","searchClose","searchDialog"],"mappings":";;;IASO,MAAMA,EAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8CA6IzBC,EAAkBC,GAAc,CACzC,MAAMD,EAAiBC,EAAU,cAAc,qBAAqB,EAC9DC,EAAM,OAAO,WAAW,gBAAgB,EAC1CA,EAAI,SAC4DF,GAAe,aAAa,OAAQ,WAAW,EACnHE,EAAI,iBAAiB,SAAWC,GAAM,CAC9BA,EAAE,SAAWF,EAAU,UAAU,SAAS,eAAe,EACOD,GAAe,aAAa,OAAQ,WAAW,EAE/CA,GAAe,aAAa,OAAQ,SAAS,CACrH,CAAC,CACL,EACaI,EAAa,CAACH,EAAWI,EAAMC,EAAYC,EAAaC,IAAsB,CACvFF,EAAW,iBAAiB,QAAUH,GAAM,CACxC,IAAIM,EACJN,EAAE,eAAc,EAChBE,EAAK,UAAU,OAAO,MAAM,EAC5BE,EAAY,UAAU,OAAO,MAAM,EAC/BF,EAAK,UAAU,SAAS,MAAM,EAC9BJ,EAAU,UAAU,IAAI,MAAM,EAG9BA,EAAU,UAAU,OAAO,MAAM,EAEiCO,GAAkB,cAAc,cAAc,EAAE,UAAU,OAAO,QAAQ,EACzEA,GAAkB,gBAAgB,eAAe,GACtHC,EAAKR,EAAU,cAAc,wBAAwB,KAAO,MAAQQ,IAAO,QAAkBA,EAAG,gBAAgB,MAAM,CAC3H,EAAG,EAAK,CACZ,EACaC,EAAkBT,GAAc,CAEzCA,EAAU,iBAAiB,SAAS,EAAE,QAASU,GAAmB,CAC9D,MAAMC,EAAUD,EAAe,cAAc,SAAS,EAChDE,EAAeF,EAAe,cAAc,cAAc,EAC5DE,GACAA,EAAa,aAAa,aAAcD,EAAQ,WAAW,CACnE,CAAC,CACL,EACaE,EAAkB,CAACb,EAAWI,EAAMC,EAAYC,EAAaC,EAAmBO,IAAa,CACtGd,EAAU,iBAAiB,QAAUe,GAAU,CAC3C,GAAIA,GAASA,EAAM,kBAAkB,aAAeA,EAAM,OAAO,QAAQ,SAAS,EAAG,CAEjF,MAAMC,EADUD,EAAM,OAAO,QAAQ,SAAS,EACtB,QAAQ,SAAS,EACzC,GAAIC,EAAQ,aAAa,MAAM,GAAKA,EAAQ,aAAa,MAAM,GAAK,UAChE,MAAO,GAEP,OAAO,WAAa,KAAO,CAACD,EAAM,OAAO,QAAQ,YAAY,IACPC,GAAQ,aAAa,MAAM,GAC7EF,EAAS,UAAU,OAAO,MAAM,EAChCd,EAAU,UAAU,OAAO,MAAM,EACjCA,EAAU,UAAU,OAAO,gBAAgB,IAG3Cc,EAAS,UAAU,IAAI,MAAM,EAC7Bd,EAAU,UAAU,IAAI,MAAM,EACyBgB,GAAQ,aAAa,MAAM,GAAyDA,GAAQ,aAAa,MAAM,GAAM,aACxKhB,EAAU,UAAU,IAAI,gBAAgB,EAExC,CAACgB,EAAQ,cAAc,eAAe,GAAKA,EAAQ,cAAc,SAAS,GAC1EA,EAAQ,cAAc,SAAS,EAAE,aAAa,OAAQ,EAAI,GAGhBA,GAAQ,WAAW,iBAAiB,kBAAkB,EAAE,QAAQC,GAAW,CACrHA,GAAWD,GACXC,EAAQ,gBAAgB,MAAM,CACtC,CAAC,EACDb,EAAK,UAAU,OAAO,MAAM,EAC5BE,EAAY,UAAU,OAAO,MAAM,EACmCC,GAAkB,cAAc,cAAc,EAAE,UAAU,OAAO,QAAQ,EACvFF,GAAW,gBAAgB,eAAe,EAC5BE,GAAkB,gBAAgB,eAAe,EAE/H,CACJ,CAAC,CACL,EACaW,EAAoB,CAAClB,EAAWI,EAAMC,EAAYC,EAAaC,EAAmBO,IAAa,CACxGP,EAAkB,iBAAiB,QAAS,IAAM,CAC9C,IAAIC,EAEJJ,EAAK,UAAU,OAAO,MAAM,EAC5BE,EAAY,UAAU,OAAO,MAAM,EAC/BA,EAAY,UAAU,SAAS,MAAM,GACrCN,EAAU,UAAU,IAAI,MAAM,EACwCO,GAAkB,cAAc,cAAc,EAAE,UAAU,IAAI,QAAQ,EACtEA,GAAkB,aAAa,gBAAiB,EAAI,IAG1HP,EAAU,UAAU,OAAO,MAAM,EACqCO,GAAkB,cAAc,cAAc,EAAE,UAAU,OAAO,QAAQ,EACzEA,GAAkB,gBAAgB,eAAe,IAE1HC,EAAKR,EAAU,cAAc,wBAAwB,KAAO,MAAQQ,IAAO,QAAkBA,EAAG,gBAAgB,MAAM,EAC/DH,GAAW,gBAAgB,eAAe,CACtG,CAAC,CACL,EACac,EAAiB,CAACnB,EAAWI,EAAMC,EAAYC,EAAaC,EAAmBO,IAAa,CAErGA,EAAS,iBAAiB,QAAS,IAAM,CACrC,MAAMM,EAAWpB,EAAU,cAAc,wBAAwB,EAC7DoB,GACAA,EAAS,gBAAgB,MAAM,EACnCpB,EAAU,UAAU,OAAO,MAAM,EACjCI,EAAK,UAAU,OAAO,MAAM,EAC4BC,GAAW,gBAAgB,eAAe,EAClGC,EAAY,UAAU,OAAO,MAAM,EACmCC,GAAkB,cAAc,cAAc,EAAE,UAAU,OAAO,QAAQ,EACzEA,GAAkB,gBAAgB,eAAe,EACvHO,EAAS,UAAU,OAAO,MAAM,CACpC,CAAC,CACL,EClQA,MAAMO,UAAe,WAAY,CAC7B,aAAc,CACV,MAAK,EACL,MAAMC,EAAa,KAAK,aAAa,CAAE,KAAM,MAAM,CAAE,EAC/B,SAAS,KAAK,aAAa,sBAAsB,GACjE,SAAS,KAAK,aAAa,sBAAsB,EAIvD,MAAMC,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,UAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMlCzB,CAAW;AAAA,MAETwB,EAAW,YAAYC,EAAS,QAAQ,UAAU,EAAI,CAAC,EAElD,SAAS,eAAe,WAAW,GACpC,SAAS,KAAK,mBAAmB,YAAa;AAAA,SAA+C,CACrG,CACA,mBAAoB,CAChB,IAAIf,EACJ,MAAMM,EAAW,KAAK,WAAW,cAAc,WAAW,EACpDT,EAAa,KAAK,WAAW,cAAc,WAAW,EACtDD,EAAO,KAAK,WAAW,cAAc,OAAO,EAC5CG,EAAoB,KAAK,WAAW,cAAc,mBAAmB,EACrED,EAAc,KAAK,WAAW,cAAc,YAAY,EACxDkB,GAAmBhB,EAAK,KAAK,cAAgB,MAAQA,IAAO,OAAS,OAASA,EAAG,cAAc,oBAAoB,EA0BzH,GAvBI,KAAK,cAAc,oBAAoB,GACvC,KAAK,UAAU,IAAI,eAAe,EAGtCgB,EAAgB,UAAY,KAAK,aAAa,wBAAwB,EAAI,KAAK,aAAa,wBAAwB,EAAI,aACnH,KAAK,cAAc,kBAAkB,IACgCjB,GAAkB,OAAM,EACpCD,GAAY,OAAM,EACVkB,GAAgB,OAAM,GAG5F,KAAK,iBAAiB,gBAAiB,IAAM,CACzCnB,EAAW,gBAAgB,eAAe,EAC1CD,EAAK,UAAU,OAAO,MAAM,EAC5B,KAAK,UAAU,OAAO,MAAM,CAChC,CAAC,EACDD,EAAW,KAAMC,EAAMC,EAAYC,EAAaC,CAAiB,EACjEE,EAAe,IAAI,EACnBI,EAAgB,KAAMT,EAAMC,EAAYC,EAAaC,EAAmBO,CAAQ,EAChFI,EAAkB,KAAMd,EAAMC,EAAYC,EAAaC,CAA2B,EAClFY,EAAe,KAAMf,EAAMC,EAAYC,EAAaC,EAAmBO,CAAQ,EAC/Ef,EAAe,IAAI,EAEf,KAAK,cAAc,iBAAiB,EAAG,CACvCK,EAAK,UAAU,IAAI,YAAY,EAC/B,MAAMqB,EAAgB,KAAK,WAAW,cAAc,iBAAiB,EACrEA,EAAc,UAAU,OAAO,QAAQ,EACvCA,EAAc,mBAAmB,aAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAY3C,EACJ,MAAMC,EAAe,KAAK,WAAW,cAAc,gBAAgB,EAC7DC,EAAc,KAAK,WAAW,cAAc,eAAe,EAC3DC,EAAe,KAAK,WAAW,cAAc,gBAAgB,EAC/D,KAAK,aAAa,kBAAkB,IACpCA,EAAa,aAAa,OAAQ,MAAM,EACxC,KAAK,UAAU,IAAI,aAAa,EAChCF,EAAa,aAAa,gBAAiB,EAAI,GAEnDA,EAAa,iBAAiB,QAAS,IAAM,CACzCE,EAAa,aAAa,OAAQ,MAAM,EACxC,KAAK,UAAU,IAAI,aAAa,EAChCF,EAAa,aAAa,gBAAiB,EAAI,CACnD,CAAC,EACDC,EAAY,iBAAiB,QAAS,IAAM,CACxCC,EAAa,gBAAgB,MAAM,EACnC,KAAK,UAAU,OAAO,aAAa,EACnCF,EAAa,gBAAgB,eAAe,CAChD,CAAC,CACL,CAEJ,CACJ"}