@iamproperty/components 7.8.2--beta3 → 7.8.2--beta4

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 (200) 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/advanced-select.component.css +1 -1
  6. package/assets/css/components/advanced-select.component.css.map +1 -1
  7. package/assets/css/components/banner.preload.css +1 -0
  8. package/assets/css/components/banner.preload.css.map +1 -0
  9. package/assets/css/components/calendar.component.css +1 -1
  10. package/assets/css/components/calendar.component.css.map +1 -1
  11. package/assets/css/components/card.component.css +1 -1
  12. package/assets/css/components/card.component.css.map +1 -1
  13. package/assets/css/components/card.module.css +1 -1
  14. package/assets/css/components/card.module.css.map +1 -1
  15. package/assets/css/components/card.preload.css +1 -0
  16. package/assets/css/components/card.preload.css.map +1 -0
  17. package/assets/css/components/carousel.component.css +1 -1
  18. package/assets/css/components/carousel.component.css.map +1 -1
  19. package/assets/css/components/carousel.config.css +1 -1
  20. package/assets/css/components/carousel.config.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/content.component.css +1 -1
  24. package/assets/css/components/content.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/filter-card.component.css +1 -1
  28. package/assets/css/components/filter-card.component.css.map +1 -1
  29. package/assets/css/components/multiselect.css +1 -1
  30. package/assets/css/components/multiselect.css.map +1 -1
  31. package/assets/css/components/nav.component.css +1 -1
  32. package/assets/css/components/nav.component.css.map +1 -1
  33. package/assets/css/components/pagination.css +1 -1
  34. package/assets/css/components/pagination.css.map +1 -1
  35. package/assets/css/components/record-card.component.css +1 -1
  36. package/assets/css/components/record-card.component.css.map +1 -1
  37. package/assets/css/components/search.component.css +1 -1
  38. package/assets/css/components/search.component.css.map +1 -1
  39. package/assets/css/components/skeleton.global.css +1 -1
  40. package/assets/css/components/skeleton.global.css.map +1 -1
  41. package/assets/css/components/slider.css +1 -1
  42. package/assets/css/components/slider.css.map +1 -1
  43. package/assets/css/components/split-button.component.css +1 -1
  44. package/assets/css/components/split-button.component.css.map +1 -1
  45. package/assets/css/components/std-nav-standalone.component.css +1 -1
  46. package/assets/css/components/std-nav-standalone.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/tag.component.css +1 -1
  50. package/assets/css/components/tag.component.css.map +1 -1
  51. package/assets/css/components/video-card.component.css +1 -1
  52. package/assets/css/components/video-card.component.css.map +1 -1
  53. package/assets/css/core.min.css +1 -1
  54. package/assets/css/core.min.css.map +1 -1
  55. package/assets/css/elements/dropdown.css +1 -1
  56. package/assets/css/elements/dropdown.css.map +1 -1
  57. package/assets/css/elements/forms.css +1 -1
  58. package/assets/css/elements/forms.css.map +1 -1
  59. package/assets/css/elements/links--global.css +1 -1
  60. package/assets/css/elements/links--global.css.map +1 -1
  61. package/assets/css/elements/links.css +1 -1
  62. package/assets/css/elements/links.css.map +1 -1
  63. package/assets/css/style.min.css +1 -1
  64. package/assets/css/style.min.css.map +1 -1
  65. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  66. package/assets/js/components/actionbar/actionbar.component.min.js +2 -2
  67. package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -4
  68. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  69. package/assets/js/components/advanced-select/advanced-select.component.min.js +2 -2
  70. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  71. package/assets/js/components/banner/banner.component.min.js +1 -1
  72. package/assets/js/components/barchart/barchart.component.min.js +1 -1
  73. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  74. package/assets/js/components/bone/bone.component.min.js +1 -1
  75. package/assets/js/components/button/button.component.min.js +1 -1
  76. package/assets/js/components/calendar/calendar.component.min.js +2 -2
  77. package/assets/js/components/card/card.component.js +114 -125
  78. package/assets/js/components/card/card.component.min.js +7 -7
  79. package/assets/js/components/card/card.component.min.js.map +1 -1
  80. package/assets/js/components/carousel/carousel.component.js +83 -29
  81. package/assets/js/components/carousel/carousel.component.min.js +16 -11
  82. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  83. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  84. package/assets/js/components/config/config.component.min.js +7 -7
  85. package/assets/js/components/config/config.component.min.js.map +1 -1
  86. package/assets/js/components/content/content.component.js +28 -69
  87. package/assets/js/components/content/content.component.min.js +4 -4
  88. package/assets/js/components/content/content.component.min.js.map +1 -1
  89. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  90. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +1 -1
  91. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  92. package/assets/js/components/filter-card/filter-card.component.min.js +5 -5
  93. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  94. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  95. package/assets/js/components/form/form.component.min.js +1 -1
  96. package/assets/js/components/header/header.component.min.js +1 -1
  97. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  98. package/assets/js/components/input/input.component.min.js +1 -1
  99. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  100. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  101. package/assets/js/components/menu/menu.component.min.js +1 -1
  102. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  103. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  104. package/assets/js/components/modal/modal.component.min.js +1 -1
  105. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  106. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +1 -1
  107. package/assets/js/components/multiselect/multiselect.component.min.js +4 -4
  108. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  109. package/assets/js/components/nav/nav.component.min.js +2 -2
  110. package/assets/js/components/notification/notification.component.min.js +1 -1
  111. package/assets/js/components/pagination/pagination.component.min.js +5 -5
  112. package/assets/js/components/password/password.component.min.js +1 -1
  113. package/assets/js/components/popover/popover.component.min.js +1 -1
  114. package/assets/js/components/rank/rank.component.min.js +1 -1
  115. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  116. package/assets/js/components/rating/rating.component.min.js +1 -1
  117. package/assets/js/components/record-card/record-card.component.min.js +6 -6
  118. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  119. package/assets/js/components/search/search.component.js +234 -186
  120. package/assets/js/components/search/search.component.min.js +12 -7
  121. package/assets/js/components/search/search.component.min.js.map +1 -1
  122. package/assets/js/components/skeleton/skeleton.component.min.js +1 -1
  123. package/assets/js/components/slider/slider.component.min.js +2 -2
  124. package/assets/js/components/split-button/split-button.component.min.js +2 -2
  125. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +5 -5
  126. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
  127. package/assets/js/components/std-nav/std-nav.component.js +10 -9
  128. package/assets/js/components/std-nav/std-nav.component.min.js +9 -12
  129. package/assets/js/components/std-nav/std-nav.component.min.js.map +1 -1
  130. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js +5 -5
  131. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js.map +1 -1
  132. package/assets/js/components/table/table.component.min.js +1 -1
  133. package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
  134. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  135. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
  136. package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
  137. package/assets/js/components/tabs/tabs.component.min.js +4 -4
  138. package/assets/js/components/tag/tag.component.min.js +3 -3
  139. package/assets/js/components/tag/tag.component.min.js.map +1 -1
  140. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  141. package/assets/js/components/video/video.component.min.js +1 -1
  142. package/assets/js/components/video-card/video-card.component.min.js +9 -9
  143. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  144. package/assets/js/components/video-modal/video-modal.component.min.js +1 -1
  145. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  146. package/assets/js/modules/card.module.js +12 -11
  147. package/assets/js/modules/content.js +40 -8
  148. package/assets/js/modules/content.test.js +62 -12
  149. package/assets/js/modules/data-layer.js +7 -6
  150. package/assets/js/modules/dropdown.js +0 -1
  151. package/assets/js/modules/nav.js +10 -3
  152. package/assets/js/modules/search.js +153 -0
  153. package/assets/js/modules/search.test.js +125 -0
  154. package/assets/js/modules/tabs.test.js +64 -12
  155. package/assets/js/modules/testimonial.test.js +44 -6
  156. package/assets/js/modules/videos.test.js +61 -13
  157. package/assets/js/scripts.bundle.js +3 -3
  158. package/assets/js/scripts.bundle.js.map +1 -1
  159. package/assets/js/scripts.bundle.min.js +2 -2
  160. package/assets/js/scripts.bundle.min.js.map +1 -1
  161. package/assets/sass/_components.scss +2 -63
  162. package/assets/sass/components/banner.preload.scss +26 -0
  163. package/assets/sass/components/card.component.scss +1 -7
  164. package/assets/sass/components/card.module.scss +6 -6
  165. package/assets/sass/components/card.preload.scss +80 -0
  166. package/assets/sass/components/carousel.component.scss +165 -0
  167. package/assets/sass/components/carousel.config.scss +85 -249
  168. package/assets/sass/components/content.component.scss +0 -7
  169. package/assets/sass/components/nav.component.scss +2 -1
  170. package/assets/sass/components/search.component.scss +89 -7
  171. package/assets/sass/components/skeleton.global.scss +4 -0
  172. package/assets/sass/elements/dropdown.css +2 -0
  173. package/assets/sass/elements/forms.scss +0 -27
  174. package/assets/sass/elements/links--global.scss +40 -2
  175. package/assets/sass/foundations/root.scss +0 -1
  176. package/assets/sass/utilities/js-display.css +2 -3
  177. package/assets/ts/components/card/card.component.ts +72 -62
  178. package/assets/ts/components/carousel/carousel.component.ts +84 -19
  179. package/assets/ts/components/content/content.component.ts +36 -100
  180. package/assets/ts/components/search/search.component.ts +257 -185
  181. package/assets/ts/components/std-nav/std-nav.component.ts +17 -16
  182. package/assets/ts/html.d.ts +6 -0
  183. package/assets/ts/modules/card.module.ts +20 -12
  184. package/assets/ts/modules/content.test.ts +84 -12
  185. package/assets/ts/modules/content.ts +56 -9
  186. package/assets/ts/modules/data-layer.ts +7 -11
  187. package/assets/ts/modules/dropdown.ts +0 -2
  188. package/assets/ts/modules/nav.ts +12 -3
  189. package/assets/ts/modules/search.test.ts +142 -0
  190. package/assets/ts/modules/search.ts +206 -0
  191. package/assets/ts/modules/tabs.test.ts +79 -12
  192. package/assets/ts/modules/testimonial.test.ts +45 -6
  193. package/assets/ts/modules/videos.test.ts +74 -14
  194. package/dist/components.es.js +25 -25
  195. package/dist/components.umd.js +163 -156
  196. package/package.json +1 -1
  197. package/assets/js/modules/carousel.js +0 -214
  198. package/assets/js/modules/carousel.test.js +0 -18
  199. package/assets/ts/modules/carousel.test.ts +0 -27
  200. package/assets/ts/modules/carousel.ts +0 -301
@@ -1 +1 @@
1
- {"version":3,"file":"config.component.min.js","sources":["../../../../node_modules/js-cookie/dist/js.cookie.mjs","../_global.js","config.component.js"],"sourcesContent":["/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","export const trackComponentRegistered = (componentName) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementRegistered',\n element: componentName,\n });\n};\nexport const trackComponent = (component, componentName, trackEvents) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementAdded',\n element: componentName,\n });\n trackEvents.forEach((eventName) => {\n component.addEventListener(eventName, function (event) {\n const eventDetails = {\n event: eventName,\n element: componentName,\n target: event.target,\n };\n Object.keys(event.detail).forEach((eventKey) => {\n const eventDetail = event.detail[eventKey];\n eventDetails[eventKey] = eventDetail;\n });\n window.dataLayer.push(eventDetails);\n });\n });\n return true;\n};\n","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};\nimport Cookies from '../../../../node_modules/js-cookie/dist/js.cookie.mjs';\nimport { trackComponentRegistered } from '../_global';\ntrackComponentRegistered('iam-config');\nclass iamConfig extends HTMLElement {\n constructor() {\n var _a, _b;\n super();\n this.getBucketsData = (data) => {\n if (!data)\n return [];\n const buckets = [];\n // TODO: check local storage first\n data.forEach(bucket => {\n var _a, _b;\n if (typeof ((_a = bucket.attributes) === null || _a === void 0 ? void 0 : _a.criteria) == \"object\" && Array.isArray((_b = bucket.attributes) === null || _b === void 0 ? void 0 : _b.criteria)) {\n buckets.push(bucket);\n }\n });\n return buckets;\n };\n this.createBuckets = (buckets) => {\n console.log(buckets);\n const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename\n if (!buckets)\n return false;\n buckets.forEach((bucket) => {\n this.createBucket(bucket);\n });\n return true;\n };\n this.createBucket = (bucket) => {\n const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename\n const bucketElement = document.createElement('div');\n bucketElement.innerHTML = this.addBucketHTML(bucket);\n //bucketElement.setAttribute('data-bucket',bucket.id);\n bucketElement.classList.add('bucket__wrapper');\n bucketsContainer === null || bucketsContainer === void 0 ? void 0 : bucketsContainer.insertAdjacentElement('beforeend', bucketElement);\n //this.addButtonEvents(bucketElement,true);\n this.createEditBucketsEvents(bucketElement);\n const criteriaContainer = bucketElement.querySelector('.criteria--container');\n if (bucket.attributes) {\n bucket.attributes.criteria.forEach((criteria) => {\n var _a, _b, _c;\n const criteriaForm = document.createElement('form');\n criteriaForm.classList.add('criteria');\n criteriaForm.innerHTML = this.addCriteriaHTML(criteria.attributes);\n // TODO add to HTML\n (_a = criteriaForm.querySelector('[name=\"attribute\"]')) === null || _a === void 0 ? void 0 : _a.value = criteria.attributes.attribute;\n (_b = criteriaForm.querySelector('[name=\"rule\"]')) === null || _b === void 0 ? void 0 : _b.value = criteria.attributes.rule;\n (_c = criteriaForm.querySelector('[name=\"match\"]')) === null || _c === void 0 ? void 0 : _c.value = criteria.attributes.match;\n criteriaContainer === null || criteriaContainer === void 0 ? void 0 : criteriaContainer.appendChild(criteriaForm);\n // TODO add buttons\n // TODO add events\n });\n this.createForms(bucket.attributes.items, bucket.id);\n }\n return bucketElement;\n };\n this.addCriteriaHTML = (attributes) => {\n return /*HTML*/ `<label>\n <span class=\"visually-hidden\">Attribute</span>\n ${this.createCriteriaDropdown(attributes.attribute)}\n </label>\n <label>\n <span class=\"visually-hidden\">Rule</span>\n <select name=\"rule\" class=\"mt-0 select--sm\">\n <option value=\"set\">is not empty</option>\n <option value=\"empty\">is empty</option>\n <option value=\"equals\">equals</option>\n <option value=\"not\">is not</option>\n <option value=\"greater\">greater than</option>\n <option value=\"less\">less than</option>\n </select>\n </label>\n <label>\n <span class=\"visually-hidden\">Match</span>\n <input type=\"text\" name=\"match\" class=\"mt-0 input--sm\" /> <!-- TODO Add datalist or transform into select -->\n </label>\n <div class=\"btn__group\">\n <button class=\"btn btn-compact btn-sm mt-0 btn-secondary fa-plus\" type=\"button\" data-direction=\"add\" title=\"Delete\">Add</button>\n <button class=\"btn btn-compact btn-sm mt-0 btn-secondary fa-trash\" type=\"button\" data-direction=\"delete\" title=\"Delete\">Delete</button>\n </div>`;\n };\n this.addBucketHTML = (bucket) => {\n var _a, _b, _c;\n return /*HTML*/ `<label>\n <span class=\"visually-hidden\">Name</span>\n <input type=\"text\" name=\"bucket\" value=\"${(_b = (_a = bucket.attributes) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : ''}\"/>\n </label>\n <div class=\"btn__group text-end\"><button class=\"btn btn-compact btn-sm mt-0 btn-secondary fa-pen-to-square\" data-expand title=\"Expand to see more options\">Edit</button>${this.buttonHTML}</div>\n <div class=\"criteria--container\">\n </div>\n <div data-bucket=\"${(_c = bucket.id) !== null && _c !== void 0 ? _c : ''}\" class=\"bucket\">\n </div>`;\n };\n this.createCriteriaDropdown = (attribute) => {\n const form = this.querySelector('form');\n const formData = new FormData(form);\n const formDataObj = Object.fromEntries(formData.entries());\n let optionsHtml = '';\n Object.keys(formDataObj).forEach(function (key) {\n optionsHtml += `<option value=\"${key}\" ${key == attribute ? ' selected=\"selected\"' : ''}>${key}</option>`;\n });\n return `<select name=\"attributes[criteria]\" class=\"mt-0 select--sm\">\n <option value=\"\"></option>\n ${optionsHtml}\n </select>`;\n };\n this.createEditBucketsEvents = (bucket) => {\n this.addButtonEvents(bucket, true);\n const expandButton = bucket === null || bucket === void 0 ? void 0 : bucket.querySelector('[data-expand]');\n expandButton === null || expandButton === void 0 ? void 0 : expandButton.addEventListener('click', () => {\n bucket.classList.toggle('bucket--expanded');\n });\n };\n this.createForms = (data, bucketId = \"any\") => {\n data.forEach(item => {\n var _a;\n if (typeof ((_a = item.attributes) === null || _a === void 0 ? void 0 : _a.criteria) == \"undefined\") {\n const formElement = this.createForm(item, bucketId);\n Object.keys(item.attributes).forEach(function (key) {\n if (formElement.querySelector(`[name=\"${key}\"]`)) {\n const element = formElement.querySelector(`[name=\"${key}\"]`);\n if (element.matches('select[data-import]') && !element.querySelector(`option[value=\"${item.attributes[key]}\"]`)) {\n const optionElement = document.createElement('option');\n optionElement.value = item.attributes[key];\n optionElement.innerHTML = item.attributes[key];\n element.appendChild(optionElement);\n }\n element.value = item.attributes[key];\n }\n });\n }\n });\n };\n this.checkCriteria = (attributes, bucket) => {\n if (attributes[bucket])\n return true;\n return false;\n };\n this.checkBuckets = (attributes) => {\n const anyContainer = this.shadowRoot.querySelector('#any'); // TODO: rename\n let container = anyContainer;\n if (!this.hasAttribute('data-buckets'))\n return container;\n let buckets = [];\n let addedToBucket = false;\n // If data attribute set\n buckets = this.getAttribute('data-buckets').split(',');\n // TODO: If importing the config from a json file\n buckets.forEach((bucket) => {\n const addToBucket = !addedToBucket ? this.checkCriteria(attributes, bucket) : false;\n if (addToBucket) {\n addedToBucket = true;\n container = this.shadowRoot.querySelector(`[data-bucket=\"${bucket}\"]`);\n }\n });\n return container;\n };\n this.createForm = (item, bucketId = \"any\") => {\n var _a;\n const anyContainer = this.shadowRoot.querySelector(`#items [data-bucket=\"${bucketId}\"]`); // TODO: rename\n //const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename\n //const container = this.checkBuckets(item.attributes); TODO: re-enable\n const container = anyContainer;\n const formElement = (_a = this.querySelector(`form`)) === null || _a === void 0 ? void 0 : _a.cloneNode(true);\n //formTemplate.setAttribute('id', item.id);\n // TODO check if it matches a bucket\n container === null || container === void 0 ? void 0 : container.insertAdjacentElement('beforeend', formElement);\n //const formElement = container?.querySelector(`[id=\"${item.id}\"]`);\n formElement === null || formElement === void 0 ? void 0 : formElement.addEventListener('submit', (event) => {\n event.preventDefault();\n });\n this.addButtons(formElement);\n return formElement;\n };\n this.getCurrentIds = () => {\n var _a;\n const idsArr = [];\n Array.from((_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('#items form')).forEach((form) => {\n idsArr.push(parseInt(form.getAttribute('id')));\n });\n return idsArr;\n };\n this.generateId = () => {\n return Math.max(...this.getCurrentIds()) + 1;\n };\n this.addButtonEvents = (element, scrollIntoView = true) => {\n const upButton = element === null || element === void 0 ? void 0 : element.querySelector('[data-direction=\"up\"]');\n const downButton = element === null || element === void 0 ? void 0 : element.querySelector('[data-direction=\"down\"]');\n const deleteButton = element === null || element === void 0 ? void 0 : element.querySelector('[data-direction=\"delete\"]');\n upButton === null || upButton === void 0 ? void 0 : upButton.addEventListener('click', () => {\n if (element === null || element === void 0 ? void 0 : element.previousElementSibling) {\n element === null || element === void 0 ? void 0 : element.parentNode.insertBefore(element, element.previousElementSibling);\n if (scrollIntoView)\n element === null || element === void 0 ? void 0 : element.scrollIntoView({ behavior: \"instant\", block: \"center\" });\n }\n });\n downButton === null || downButton === void 0 ? void 0 : downButton.addEventListener('click', () => {\n if (element.nextElementSibling) {\n element === null || element === void 0 ? void 0 : element.parentNode.insertBefore(element, element.nextElementSibling.nextElementSibling);\n }\n else {\n element === null || element === void 0 ? void 0 : element.parentNode.insertAdjacentElement('beforeend', element);\n }\n if (scrollIntoView)\n element === null || element === void 0 ? void 0 : element.scrollIntoView({ behavior: \"instant\", block: \"center\" });\n });\n deleteButton === null || deleteButton === void 0 ? void 0 : deleteButton.addEventListener('click', () => {\n element.remove();\n });\n };\n this.addButtons = (form) => {\n form === null || form === void 0 ? void 0 : form.insertAdjacentHTML('beforeend', `<div class=\"btn__group\">${this.buttonHTML}</div>`);\n this.addButtonEvents(form);\n };\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/config.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = /* HTML */ `\n <style>\n ${loadCSS}\n </style>\n <div id=\"wrapper\">\n <div id=\"items\">\n <div id=\"buckets\"></div> \n <div id=\"any\" data-bucket=\"any\"></div>\n </div>\n <div class=\"admin-panel\">\n <button class=\"btn btn-action fa-plus\" command=\"add-bucket\">Add bucket</button>\n <button class=\"btn btn-action fa-plus\" command=\"add-item\">Add ${(_a = this.getAttribute('data-item-name')) !== null && _a !== void 0 ? _a : 'item'}</button> <!-- Changes to open a model if we want to validate the add form first -->\n\n </div>\n <button id=\"save\" class=\"btn btn-sm btn-primary fa-floppy-disk\" >Save items</button>\n </div>\n `;\n (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.appendChild(template.content.cloneNode(true));\n }\n importData(ajaxURL) {\n return __awaiter(this, void 0, void 0, function* () {\n // Setup controller vars if not already set\n if (!window.controller)\n window.controller = [];\n // Abort if controller already present for this url\n if (window.controller[ajaxURL])\n window.controller[ajaxURL].abort();\n // Create a new controller so it can be aborted if new fetch made\n window.controller[ajaxURL] = new AbortController();\n const { signal } = window.controller[ajaxURL];\n try {\n return yield fetch(ajaxURL, {\n signal: signal,\n method: 'get',\n credentials: 'same-origin',\n headers: new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),\n }),\n })\n .then((response) => response.json())\n .then((response) => {\n const returnData = response['data'] ? response['data'] : response;\n return returnData;\n });\n }\n catch (error) {\n //console.log(error);\n return 'There has been a problem. Please try again in a few moments.';\n }\n });\n }\n importAttributeData(comonponent) {\n return __awaiter(this, void 0, void 0, function* () {\n });\n }\n connectedCallback() {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b, _c, _d, _e;\n this.buttonHTML = /* HTML */ `\n <button class=\"btn btn-compact btn-sm mt-0 btn-secondary fa-trash\" type=\"button\" data-direction=\"delete\" title=\"Delete\">Delete</button>\n <button class=\"btn btn-compact btn-sm mt-0 btn-secondary fa-chevron-down\" type=\"button\" data-direction=\"down\" title=\"Move down\">Down</button>\n <button class=\"btn btn-compact btn-sm mt-0 btn-secondary fa-chevron-up\" type=\"button\" data-direction=\"up\" title=\"Move up\">Up</button>\n `;\n const dataImportUrl = this.getAttribute('data-import');\n const getBucketsData = this.getBucketsData;\n const createBuckets = this.createBuckets;\n const createForms = this.createForms;\n const createForm = this.createForm;\n const itemsContainer = this.shadowRoot.querySelector('#items'); // TODO: rename\n const anyContainer = this.shadowRoot.querySelector('#any'); // TODO: rename\n const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename\n const editBuckets = this.shadowRoot.querySelector('#editBuckets'); // TODO: rename\n const saveButton = this.shadowRoot.querySelector('#save');\n const addButton = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('[data-add-item]');\n const addForm = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#addForm');\n const editBucketsDialog = (_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#editBucketsDialog');\n const editBucketsForm = (_d = this.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('#editBucketsForm');\n const editBucketsFormSubmit = (_e = this.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('#editBucketsForm .btn-primary');\n const addBucketButton = this === null || this === void 0 ? void 0 : this.shadowRoot.querySelector('[command=\"add-bucket\"]');\n const addItemButton = this === null || this === void 0 ? void 0 : this.shadowRoot.querySelector('[command=\"add-item\"]');\n const templateForm = this === null || this === void 0 ? void 0 : this.querySelector('form');\n let editBucketsOriginalState = '';\n let buckets = [];\n // Prevent the template form from submitting anything\n templateForm === null || templateForm === void 0 ? void 0 : templateForm.addEventListener('submit', (event) => {\n event.preventDefault();\n });\n // TODO: add this to an on change event on the select\n Array.from(this.querySelectorAll('select[data-import]')).forEach((select) => __awaiter(this, void 0, void 0, function* () {\n const ajaxURL = select.getAttribute('data-import');\n this.importData(ajaxURL).then((data) => {\n if (typeof data == 'string')\n return data;\n data.forEach(item => {\n const optionElement = document.createElement('option');\n optionElement.value = item.id;\n optionElement.innerHTML = item.attributes.name;\n select.appendChild(optionElement);\n });\n return true;\n });\n }));\n // #region import data\n // TODO load from web storage if its newer\n const storedData = localStorage.getItem(`config-${this.getAttribute('data-name')}`);\n //const buckets = this.getBucketsData(); // TODO: load from local storage\n if (storedData) {\n //createForms(JSON.parse(storedData), buckets);\n }\n else if (dataImportUrl) {\n const dataImport = yield this.importData(dataImportUrl).then((data) => {\n if (typeof data == 'string')\n return data;\n const buckets = getBucketsData(data);\n if (buckets) {\n createBuckets(buckets);\n }\n createForms(data); // any bucket\n return true;\n });\n }\n // #endregion\n // #region Add buckets to edit modal\n /*\n editBucketsForm?.addEventListener('submit', (event) => {\n \n event.stopPropagation();\n event.preventDefault();\n \n if(event.submitter == editBucketsFormSubmit){\n \n // Clear what is there already\n //anyContainer?.innerHTML = '';\n \n Array.from(itemsContainer?.querySelectorAll('form')).forEach((formElement:HTMLElement, index):void => {\n \n anyContainer?.insertAdjacentElement('beforeend',formElement);\n });\n \n // Empty the buckets\n bucketsContainer?.innerHTML = '';\n \n // Load the new bucket data then recreate them\n const buckets = [];\n Array.from(editBuckets?.querySelectorAll('[data-bucket]')).forEach((editBucketElement:HTMLElement, index):void => {\n \n bucketsContainer?.insertAdjacentHTML('beforeend',`<div class=\"bucket\" data-bucket=\"${editBucketElement.getAttribute('data-bucket')}\"></div>`);\n \n const bucket = {}\n \n bucket.id = editBucketElement.getAttribute('data-bucket');\n bucket.attributes = {};\n \n bucket.attributes.name = editBucketElement.querySelector('[name=\"bucket\"]')?.value;\n \n //const formData = new FormData(editBucketElement);\n //const formDataObj = Object.fromEntries(formData.entries());\n // TODO cycle through the criteria forms\n \n buckets.push(bucket);\n });\n \n \n console.log(buckets);\n // this.createBuckets(buckets); TODO: re-enable\n \n /*\n // Move items back into buckets\n Array.from(itemsContainer?.querySelectorAll('form')).forEach((formElement:HTMLElement, index):void => {\n \n const formData = new FormData(formElement);\n const formDataObj = Object.fromEntries(formData.entries());\n const newContainer = this.checkBuckets(formDataObj);\n \n if(newContainer != anyContainer){\n newContainer?.insertAdjacentElement('beforeend',formElement);\n }\n });\n \n \n editBucketsOriginalState = editBuckets.innerHTML;\n }\n \n editBucketsDialog?.close();\n });\n */\n /*\n \n addBucketButton?.addEventListener('click', (event) => {\n \n const editBucket = document.createElement('div');\n editBucket.classList.add('bucket--edit');\n editBucket.innerHTML = this.addBucketHTML();\n \n editBuckets?.insertAdjacentElement('beforeend', editBucket)\n \n this.addButtonEvents(editBucket,false);\n const expandButton = editBucket?.querySelector('[data-expand]');\n \n expandButton?.addEventListener('click',() => {\n \n editBucket.classList.toggle('bucket--expanded');\n });\n });\n \n */\n // #endregion\n // #region add data\n addItemButton === null || addItemButton === void 0 ? void 0 : addItemButton.addEventListener(\"click\", (event) => {\n const form = this.createForm({});\n form === null || form === void 0 ? void 0 : form.scrollIntoView({ behavior: \"instant\", block: \"center\" });\n // TODO scroll into view\n });\n addBucketButton === null || addBucketButton === void 0 ? void 0 : addBucketButton.addEventListener(\"click\", (event) => {\n const bucket = this.createBucket({});\n bucket === null || bucket === void 0 ? void 0 : bucket.scrollIntoView({ behavior: \"instant\", block: \"center\" });\n });\n // #endregion\n // #region update values\n this.shadowRoot.addEventListener('change', (event) => {\n const container = event.target.closest('[data-bucket]');\n if (!container)\n return false;\n const attribute = event.target.name;\n const value = event.target.value;\n const attributes = {};\n attributes[attribute] = value;\n const newContainer = this.checkBuckets(attributes);\n if (newContainer != container) {\n const form = event.target.closest(`form`);\n // TODO a confirmation modal\n newContainer === null || newContainer === void 0 ? void 0 : newContainer.insertAdjacentElement('beforeend', form);\n form === null || form === void 0 ? void 0 : form.scrollIntoView({ behavior: \"instant\", block: \"center\" });\n }\n });\n // #endregion\n // #region save data\n saveButton === null || saveButton === void 0 ? void 0 : saveButton.addEventListener('click', (event) => {\n event.preventDefault();\n // TODO validation\n const entries = [];\n // Save buckets data\n Array.from(itemsContainer === null || itemsContainer === void 0 ? void 0 : itemsContainer.querySelectorAll('.bucket__wrapper')).forEach((bucketElement, index) => {\n const bucket = {};\n bucket.attributes = {};\n bucket.id = bucketElement === null || bucketElement === void 0 ? void 0 : bucketElement.querySelector('[name=\"bucket\"]').value;\n bucket.type = 'bucket';\n bucket.attributes.index = index;\n const criteria = [];\n // TODO populate criteria\n Array.from(bucketElement === null || bucketElement === void 0 ? void 0 : bucketElement.querySelectorAll('.criteria--container form')).forEach((formElement, criteriaIndex) => {\n const item = {};\n //item.id = formElement.getAttribute('id');\n item.type = 'criteria';\n item.index = criteriaIndex;\n const formData = new FormData(formElement);\n const formDataObj = Object.fromEntries(formData.entries());\n item.attributes = formDataObj;\n criteria.push(item);\n });\n bucket.attributes.criteria = criteria;\n const items = [];\n Array.from(bucketElement === null || bucketElement === void 0 ? void 0 : bucketElement.querySelectorAll('[data-bucket] form')).forEach((formElement, itemIndex) => {\n const item = {};\n //item.id = formElement.getAttribute('id');\n item.type = 'item';\n item.index = itemIndex;\n const formData = new FormData(formElement);\n const formDataObj = Object.fromEntries(formData.entries());\n item.attributes = formDataObj;\n items.push(item);\n });\n bucket.attributes.items = items;\n entries.push(bucket);\n });\n Array.from(itemsContainer === null || itemsContainer === void 0 ? void 0 : itemsContainer.querySelectorAll('[data-bucket=\"any\"] form')).forEach((formElement, index) => {\n const entry = {};\n //entry.id = formElement.getAttribute('id');\n entry.type = 'item';\n entry.index = index;\n const formData = new FormData(formElement);\n const formDataObj = Object.fromEntries(formData.entries());\n entry.attributes = formDataObj;\n entries.push(entry);\n });\n const entriesJson = JSON.stringify(entries);\n console.log(entries);\n // TODO add toast message\n // TODO save locally for now but when pushing to endpoint the web storage file should get deleted\n //localStorage.setItem(`config-${this.getAttribute('data-name')}`, entriesJson);\n //const bucketsJson = JSON.stringify(buckets);\n //localStorage.setItem(`config-buckets-${this.getAttribute('data-name')}`, bucketsJson);\n });\n // #endregion\n });\n }\n}\nexport default iamConfig;\n"],"names":["assign","target","i","source","key","defaultConverter","value","init","converter","defaultAttributes","set","name","attributes","stringifiedAttributes","attributeName","get","cookies","jar","parts","found","api","trackComponentRegistered","componentName","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","e","rejected","result","iamConfig","_a","_b","data","buckets","bucket","bucketsContainer","bucketElement","criteriaContainer","criteria","_c","criteriaForm","attribute","form","formData","formDataObj","optionsHtml","expandButton","bucketId","item","formElement","element","optionElement","container","addedToBucket","event","idsArr","scrollIntoView","upButton","downButton","deleteButton","template","ajaxURL","signal","Cookies","response","comonponent","_d","_e","dataImportUrl","getBucketsData","createBuckets","createForms","itemsContainer","saveButton","addBucketButton","addItemButton","templateForm","select","newContainer","entries","index","criteriaIndex","items","itemIndex","entry"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"config.component.min.js","sources":["../../../../node_modules/js-cookie/dist/js.cookie.mjs","../_global.js","config.component.js"],"sourcesContent":["/*! js-cookie v3.0.7 | MIT */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (key === '__proto__') continue\n target[key] = source[key];\n }\n }\n return target\n}\n\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n\nfunction init(converter, defaultAttributes) {\n function set(name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get(name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n if (!(found in jar)) jar[found] = converter.read(value, found);\n if (name === found) {\n break\n }\n } catch {\n // Do nothing...\n }\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n\nexport { api as default };\n","export const trackComponentRegistered = (componentName) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementRegistered',\n element: componentName,\n });\n};\nexport const trackComponent = (component, componentName, trackEvents) => {\n // Data layer Web component created\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'customElementAdded',\n element: componentName,\n });\n trackEvents.forEach((eventName) => {\n component.addEventListener(eventName, function (event) {\n const eventDetails = {\n event: eventName,\n element: componentName,\n target: event.target,\n };\n Object.keys(event.detail).forEach((eventKey) => {\n const eventDetail = event.detail[eventKey];\n eventDetails[eventKey] = eventDetail;\n });\n window.dataLayer.push(eventDetails);\n });\n });\n return true;\n};\n","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};\nimport Cookies from '../../../../node_modules/js-cookie/dist/js.cookie.mjs';\nimport { trackComponentRegistered } from '../_global';\ntrackComponentRegistered('iam-config');\nclass iamConfig extends HTMLElement {\n constructor() {\n var _a, _b;\n super();\n this.getBucketsData = (data) => {\n if (!data)\n return [];\n const buckets = [];\n // TODO: check local storage first\n data.forEach(bucket => {\n var _a, _b;\n if (typeof ((_a = bucket.attributes) === null || _a === void 0 ? void 0 : _a.criteria) == \"object\" && Array.isArray((_b = bucket.attributes) === null || _b === void 0 ? void 0 : _b.criteria)) {\n buckets.push(bucket);\n }\n });\n return buckets;\n };\n this.createBuckets = (buckets) => {\n console.log(buckets);\n const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename\n if (!buckets)\n return false;\n buckets.forEach((bucket) => {\n this.createBucket(bucket);\n });\n return true;\n };\n this.createBucket = (bucket) => {\n const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename\n const bucketElement = document.createElement('div');\n bucketElement.innerHTML = this.addBucketHTML(bucket);\n //bucketElement.setAttribute('data-bucket',bucket.id);\n bucketElement.classList.add('bucket__wrapper');\n bucketsContainer === null || bucketsContainer === void 0 ? void 0 : bucketsContainer.insertAdjacentElement('beforeend', bucketElement);\n //this.addButtonEvents(bucketElement,true);\n this.createEditBucketsEvents(bucketElement);\n const criteriaContainer = bucketElement.querySelector('.criteria--container');\n if (bucket.attributes) {\n bucket.attributes.criteria.forEach((criteria) => {\n var _a, _b, _c;\n const criteriaForm = document.createElement('form');\n criteriaForm.classList.add('criteria');\n criteriaForm.innerHTML = this.addCriteriaHTML(criteria.attributes);\n // TODO add to HTML\n (_a = criteriaForm.querySelector('[name=\"attribute\"]')) === null || _a === void 0 ? void 0 : _a.value = criteria.attributes.attribute;\n (_b = criteriaForm.querySelector('[name=\"rule\"]')) === null || _b === void 0 ? void 0 : _b.value = criteria.attributes.rule;\n (_c = criteriaForm.querySelector('[name=\"match\"]')) === null || _c === void 0 ? void 0 : _c.value = criteria.attributes.match;\n criteriaContainer === null || criteriaContainer === void 0 ? void 0 : criteriaContainer.appendChild(criteriaForm);\n // TODO add buttons\n // TODO add events\n });\n this.createForms(bucket.attributes.items, bucket.id);\n }\n return bucketElement;\n };\n this.addCriteriaHTML = (attributes) => {\n return /*HTML*/ `<label>\n <span class=\"visually-hidden\">Attribute</span>\n ${this.createCriteriaDropdown(attributes.attribute)}\n </label>\n <label>\n <span class=\"visually-hidden\">Rule</span>\n <select name=\"rule\" class=\"mt-0 select--sm\">\n <option value=\"set\">is not empty</option>\n <option value=\"empty\">is empty</option>\n <option value=\"equals\">equals</option>\n <option value=\"not\">is not</option>\n <option value=\"greater\">greater than</option>\n <option value=\"less\">less than</option>\n </select>\n </label>\n <label>\n <span class=\"visually-hidden\">Match</span>\n <input type=\"text\" name=\"match\" class=\"mt-0 input--sm\" /> <!-- TODO Add datalist or transform into select -->\n </label>\n <div class=\"btn__group\">\n <button class=\"btn btn-compact btn-sm mt-0 btn-secondary fa-plus\" type=\"button\" data-direction=\"add\" title=\"Delete\">Add</button>\n <button class=\"btn btn-compact btn-sm mt-0 btn-secondary fa-trash\" type=\"button\" data-direction=\"delete\" title=\"Delete\">Delete</button>\n </div>`;\n };\n this.addBucketHTML = (bucket) => {\n var _a, _b, _c;\n return /*HTML*/ `<label>\n <span class=\"visually-hidden\">Name</span>\n <input type=\"text\" name=\"bucket\" value=\"${(_b = (_a = bucket.attributes) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : ''}\"/>\n </label>\n <div class=\"btn__group text-end\"><button class=\"btn btn-compact btn-sm mt-0 btn-secondary fa-pen-to-square\" data-expand title=\"Expand to see more options\">Edit</button>${this.buttonHTML}</div>\n <div class=\"criteria--container\">\n </div>\n <div data-bucket=\"${(_c = bucket.id) !== null && _c !== void 0 ? _c : ''}\" class=\"bucket\">\n </div>`;\n };\n this.createCriteriaDropdown = (attribute) => {\n const form = this.querySelector('form');\n const formData = new FormData(form);\n const formDataObj = Object.fromEntries(formData.entries());\n let optionsHtml = '';\n Object.keys(formDataObj).forEach(function (key) {\n optionsHtml += `<option value=\"${key}\" ${key == attribute ? ' selected=\"selected\"' : ''}>${key}</option>`;\n });\n return `<select name=\"attributes[criteria]\" class=\"mt-0 select--sm\">\n <option value=\"\"></option>\n ${optionsHtml}\n </select>`;\n };\n this.createEditBucketsEvents = (bucket) => {\n this.addButtonEvents(bucket, true);\n const expandButton = bucket === null || bucket === void 0 ? void 0 : bucket.querySelector('[data-expand]');\n expandButton === null || expandButton === void 0 ? void 0 : expandButton.addEventListener('click', () => {\n bucket.classList.toggle('bucket--expanded');\n });\n };\n this.createForms = (data, bucketId = \"any\") => {\n data.forEach(item => {\n var _a;\n if (typeof ((_a = item.attributes) === null || _a === void 0 ? void 0 : _a.criteria) == \"undefined\") {\n const formElement = this.createForm(item, bucketId);\n Object.keys(item.attributes).forEach(function (key) {\n if (formElement.querySelector(`[name=\"${key}\"]`)) {\n const element = formElement.querySelector(`[name=\"${key}\"]`);\n if (element.matches('select[data-import]') && !element.querySelector(`option[value=\"${item.attributes[key]}\"]`)) {\n const optionElement = document.createElement('option');\n optionElement.value = item.attributes[key];\n optionElement.innerHTML = item.attributes[key];\n element.appendChild(optionElement);\n }\n element.value = item.attributes[key];\n }\n });\n }\n });\n };\n this.checkCriteria = (attributes, bucket) => {\n if (attributes[bucket])\n return true;\n return false;\n };\n this.checkBuckets = (attributes) => {\n const anyContainer = this.shadowRoot.querySelector('#any'); // TODO: rename\n let container = anyContainer;\n if (!this.hasAttribute('data-buckets'))\n return container;\n let buckets = [];\n let addedToBucket = false;\n // If data attribute set\n buckets = this.getAttribute('data-buckets').split(',');\n // TODO: If importing the config from a json file\n buckets.forEach((bucket) => {\n const addToBucket = !addedToBucket ? this.checkCriteria(attributes, bucket) : false;\n if (addToBucket) {\n addedToBucket = true;\n container = this.shadowRoot.querySelector(`[data-bucket=\"${bucket}\"]`);\n }\n });\n return container;\n };\n this.createForm = (item, bucketId = \"any\") => {\n var _a;\n const anyContainer = this.shadowRoot.querySelector(`#items [data-bucket=\"${bucketId}\"]`); // TODO: rename\n //const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename\n //const container = this.checkBuckets(item.attributes); TODO: re-enable\n const container = anyContainer;\n const formElement = (_a = this.querySelector(`form`)) === null || _a === void 0 ? void 0 : _a.cloneNode(true);\n //formTemplate.setAttribute('id', item.id);\n // TODO check if it matches a bucket\n container === null || container === void 0 ? void 0 : container.insertAdjacentElement('beforeend', formElement);\n //const formElement = container?.querySelector(`[id=\"${item.id}\"]`);\n formElement === null || formElement === void 0 ? void 0 : formElement.addEventListener('submit', (event) => {\n event.preventDefault();\n });\n this.addButtons(formElement);\n return formElement;\n };\n this.getCurrentIds = () => {\n var _a;\n const idsArr = [];\n Array.from((_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('#items form')).forEach((form) => {\n idsArr.push(parseInt(form.getAttribute('id')));\n });\n return idsArr;\n };\n this.generateId = () => {\n return Math.max(...this.getCurrentIds()) + 1;\n };\n this.addButtonEvents = (element, scrollIntoView = true) => {\n const upButton = element === null || element === void 0 ? void 0 : element.querySelector('[data-direction=\"up\"]');\n const downButton = element === null || element === void 0 ? void 0 : element.querySelector('[data-direction=\"down\"]');\n const deleteButton = element === null || element === void 0 ? void 0 : element.querySelector('[data-direction=\"delete\"]');\n upButton === null || upButton === void 0 ? void 0 : upButton.addEventListener('click', () => {\n if (element === null || element === void 0 ? void 0 : element.previousElementSibling) {\n element === null || element === void 0 ? void 0 : element.parentNode.insertBefore(element, element.previousElementSibling);\n if (scrollIntoView)\n element === null || element === void 0 ? void 0 : element.scrollIntoView({ behavior: \"instant\", block: \"center\" });\n }\n });\n downButton === null || downButton === void 0 ? void 0 : downButton.addEventListener('click', () => {\n if (element.nextElementSibling) {\n element === null || element === void 0 ? void 0 : element.parentNode.insertBefore(element, element.nextElementSibling.nextElementSibling);\n }\n else {\n element === null || element === void 0 ? void 0 : element.parentNode.insertAdjacentElement('beforeend', element);\n }\n if (scrollIntoView)\n element === null || element === void 0 ? void 0 : element.scrollIntoView({ behavior: \"instant\", block: \"center\" });\n });\n deleteButton === null || deleteButton === void 0 ? void 0 : deleteButton.addEventListener('click', () => {\n element.remove();\n });\n };\n this.addButtons = (form) => {\n form === null || form === void 0 ? void 0 : form.insertAdjacentHTML('beforeend', `<div class=\"btn__group\">${this.buttonHTML}</div>`);\n this.addButtonEvents(form);\n };\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/config.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = /* HTML */ `\n <style>\n ${loadCSS}\n </style>\n <div id=\"wrapper\">\n <div id=\"items\">\n <div id=\"buckets\"></div> \n <div id=\"any\" data-bucket=\"any\"></div>\n </div>\n <div class=\"admin-panel\">\n <button class=\"btn btn-action fa-plus\" command=\"add-bucket\">Add bucket</button>\n <button class=\"btn btn-action fa-plus\" command=\"add-item\">Add ${(_a = this.getAttribute('data-item-name')) !== null && _a !== void 0 ? _a : 'item'}</button> <!-- Changes to open a model if we want to validate the add form first -->\n\n </div>\n <button id=\"save\" class=\"btn btn-sm btn-primary fa-floppy-disk\" >Save items</button>\n </div>\n `;\n (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.appendChild(template.content.cloneNode(true));\n }\n importData(ajaxURL) {\n return __awaiter(this, void 0, void 0, function* () {\n // Setup controller vars if not already set\n if (!window.controller)\n window.controller = [];\n // Abort if controller already present for this url\n if (window.controller[ajaxURL])\n window.controller[ajaxURL].abort();\n // Create a new controller so it can be aborted if new fetch made\n window.controller[ajaxURL] = new AbortController();\n const { signal } = window.controller[ajaxURL];\n try {\n return yield fetch(ajaxURL, {\n signal: signal,\n method: 'get',\n credentials: 'same-origin',\n headers: new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),\n }),\n })\n .then((response) => response.json())\n .then((response) => {\n const returnData = response['data'] ? response['data'] : response;\n return returnData;\n });\n }\n catch (error) {\n //console.log(error);\n return 'There has been a problem. Please try again in a few moments.';\n }\n });\n }\n importAttributeData(comonponent) {\n return __awaiter(this, void 0, void 0, function* () {\n });\n }\n connectedCallback() {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b, _c, _d, _e;\n this.buttonHTML = /* HTML */ `\n <button class=\"btn btn-compact btn-sm mt-0 btn-secondary fa-trash\" type=\"button\" data-direction=\"delete\" title=\"Delete\">Delete</button>\n <button class=\"btn btn-compact btn-sm mt-0 btn-secondary fa-chevron-down\" type=\"button\" data-direction=\"down\" title=\"Move down\">Down</button>\n <button class=\"btn btn-compact btn-sm mt-0 btn-secondary fa-chevron-up\" type=\"button\" data-direction=\"up\" title=\"Move up\">Up</button>\n `;\n const dataImportUrl = this.getAttribute('data-import');\n const getBucketsData = this.getBucketsData;\n const createBuckets = this.createBuckets;\n const createForms = this.createForms;\n const createForm = this.createForm;\n const itemsContainer = this.shadowRoot.querySelector('#items'); // TODO: rename\n const anyContainer = this.shadowRoot.querySelector('#any'); // TODO: rename\n const bucketsContainer = this.shadowRoot.querySelector('#buckets'); // TODO: rename\n const editBuckets = this.shadowRoot.querySelector('#editBuckets'); // TODO: rename\n const saveButton = this.shadowRoot.querySelector('#save');\n const addButton = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('[data-add-item]');\n const addForm = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#addForm');\n const editBucketsDialog = (_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#editBucketsDialog');\n const editBucketsForm = (_d = this.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('#editBucketsForm');\n const editBucketsFormSubmit = (_e = this.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('#editBucketsForm .btn-primary');\n const addBucketButton = this === null || this === void 0 ? void 0 : this.shadowRoot.querySelector('[command=\"add-bucket\"]');\n const addItemButton = this === null || this === void 0 ? void 0 : this.shadowRoot.querySelector('[command=\"add-item\"]');\n const templateForm = this === null || this === void 0 ? void 0 : this.querySelector('form');\n let editBucketsOriginalState = '';\n let buckets = [];\n // Prevent the template form from submitting anything\n templateForm === null || templateForm === void 0 ? void 0 : templateForm.addEventListener('submit', (event) => {\n event.preventDefault();\n });\n // TODO: add this to an on change event on the select\n Array.from(this.querySelectorAll('select[data-import]')).forEach((select) => __awaiter(this, void 0, void 0, function* () {\n const ajaxURL = select.getAttribute('data-import');\n this.importData(ajaxURL).then((data) => {\n if (typeof data == 'string')\n return data;\n data.forEach(item => {\n const optionElement = document.createElement('option');\n optionElement.value = item.id;\n optionElement.innerHTML = item.attributes.name;\n select.appendChild(optionElement);\n });\n return true;\n });\n }));\n // #region import data\n // TODO load from web storage if its newer\n const storedData = localStorage.getItem(`config-${this.getAttribute('data-name')}`);\n //const buckets = this.getBucketsData(); // TODO: load from local storage\n if (storedData) {\n //createForms(JSON.parse(storedData), buckets);\n }\n else if (dataImportUrl) {\n const dataImport = yield this.importData(dataImportUrl).then((data) => {\n if (typeof data == 'string')\n return data;\n const buckets = getBucketsData(data);\n if (buckets) {\n createBuckets(buckets);\n }\n createForms(data); // any bucket\n return true;\n });\n }\n // #endregion\n // #region Add buckets to edit modal\n /*\n editBucketsForm?.addEventListener('submit', (event) => {\n \n event.stopPropagation();\n event.preventDefault();\n \n if(event.submitter == editBucketsFormSubmit){\n \n // Clear what is there already\n //anyContainer?.innerHTML = '';\n \n Array.from(itemsContainer?.querySelectorAll('form')).forEach((formElement:HTMLElement, index):void => {\n \n anyContainer?.insertAdjacentElement('beforeend',formElement);\n });\n \n // Empty the buckets\n bucketsContainer?.innerHTML = '';\n \n // Load the new bucket data then recreate them\n const buckets = [];\n Array.from(editBuckets?.querySelectorAll('[data-bucket]')).forEach((editBucketElement:HTMLElement, index):void => {\n \n bucketsContainer?.insertAdjacentHTML('beforeend',`<div class=\"bucket\" data-bucket=\"${editBucketElement.getAttribute('data-bucket')}\"></div>`);\n \n const bucket = {}\n \n bucket.id = editBucketElement.getAttribute('data-bucket');\n bucket.attributes = {};\n \n bucket.attributes.name = editBucketElement.querySelector('[name=\"bucket\"]')?.value;\n \n //const formData = new FormData(editBucketElement);\n //const formDataObj = Object.fromEntries(formData.entries());\n // TODO cycle through the criteria forms\n \n buckets.push(bucket);\n });\n \n \n console.log(buckets);\n // this.createBuckets(buckets); TODO: re-enable\n \n /*\n // Move items back into buckets\n Array.from(itemsContainer?.querySelectorAll('form')).forEach((formElement:HTMLElement, index):void => {\n \n const formData = new FormData(formElement);\n const formDataObj = Object.fromEntries(formData.entries());\n const newContainer = this.checkBuckets(formDataObj);\n \n if(newContainer != anyContainer){\n newContainer?.insertAdjacentElement('beforeend',formElement);\n }\n });\n \n \n editBucketsOriginalState = editBuckets.innerHTML;\n }\n \n editBucketsDialog?.close();\n });\n */\n /*\n \n addBucketButton?.addEventListener('click', (event) => {\n \n const editBucket = document.createElement('div');\n editBucket.classList.add('bucket--edit');\n editBucket.innerHTML = this.addBucketHTML();\n \n editBuckets?.insertAdjacentElement('beforeend', editBucket)\n \n this.addButtonEvents(editBucket,false);\n const expandButton = editBucket?.querySelector('[data-expand]');\n \n expandButton?.addEventListener('click',() => {\n \n editBucket.classList.toggle('bucket--expanded');\n });\n });\n \n */\n // #endregion\n // #region add data\n addItemButton === null || addItemButton === void 0 ? void 0 : addItemButton.addEventListener(\"click\", (event) => {\n const form = this.createForm({});\n form === null || form === void 0 ? void 0 : form.scrollIntoView({ behavior: \"instant\", block: \"center\" });\n // TODO scroll into view\n });\n addBucketButton === null || addBucketButton === void 0 ? void 0 : addBucketButton.addEventListener(\"click\", (event) => {\n const bucket = this.createBucket({});\n bucket === null || bucket === void 0 ? void 0 : bucket.scrollIntoView({ behavior: \"instant\", block: \"center\" });\n });\n // #endregion\n // #region update values\n this.shadowRoot.addEventListener('change', (event) => {\n const container = event.target.closest('[data-bucket]');\n if (!container)\n return false;\n const attribute = event.target.name;\n const value = event.target.value;\n const attributes = {};\n attributes[attribute] = value;\n const newContainer = this.checkBuckets(attributes);\n if (newContainer != container) {\n const form = event.target.closest(`form`);\n // TODO a confirmation modal\n newContainer === null || newContainer === void 0 ? void 0 : newContainer.insertAdjacentElement('beforeend', form);\n form === null || form === void 0 ? void 0 : form.scrollIntoView({ behavior: \"instant\", block: \"center\" });\n }\n });\n // #endregion\n // #region save data\n saveButton === null || saveButton === void 0 ? void 0 : saveButton.addEventListener('click', (event) => {\n event.preventDefault();\n // TODO validation\n const entries = [];\n // Save buckets data\n Array.from(itemsContainer === null || itemsContainer === void 0 ? void 0 : itemsContainer.querySelectorAll('.bucket__wrapper')).forEach((bucketElement, index) => {\n const bucket = {};\n bucket.attributes = {};\n bucket.id = bucketElement === null || bucketElement === void 0 ? void 0 : bucketElement.querySelector('[name=\"bucket\"]').value;\n bucket.type = 'bucket';\n bucket.attributes.index = index;\n const criteria = [];\n // TODO populate criteria\n Array.from(bucketElement === null || bucketElement === void 0 ? void 0 : bucketElement.querySelectorAll('.criteria--container form')).forEach((formElement, criteriaIndex) => {\n const item = {};\n //item.id = formElement.getAttribute('id');\n item.type = 'criteria';\n item.index = criteriaIndex;\n const formData = new FormData(formElement);\n const formDataObj = Object.fromEntries(formData.entries());\n item.attributes = formDataObj;\n criteria.push(item);\n });\n bucket.attributes.criteria = criteria;\n const items = [];\n Array.from(bucketElement === null || bucketElement === void 0 ? void 0 : bucketElement.querySelectorAll('[data-bucket] form')).forEach((formElement, itemIndex) => {\n const item = {};\n //item.id = formElement.getAttribute('id');\n item.type = 'item';\n item.index = itemIndex;\n const formData = new FormData(formElement);\n const formDataObj = Object.fromEntries(formData.entries());\n item.attributes = formDataObj;\n items.push(item);\n });\n bucket.attributes.items = items;\n entries.push(bucket);\n });\n Array.from(itemsContainer === null || itemsContainer === void 0 ? void 0 : itemsContainer.querySelectorAll('[data-bucket=\"any\"] form')).forEach((formElement, index) => {\n const entry = {};\n //entry.id = formElement.getAttribute('id');\n entry.type = 'item';\n entry.index = index;\n const formData = new FormData(formElement);\n const formDataObj = Object.fromEntries(formData.entries());\n entry.attributes = formDataObj;\n entries.push(entry);\n });\n const entriesJson = JSON.stringify(entries);\n console.log(entries);\n // TODO add toast message\n // TODO save locally for now but when pushing to endpoint the web storage file should get deleted\n //localStorage.setItem(`config-${this.getAttribute('data-name')}`, entriesJson);\n //const bucketsJson = JSON.stringify(buckets);\n //localStorage.setItem(`config-buckets-${this.getAttribute('data-name')}`, bucketsJson);\n });\n // #endregion\n });\n }\n}\nexport default iamConfig;\n"],"names":["assign","target","i","source","key","defaultConverter","value","init","converter","defaultAttributes","set","name","attributes","stringifiedAttributes","attributeName","get","cookies","jar","parts","found","api","trackComponentRegistered","componentName","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","e","rejected","result","iamConfig","_a","_b","data","buckets","bucket","bucketsContainer","bucketElement","criteriaContainer","criteria","_c","criteriaForm","attribute","form","formData","formDataObj","optionsHtml","expandButton","bucketId","item","formElement","element","optionElement","container","addedToBucket","event","idsArr","scrollIntoView","upButton","downButton","deleteButton","template","ajaxURL","signal","Cookies","response","comonponent","_d","_e","dataImportUrl","getBucketsData","createBuckets","createForms","itemsContainer","saveButton","addBucketButton","addItemButton","templateForm","select","newContainer","entries","index","criteriaIndex","items","itemIndex","entry"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,34 +1,7 @@
1
- import { transformButtons } from '../../modules/content';
1
+ import { createTitle, replaceShortcode, transformElement, transformButtons, loadComponents } from '../../modules/content';
2
2
  class iamContent extends HTMLElement {
3
3
  constructor() {
4
4
  super();
5
- this.addTitle = (title) => {
6
- if (this.hasAttribute('data-title-tag')) {
7
- return `<${this.getAttribute('data-title-tag')} class="${this.getAttribute('data-title-class')} iam-content--title">${title}</${this.getAttribute('data-title-tag')}>`;
8
- }
9
- return '';
10
- };
11
- this.fixContent = (component) => {
12
- const transform = component.getAttribute('data-transform');
13
- let wrapper = component;
14
- if (transform) {
15
- component.querySelectorAll(`${transform} > *:empty`).forEach((element) => {
16
- element.remove();
17
- });
18
- wrapper = component.querySelector(`${transform}`);
19
- }
20
- else {
21
- component.querySelectorAll(`:scope > *:empty`).forEach((element) => {
22
- element.remove();
23
- });
24
- }
25
- const itemClass = component.getAttribute('data-items-class');
26
- if (itemClass) {
27
- wrapper.querySelectorAll(`:scope > *`).forEach((element) => {
28
- element.classList.add(itemClass);
29
- });
30
- }
31
- };
32
5
  this.attachShadow({ mode: 'open' });
33
6
  const assetLocation = document.body.hasAttribute('data-assets-location')
34
7
  ? document.body.getAttribute('data-assets-location')
@@ -49,39 +22,6 @@ class iamContent extends HTMLElement {
49
22
  // eslint-disable-next-line @typescript-eslint/no-this-alias
50
23
  const component = this;
51
24
  const url = this.getAttribute('data-url');
52
- const transform = this.getAttribute('data-transform');
53
- const fixContent = this.fixContent;
54
- let elementAttributes = '';
55
- for (const attr of this.attributes) {
56
- elementAttributes += `${attr.name}="${attr.value}" `;
57
- }
58
- const addTitle = this.addTitle;
59
- const registerComponents = (contentComponent) => {
60
- const components = ['skeleton', 'bone', 'carousel', 'card', 'banner', 'notification'];
61
- const assetLocation = document.body.hasAttribute('data-assets-location')
62
- ? document.body.getAttribute('data-assets-location')
63
- : '/assets';
64
- // Load components - Each component will load once the first of its type has been loaded
65
- components.forEach((component) => {
66
- if (component == 'notification') {
67
- document.querySelectorAll('[data-notification]').forEach((element) => {
68
- element.outerHTML = element.outerHTML
69
- .replace(/<div/g, '<iam-notification')
70
- .replace(/<\/div>/g, '</iam-notification>');
71
- });
72
- }
73
- if (contentComponent.getElementsByTagName(`iam-${component}`).length === 0)
74
- return;
75
- import(/* @vite-ignore */ `${assetLocation}/js/components/${component}/${component}.component.js`)
76
- .then((module) => {
77
- if (!window.customElements.get(`iam-${component}`))
78
- window.customElements.define(`iam-${component}`, module.default);
79
- })
80
- .catch((err) => {
81
- console.log(err.message);
82
- });
83
- });
84
- };
85
25
  if (url) {
86
26
  const newXHRRequest = new XMLHttpRequest();
87
27
  newXHRRequest.open('GET', url, true);
@@ -91,26 +31,45 @@ class iamContent extends HTMLElement {
91
31
  let response = JSON.parse(this.responseText);
92
32
  if (Array.isArray(response))
93
33
  response = response[0];
94
- const renderedContent = response.content.rendered.replaceAll(/<p>\[(.*)\]<\/p>/g, "<span data-shortcode=\"$1\"><iam-skeleton><iam-bone class=\"search\"></iam-bone></iam-skeleton></span>");
34
+ // Create the rendered content block and maintain any shortcodes
35
+ const renderedContent = replaceShortcode(response.content.rendered);
36
+ // Update the content title
95
37
  (_b = (_a = component.parentElement) === null || _a === void 0 ? void 0 : _a.querySelector('.iam-content--title')) === null || _b === void 0 ? void 0 : _b.remove();
96
- component.insertAdjacentHTML('beforebegin', addTitle(response.title.rendered));
97
- if (transform) {
98
- component.innerHTML = `<${transform} ${elementAttributes}>${renderedContent}</${transform}>`;
38
+ const renderedTitle = createTitle(component, response.title.rendered);
39
+ // Transform the component if required
40
+ if (component.hasAttribute('data-transform')) {
41
+ component.innerHTML = transformElement(component, renderedTitle, renderedContent);
99
42
  component.removeAttribute('class');
43
+ component.querySelectorAll(`${component.getAttribute('data-transform')} > *:empty`).forEach((element) => {
44
+ element.remove();
45
+ });
100
46
  }
101
47
  else {
48
+ component.insertAdjacentHTML('beforebegin', renderedTitle);
102
49
  component.innerHTML = `${renderedContent}`;
50
+ component.querySelectorAll(`:scope > *:empty`).forEach((element) => {
51
+ element.remove();
52
+ });
103
53
  }
104
- fixContent(component);
105
- registerComponents(component);
106
- transformButtons(component);
54
+ // Load components - Each component will load once the first of its type has been loaded
55
+ loadComponents(component);
56
+ // Transform the buttons
57
+ Array.from(document.querySelectorAll('.wp-block-buttons')).forEach((buttons) => {
58
+ const fragment = transformButtons(buttons);
59
+ buttons.parentNode.replaceChild(fragment, buttons);
60
+ });
61
+ // This allows for content added dynamically via the standardised nav to be added after the content is loaded
107
62
  Array.from(document.querySelectorAll('[data-variable]')).forEach((element) => {
108
63
  var _a;
109
64
  if (document.querySelector(`[data-save-variable="${element.getAttribute('data-variable')}"][data-variable-value]`))
110
65
  element.innerHTML = (_a = document.querySelector(`[data-save-variable="${element.getAttribute('data-variable')}"][data-variable-value]`)) === null || _a === void 0 ? void 0 : _a.getAttribute('data-variable-value');
111
66
  });
112
- const changeEvent = new CustomEvent('loaded', { detail: { triggered: true } });
67
+ // Dispatch the loaded event for external JS and save to the data layer
68
+ const eventDetails = { url: url };
69
+ const changeEvent = new CustomEvent('content-loaded', { detail: eventDetails });
113
70
  component === null || component === void 0 ? void 0 : component.dispatchEvent(changeEvent);
71
+ window.dataLayer = window.dataLayer || [];
72
+ window.dataLayer.push(Object.assign({ 'event': 'content-loaded' }, eventDetails));
114
73
  }
115
74
  };
116
75
  newXHRRequest.send();
@@ -1,13 +1,13 @@
1
1
  /*!
2
- * iamKey v7.8.2--beta3
2
+ * iamKey v7.8.2--beta4
3
3
  * Copyright 2022-2026 iamproperty
4
- */const u=g=>{Array.from(document.querySelectorAll(".wp-block-buttons")).forEach(t=>{const e=document.createDocumentFragment();Array.from(t.querySelectorAll(".wp-block-button")).forEach(o=>{const i=o.querySelector("a");i.setAttribute("class",o.getAttribute("class")),e.appendChild(i)}),t.parentNode.replaceChild(e,t)})};class f extends HTMLElement{constructor(){super(),this.addTitle=e=>this.hasAttribute("data-title-tag")?`<${this.getAttribute("data-title-tag")} class="${this.getAttribute("data-title-class")} iam-content--title">${e}</${this.getAttribute("data-title-tag")}>`:"",this.fixContent=e=>{const o=e.getAttribute("data-transform");let i=e;o?(e.querySelectorAll(`${o} > *:empty`).forEach(s=>{s.remove()}),i=e.querySelector(`${o}`)):e.querySelectorAll(":scope > *:empty").forEach(s=>{s.remove()});const c=e.getAttribute("data-items-class");c&&i.querySelectorAll(":scope > *").forEach(s=>{s.classList.add(c)})},this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const t=document.createElement("template");t.innerHTML=`
4
+ */const b=a=>{const t=["skeleton","bone","carousel","card","banner","notification"],n=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets";t.forEach(e=>{a.getElementsByTagName(`iam-${e}`).length!==0&&import(`${n}/js/components/${e}/${e}.component.min.js`).then(o=>{window.customElements.get(`iam-${e}`)||window.customElements.define(`iam-${e}`,o.default)}).catch(o=>{console.log(o.message)})})},f=a=>a.replaceAll(/<p>\[([^\]]+)\]<\/p>/g,'<span data-shortcode="$1"><iam-skeleton><iam-bone class="search"></iam-bone></iam-skeleton></span>'),h=(a,t)=>a.hasAttribute("data-title-tag")&&t?`<${a.getAttribute("data-title-tag")} class="${a.getAttribute("data-title-class")} iam-content--title">${t}</${a.getAttribute("data-title-tag")}>`:"",p=(a,t,n)=>{const e=a.getAttribute("data-transform");let o="";for(const s of a.attributes)o+=`${s.name}="${s.value}" `;return`<${e} ${o}>${t+n}</${e}>`},v=a=>{const t=document.createDocumentFragment();return Array.from(a.querySelectorAll(".wp-block-button")).forEach(n=>{const e=n.querySelector("a");e.setAttribute("class",n.getAttribute("class")),t.appendChild(e)}),t};class A extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const t=document.createElement("template");t.innerHTML=`
5
5
  <style>
6
- @layer elements{button{border-radius:0;text-transform:none;margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button:focus:not(:focus-visible){outline:0}:is(button,[type=button],[type=reset],[type=submit],[role=button]){-webkit-appearance:button;&:not(:disabled){cursor:pointer}}.btn{--btn-margin: 1rem;--btn-padding-block: 0.75rem;--btn-padding-inline: 2.5rem;--btn-border-width: 2px;--btn-font-size: 1.125rem;--btn-line-height: 1.25rem;display:inline-block;font-weight:bold;text-align:left;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;color:var(--colour-btn);font-size:var(--btn-font-size);line-height:var(--btn-line-height);padding:var(--btn-padding-block) var(--btn-padding-inline);border-radius:1.5rem;margin-bottom:var(--btn-margin);background:none;transition:border .5s,background .5s,color .5s;height:auto;max-width:fit-content;appearance:none;white-space:nowrap;&:not(.btn-secondary)[class*=colour-]{--colour-btn-bg: var(--colour);--colour-btn-border: var(--colour)}&:is(.colour-primary,.colour-dark,.colour-danger,.colour-black){--colour-btn: #fcfcfc}&:not(.border-0){background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border)}&:not(:last-child){margin-right:var(--btn-margin)}}@media screen and (min-width: 36em){.btn{--btn-margin: 1.5rem}}a:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) .btn,.btn:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){outline:0;text-decoration:none;background:var(--colour-btn-bg-hover);color:var(--colour-btn-hover);border-radius:1.5rem}a:is(:active,.active):not([disabled]) .btn,.btn:is(:active,.active):not([disabled]){filter:brightness(85%);transition:background .1s,color .1s;color:var(--colour-btn);border-radius:1.5rem}a:disabled .btn,.btn:disabled,[disabled] .btn,.btn[disabled]{opacity:.4;cursor:not-allowed}.btn.btn-complete{--colour: var(--colour-success);--colour-btn-bg-hover: var(--colour);--colour-btn-border-hover: var(--colour);--colour-btn-hover: var(--colour-primary-theme);--colour-btn-bg: var(--colour);--colour-btn-border: var(--colour);position:relative;padding-left:3.5rem;padding-right:3.5rem}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.btn-complete,.btn.btn-complete:is(:hover,:focus,.hover):not([disabled],:active,.active){padding-left:2.5rem;padding-right:2.5rem;&:before{content:"\uF00C";font-family:var(--fa-family-classic);margin-right:1rem;font-style:inherit;width:1rem;display:inline-block;height:var(--btn-line-height);vertical-align:bottom}}.btn.btn-sm{--btn-padding-block: 0.5rem;--btn-padding-inline: 2rem;--btn-margin: 0.5rem;--btn-font-size: 1rem}.btn{&[class*=fa-]:before{content:var(--fa);font-family:var(--fa-family-classic)}&[class*=fa-after]{padding-right:4rem}&[class*=fa-after]:before{margin-right:0;margin-right:.375rem;position:absolute;right:1.5rem;top:50%;transform:translate(0, -50%)}&:not(.btn-compact):before{margin-right:1rem}i[class*=fa-]{--fa-width: 1em;font-family:var(--fa-family-classic);margin-right:1rem;line-height:1em;font-style:inherit;&:not(:first-child){margin-left:1rem;margin-right:0}}}.btn.btn--prompt{&:after{content:"";height:var(--btn-line-height);width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem}}a:is(:hover,:focus,.hover):not([disabled],:active,.active) .btn.btn--prompt,.btn.btn--prompt:is(:hover,:focus,.hover):not([disabled],:active,.active){&:after{margin-left:1.5rem;margin-right:-0.5rem}}.btn-filter{&:after{content:"\uF1DE";display:inline-block;margin-left:1em;margin-bottom:-0.15em;height:1em;width:1em;z-index:var(--index-focus);color:currentColor;font-weight:300;font-family:var(--fa-family-classic)}}}@layer elements{.btn-secondary{color:var(--colour-btn-secondary);&:not(.border-0){background:var(--colour-btn-secondary-bg);border:2px solid var(--colour-btn-secondary-border)}}a:is(:hover,:focus,.hover,:active,.active):not([disabled]) .btn-secondary,.btn-secondary:is(:hover,:focus,.hover,:focus-within,:active,.active):not([disabled]){background:var(--colour-btn-secondary-bg-hover);color:var(--colour-btn-secondary-hover)}}@layer elements{.btn.btn-tertiary{background-color:transparent;border:none;color:var(--colour-link);margin:0 var(--btn-margin) var(--btn-margin) 0;padding:0;font-size:1.125rem;font-weight:normal;line-height:1.5rem;min-height:1.5rem;position:relative;&:after{position:absolute;content:"";top:100%;left:50%;height:2px;width:100%;transform:translate(-50%, 0);background:var(--colour-underline);transition:width .5s}&.text-decoration-none:after{width:0%}&[class*=fa-]{margin-left:0;margin-right:.5rem}&[class*=fa-]:not(:first-child){margin-left:.5rem;margin-right:0}&:is(:hover,:focus,.hover,:focus-within):not([disabled],:disabled,:active,.active){&:after{width:60% !important}}&:is(:active,.active):not([disabled],:disabled){color:var(--colour-active)}}}@layer elements{.btn-action{--btn-border-width: 1px;--btn-padding-block: 0.3125rem /* 5px */;--btn-padding-inline: 0.3125rem /* 5px */;--btn-margin: 0.5rem;border-radius:.25rem !important;font-weight:400 !important;font-size:1rem;line-height:1.25rem;&:not(.btn-primary){color:var(--colour-heading)}&:not(.btn-primary):not(.border-0){background-color:var(--colour-canvas-2);border:var(--btn-border-width) solid var(--colour-muted)}&.btn[class*=fa-]:before{content:var(--fa);margin-right:.375rem}&.icon-only{position:relative;text-indent:-300vw;overflow:hidden;min-width:1.75rem;&:before{position:absolute;left:0;top:0;min-width:1.75rem;text-align:center;text-indent:0;padding-inline:.25rem;line-height:1.85rem}}a:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) &,&:not(.btn-primary):is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){background:var(--colour-btn-action-hover-bg)}.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active) &,&.btn-primary:is(:hover,:focus,.hover,:focus-within):not([disabled],:active,.active){filter:brightness(90%);background:var(--colour-btn-bg);border:var(--btn-border-width) solid var(--colour-btn-border);color:var(--colour-btn)}a:is(:active,.active):not([disabled]):not(.btn-primary) &,&:is(:active,.active):not([disabled]):not(.btn-primary){filter:brightness(85%);transition:all .1s;color:var(--colour-heading)}}.btn-action:not(.btn-compact).fa-compact-only:before{display:none !important}}@layer elements{.btn-compact{--compact-size: 3rem;padding:0 !important;margin-bottom:.5rem;text-align:center;width:var(--compact-size);min-width:var(--compact-size);max-width:var(--compact-size);height:var(--compact-size) !important;min-height:var(--compact-size) !important;max-height:var(--compact-size) !important;align-content:center;line-height:1 !important;text-indent:-500px;overflow:hidden;position:relative;font-size:1rem;&:not(:last-child){margin-right:.5rem}&:before{content:var(--fa);position:absolute;display:block;top:0;left:0;width:100%;height:100%;text-indent:0;line-height:calc(var(--compact-size) - .25rem);font-weight:900}[class*=fa-]:before{line-height:calc(var(--compact-size) - .25rem);@container style(--theme: dark){color:white}}&.btn-sm{--compact-size: 2.5rem;font-size:1rem;padding:0 !important}&.btn-action{--compact-size: 2rem;font-size:1rem;&:before{font-size:1em;font-weight:400}}&.btn-secondary{--colour-btn-bg: transparent;--colour-btn-border: transparent;border-color:transparent;&:not([class*=colour-]){--colour: var(--colour-light)}}&.btn-secondary:is(:hover,:focus,.hover,:active,.active,[aria-expanded],:focus-within):not([disabled]):not(.btn-collapse){background-color:var(--colour);color:var(--colour-primary-theme);border-color:var(--colour);&:is(.colour-primary,.colour-dark,.colour-danger,.colour-black){color:var(--colour-inverted)}}&[data-number]{position:relative}&[data-number]:after{content:attr(data-number);position:absolute;top:.5em;z-index:99;background:var(--colour-danger);height:1.5em;width:1.5em;border-radius:50%;text-indent:0;left:50%;font-size:.5em;line-height:1.5em;text-align:center;color:white;letter-spacing:-0.1em;font-family:arial,sans-serif}}.btn-compact{&:is(.fa-left,.fa-chevron-left,.fa-right,.fa-chevron-right,.fa-up,.fa-chevron-up,.fa-down,.fa-chevron-down,.fa-plus,.fa-bars,.fa-edit,.fa-envelope,.fa-calendar){--iso-display: block;--iso-font-size: 1.5rem;--iso-border-radius: 50%;--iso-text-indent: -500px}}@container style(--font-body){.btn-compact{font-size:var(--iso-font-size, 0.6rem) !important;text-indent:var(--iso-text-indent, 0px);white-space:initial;&:not(.btn-action){border-radius:var(--iso-border-radius, 0.25rem) !important}&:before{display:var(--iso-display, none);font-family:monospace !important;content:var(--iso) !important}}}@container style(--fa-font-regular){.btn-compact{text-indent:-500px;font-size:1rem !important;&:not(.btn-action){border-radius:50% !important}&:before{font-family:"Font Awesome 7 Pro" !important;content:var(--fa) !important;display:block}}}}@layer elements{.btn[popovertarget]{position:relative;anchor-name:--button2;&>.fa-chevron-down{display:none}&:not(:has(i)):not(.no-icon):after{content:"";display:inline-block;margin-right:.25em;margin-left:1em;height:.8em;width:.8em;z-index:var(--index-focus);background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;transform:rotate(90deg)}&[aria-pressed]:after{transform:rotate(270deg)}}.btn:has(select){position:relative;padding:0;max-width:fit-content;min-width:fit-content;width:fit-content;select{all:unset !important;padding:var(--btn-padding-block) var(--btn-padding-inline) !important;padding-right:calc(var(--btn-padding-inline) + 2rem) !important;border-radius:1.5rem !important;appearance:none !important;background:none !important;border:none !important;color:currentColor !important;display:block;outline:none;font-weight:inherit !important;font-size:var(--btn-font-size) !important;line-height:var(--btn-line-height) !important;field-sizing:content !important;appearance:base-select !important}&:after{position:absolute;top:.625rem;right:1.5rem;content:"";height:1.5rem;width:1rem;display:inline-block;background:currentColor;mask-image:var(--icon-arrow);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;vertical-align:bottom;margin-left:1rem;transform:rotate(90deg);pointer-events:none}}.btn-action:has(select){padding-block:0;padding-right:2rem;font-size:1em;select{margin:0rem 0rem !important;padding-right:2rem !important;margin-right:-2rem !important;font-size:1rem !important}&:after{top:.2rem;right:.5rem}}}@layer elements{.btn__group{display:flex;flex-direction:column;row-gap:var(--gap);reading-flow:source-order;margin-bottom:1.5rem;.btn-compact{max-width:fit-content;margin-inline:auto}}:where(.btn__group,iam-modal){reading-flow:source-order;.btn{margin-inline-end:0;width:100%;max-width:100%;text-align:center;white-space:normal;margin:0;&:not(:last-child){margin-right:0}}.btn-tertiary{max-width:fit-content;margin-block:0 !important;margin-inline:auto !important;order:3;reading-order:3}.btn-secondary{order:2;reading-order:2}.btn-primary{order:1;reading-order:1;margin:0;&:not(:last-child){margin:0}}}:is(iam-form,form) .btn__group{padding-top:1rem}@container (min-width: 36em){.btn__group{flex-direction:row;row-gap:0;gap:var(--gap);flex-wrap:wrap;.btn-tertiary{max-width:fit-content;margin-inline:0 !important;margin-block:auto;order:1}.btn-secondary{order:2}.btn-primary{order:3}.btn-compact{margin-inline:0;margin-block:auto}}:where(iam-modal,.btn__group){.btn{max-width:fit-content;white-space:nowrap;margin-block:auto}}.btn__group{.btn-tertiary{reading-order:1}.btn-secondary{reading-order:2}.btn-primary{reading-order:3}}iam-modal{.btn-tertiary{reading-order:3;order:1}.btn-secondary{order:2;reading-order:2}.btn-primary{order:3;reading-order:1}}.btn__group.text-end{justify-content:flex-end}:is(iam-form,form) .btn__group{justify-content:flex-end;padding-top:3rem}iam-modal .btn__group:last-child .btn,dialog .btn__group:last-child .btn{margin-bottom:0}}}*,*::before,*::after{box-sizing:border-box}:host{display:contents}::slotted(iam-marketing:first-child:last-child){margin-bottom:0;min-height:100%;min-width:100%}/*# sourceMappingURL=assets/css/components/content.component.css.map */
6
+ *,*::before,*::after{box-sizing:border-box}:host{display:contents}/*# sourceMappingURL=assets/css/components/content.component.css.map */
7
7
 
8
8
 
9
9
  ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
10
10
  </style>
11
11
  <slot></slot>
12
- `,this.shadowRoot.appendChild(t.content.cloneNode(!0))}connectedCallback(){const t=this,e=this.getAttribute("data-url"),o=this.getAttribute("data-transform"),i=this.fixContent;let c="";for(const a of this.attributes)c+=`${a.name}="${a.value}" `;const s=this.addTitle,p=a=>{const l=["skeleton","bone","carousel","card","banner","notification"],d=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets";l.forEach(r=>{r=="notification"&&document.querySelectorAll("[data-notification]").forEach(n=>{n.outerHTML=n.outerHTML.replace(/<div/g,"<iam-notification").replace(/<\/div>/g,"</iam-notification>")}),a.getElementsByTagName(`iam-${r}`).length!==0&&import(`${d}/js/components/${r}/${r}.component.js`).then(n=>{window.customElements.get(`iam-${r}`)||window.customElements.define(`iam-${r}`,n.default)}).catch(n=>{console.log(n.message)})})};if(e){const a=new XMLHttpRequest;a.open("GET",e,!0),a.onload=function(){var l,d;if(this.status===200){let r=JSON.parse(this.responseText);Array.isArray(r)&&(r=r[0]);const n=r.content.rendered.replaceAll(/<p>\[(.*)\]<\/p>/g,'<span data-shortcode="$1"><iam-skeleton><iam-bone class="search"></iam-bone></iam-skeleton></span>');(d=(l=t.parentElement)===null||l===void 0?void 0:l.querySelector(".iam-content--title"))===null||d===void 0||d.remove(),t.insertAdjacentHTML("beforebegin",s(r.title.rendered)),o?(t.innerHTML=`<${o} ${c}>${n}</${o}>`,t.removeAttribute("class")):t.innerHTML=`${n}`,i(t),p(t),u(),Array.from(document.querySelectorAll("[data-variable]")).forEach(m=>{var b;document.querySelector(`[data-save-variable="${m.getAttribute("data-variable")}"][data-variable-value]`)&&(m.innerHTML=(b=document.querySelector(`[data-save-variable="${m.getAttribute("data-variable")}"][data-variable-value]`))===null||b===void 0?void 0:b.getAttribute("data-variable-value"))});const h=new CustomEvent("loaded",{detail:{triggered:!0}});t?.dispatchEvent(h)}},a.send()}}}export{f as default};
12
+ `,this.shadowRoot.appendChild(t.content.cloneNode(!0))}connectedCallback(){const t=this,n=this.getAttribute("data-url");if(n){const e=new XMLHttpRequest;e.open("GET",n,!0),e.onload=function(){var o,s;if(this.status===200){let i=JSON.parse(this.responseText);Array.isArray(i)&&(i=i[0]);const l=f(i.content.rendered);(s=(o=t.parentElement)===null||o===void 0?void 0:o.querySelector(".iam-content--title"))===null||s===void 0||s.remove();const d=h(t,i.title.rendered);t.hasAttribute("data-transform")?(t.innerHTML=p(t,d,l),t.removeAttribute("class"),t.querySelectorAll(`${t.getAttribute("data-transform")} > *:empty`).forEach(r=>{r.remove()})):(t.insertAdjacentHTML("beforebegin",d),t.innerHTML=`${l}`,t.querySelectorAll(":scope > *:empty").forEach(r=>{r.remove()})),b(t),Array.from(document.querySelectorAll(".wp-block-buttons")).forEach(r=>{const c=v(r);r.parentNode.replaceChild(c,r)}),Array.from(document.querySelectorAll("[data-variable]")).forEach(r=>{var c;document.querySelector(`[data-save-variable="${r.getAttribute("data-variable")}"][data-variable-value]`)&&(r.innerHTML=(c=document.querySelector(`[data-save-variable="${r.getAttribute("data-variable")}"][data-variable-value]`))===null||c===void 0?void 0:c.getAttribute("data-variable-value"))});const u={url:n},m=new CustomEvent("content-loaded",{detail:u});t?.dispatchEvent(m),window.dataLayer=window.dataLayer||[],window.dataLayer.push(Object.assign({event:"content-loaded"},u))}},e.send()}}}export{A as default};
13
13
  //# sourceMappingURL=content.component.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"content.component.min.js","sources":["../../modules/content.js","content.component.js"],"sourcesContent":["export const transformButtons = (component) => {\n Array.from(document.querySelectorAll('.wp-block-buttons')).forEach((buttons) => {\n const fragment = document.createDocumentFragment();\n Array.from(buttons.querySelectorAll('.wp-block-button')).forEach((element) => {\n const link = element.querySelector('a');\n link.setAttribute('class', element.getAttribute('class'));\n fragment.appendChild(link);\n });\n buttons.parentNode.replaceChild(fragment, buttons);\n });\n};\n","import { transformButtons } from '../../modules/content';\nclass iamContent extends HTMLElement {\n constructor() {\n super();\n this.addTitle = (title) => {\n if (this.hasAttribute('data-title-tag')) {\n return `<${this.getAttribute('data-title-tag')} class=\"${this.getAttribute('data-title-class')} iam-content--title\">${title}</${this.getAttribute('data-title-tag')}>`;\n }\n return '';\n };\n this.fixContent = (component) => {\n const transform = component.getAttribute('data-transform');\n let wrapper = component;\n if (transform) {\n component.querySelectorAll(`${transform} > *:empty`).forEach((element) => {\n element.remove();\n });\n wrapper = component.querySelector(`${transform}`);\n }\n else {\n component.querySelectorAll(`:scope > *:empty`).forEach((element) => {\n element.remove();\n });\n }\n const itemClass = component.getAttribute('data-items-class');\n if (itemClass) {\n wrapper.querySelectorAll(`:scope > *`).forEach((element) => {\n element.classList.add(itemClass);\n });\n }\n };\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/content.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${loadCSS}\n\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <slot></slot>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const component = this;\n const url = this.getAttribute('data-url');\n const transform = this.getAttribute('data-transform');\n const fixContent = this.fixContent;\n let elementAttributes = '';\n for (const attr of this.attributes) {\n elementAttributes += `${attr.name}=\"${attr.value}\" `;\n }\n const addTitle = this.addTitle;\n const registerComponents = (contentComponent) => {\n const components = ['skeleton', 'bone', 'carousel', 'card', 'banner', 'notification'];\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n // Load components - Each component will load once the first of its type has been loaded\n components.forEach((component) => {\n if (component == 'notification') {\n document.querySelectorAll('[data-notification]').forEach((element) => {\n element.outerHTML = element.outerHTML\n .replace(/<div/g, '<iam-notification')\n .replace(/<\\/div>/g, '</iam-notification>');\n });\n }\n if (contentComponent.getElementsByTagName(`iam-${component}`).length === 0)\n return;\n import(/* @vite-ignore */ `${assetLocation}/js/components/${component}/${component}.component.js`)\n .then((module) => {\n if (!window.customElements.get(`iam-${component}`))\n window.customElements.define(`iam-${component}`, module.default);\n })\n .catch((err) => {\n console.log(err.message);\n });\n });\n };\n if (url) {\n const newXHRRequest = new XMLHttpRequest();\n newXHRRequest.open('GET', url, true);\n newXHRRequest.onload = function () {\n var _a, _b;\n if (this.status === 200) {\n let response = JSON.parse(this.responseText);\n if (Array.isArray(response))\n response = response[0];\n const renderedContent = response.content.rendered.replaceAll(/<p>\\[(.*)\\]<\\/p>/g, \"<span data-shortcode=\\\"$1\\\"><iam-skeleton><iam-bone class=\\\"search\\\"></iam-bone></iam-skeleton></span>\");\n (_b = (_a = component.parentElement) === null || _a === void 0 ? void 0 : _a.querySelector('.iam-content--title')) === null || _b === void 0 ? void 0 : _b.remove();\n component.insertAdjacentHTML('beforebegin', addTitle(response.title.rendered));\n if (transform) {\n component.innerHTML = `<${transform} ${elementAttributes}>${renderedContent}</${transform}>`;\n component.removeAttribute('class');\n }\n else {\n component.innerHTML = `${renderedContent}`;\n }\n fixContent(component);\n registerComponents(component);\n transformButtons(component);\n Array.from(document.querySelectorAll('[data-variable]')).forEach((element) => {\n var _a;\n if (document.querySelector(`[data-save-variable=\"${element.getAttribute('data-variable')}\"][data-variable-value]`))\n element.innerHTML = (_a = document.querySelector(`[data-save-variable=\"${element.getAttribute('data-variable')}\"][data-variable-value]`)) === null || _a === void 0 ? void 0 : _a.getAttribute('data-variable-value');\n });\n const changeEvent = new CustomEvent('loaded', { detail: { triggered: true } });\n component === null || component === void 0 ? void 0 : component.dispatchEvent(changeEvent);\n }\n };\n newXHRRequest.send();\n }\n }\n}\nexport default iamContent;\n"],"names":["transformButtons","component","buttons","fragment","element","link","iamContent","title","transform","wrapper","itemClass","template","url","fixContent","elementAttributes","attr","addTitle","registerComponents","contentComponent","components","assetLocation","module","err","newXHRRequest","_a","_b","response","renderedContent","changeEvent"],"mappings":"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"}
1
+ {"version":3,"file":"content.component.min.js","sources":["../../modules/content.js","content.component.js"],"sourcesContent":["export const loadComponents = (component) => {\n const components = ['skeleton', 'bone', 'carousel', 'card', 'banner', 'notification'];\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n components.forEach((loadComponent) => {\n if (component.getElementsByTagName(`iam-${loadComponent}`).length === 0)\n return;\n import(/*! @vite-ignore */ `${assetLocation}/js/components/${loadComponent}/${loadComponent}.component.min.js`)\n .then((module) => {\n if (!window.customElements.get(`iam-${loadComponent}`))\n window.customElements.define(`iam-${loadComponent}`, module.default);\n })\n .catch((err) => {\n console.log(err.message);\n });\n });\n};\nexport const replaceShortcode = (content) => {\n return content.replaceAll(/<p>\\[([^\\]]+)\\]<\\/p>/g, \"<span data-shortcode=\\\"$1\\\"><iam-skeleton><iam-bone class=\\\"search\\\"></iam-bone></iam-skeleton></span>\");\n};\nexport const createTitle = (component, title) => {\n if (component.hasAttribute('data-title-tag') && title)\n return `<${component.getAttribute('data-title-tag')} class=\"${component.getAttribute('data-title-class')} iam-content--title\">${title}</${component.getAttribute('data-title-tag')}>`;\n return '';\n};\nexport const transformElement = (component, renderedTitle, renderedContent) => {\n const transform = component.getAttribute('data-transform');\n let elementAttributes = '';\n for (const attr of component.attributes) {\n elementAttributes += `${attr.name}=\"${attr.value}\" `;\n }\n return `<${transform} ${elementAttributes}>${renderedTitle + renderedContent}</${transform}>`;\n};\nexport const transformButtons = (buttons) => {\n const fragment = document.createDocumentFragment();\n Array.from(buttons.querySelectorAll('.wp-block-button')).forEach((element) => {\n const link = element.querySelector('a');\n link.setAttribute('class', element.getAttribute('class'));\n fragment.appendChild(link);\n });\n return fragment;\n};\n","import { createTitle, replaceShortcode, transformElement, transformButtons, loadComponents } from '../../modules/content';\nclass iamContent extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n const assetLocation = document.body.hasAttribute('data-assets-location')\n ? document.body.getAttribute('data-assets-location')\n : '/assets';\n const loadCSS = `@import \"${assetLocation}/css/components/content.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${loadCSS}\n\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n </style>\n <slot></slot>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const component = this;\n const url = this.getAttribute('data-url');\n if (url) {\n const newXHRRequest = new XMLHttpRequest();\n newXHRRequest.open('GET', url, true);\n newXHRRequest.onload = function () {\n var _a, _b;\n if (this.status === 200) {\n let response = JSON.parse(this.responseText);\n if (Array.isArray(response))\n response = response[0];\n // Create the rendered content block and maintain any shortcodes\n const renderedContent = replaceShortcode(response.content.rendered);\n // Update the content title\n (_b = (_a = component.parentElement) === null || _a === void 0 ? void 0 : _a.querySelector('.iam-content--title')) === null || _b === void 0 ? void 0 : _b.remove();\n const renderedTitle = createTitle(component, response.title.rendered);\n // Transform the component if required\n if (component.hasAttribute('data-transform')) {\n component.innerHTML = transformElement(component, renderedTitle, renderedContent);\n component.removeAttribute('class');\n component.querySelectorAll(`${component.getAttribute('data-transform')} > *:empty`).forEach((element) => {\n element.remove();\n });\n }\n else {\n component.insertAdjacentHTML('beforebegin', renderedTitle);\n component.innerHTML = `${renderedContent}`;\n component.querySelectorAll(`:scope > *:empty`).forEach((element) => {\n element.remove();\n });\n }\n // Load components - Each component will load once the first of its type has been loaded\n loadComponents(component);\n // Transform the buttons\n Array.from(document.querySelectorAll('.wp-block-buttons')).forEach((buttons) => {\n const fragment = transformButtons(buttons);\n buttons.parentNode.replaceChild(fragment, buttons);\n });\n // This allows for content added dynamically via the standardised nav to be added after the content is loaded\n Array.from(document.querySelectorAll('[data-variable]')).forEach((element) => {\n var _a;\n if (document.querySelector(`[data-save-variable=\"${element.getAttribute('data-variable')}\"][data-variable-value]`))\n element.innerHTML = (_a = document.querySelector(`[data-save-variable=\"${element.getAttribute('data-variable')}\"][data-variable-value]`)) === null || _a === void 0 ? void 0 : _a.getAttribute('data-variable-value');\n });\n // Dispatch the loaded event for external JS and save to the data layer\n const eventDetails = { url: url };\n const changeEvent = new CustomEvent('content-loaded', { detail: eventDetails });\n component === null || component === void 0 ? void 0 : component.dispatchEvent(changeEvent);\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push(Object.assign({ 'event': 'content-loaded' }, eventDetails));\n }\n };\n newXHRRequest.send();\n }\n }\n}\nexport default iamContent;\n"],"names":["loadComponents","component","components","assetLocation","loadComponent","module","err","replaceShortcode","content","createTitle","title","transformElement","renderedTitle","renderedContent","transform","elementAttributes","attr","transformButtons","buttons","fragment","element","link","iamContent","template","url","newXHRRequest","_a","_b","response","eventDetails","changeEvent"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.8.2--beta3
2
+ * iamKey v7.8.2--beta4
3
3
  * Copyright 2022-2026 iamproperty
4
4
  */window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"Dark mode button"});class i extends HTMLElement{constructor(){var e;super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const o=document.createElement("template");o.innerHTML=`
5
5
  <style>::slotted(.toggle):after{--icon: var(--icon-light);background:red;mask-image:var(--icon);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon);-webkit-mask-size:100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;z-index:2}::slotted(.toggle.dark-theme):after{--icon: var(--icon-dark)}/*# sourceMappingURL=assets/css/components/darkmode.component.css.map */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.8.2--beta3
2
+ * iamKey v7.8.2--beta4
3
3
  * Copyright 2022-2026 iamproperty
4
4
  */const L=t=>t.charAt(0).toUpperCase()+t.slice(1),q=t=>t.replace(/_/g," "),P=(t,r)=>{for(let a=1;a<=10;a++){if(t.hasAttribute(`data-colour-${a}`)){const c=t.getAttribute(`data-colour-${a}`);t.style.setProperty(`--chart-colour-${a}`,`var(--chart-colour-${c})`),t.style.setProperty(`--chart-colour-${a}-hover`,`var(--chart-colour-${c}-hover)`)}Array.from(r.querySelectorAll(`[data-colour-${a}]`)).forEach(c=>{const e=c.getAttribute(`data-colour-${a}`);c.style.setProperty(`--chart-colour-${a}`,`var(--chart-colour-${e})`),c.style.setProperty(`--chart-colour-${a}-hover`,`var(--chart-colour-${e}-hover)`)})}return!0},w=(t,r,a)=>{if(t.tagName=="IAM-DOUGHNUTCHART")return N(t,r,a),!0;const c=r.querySelector(".chart__key");c.innerHTML="";const e=r.querySelector(".chart__guidelines");e.innerHTML="";const n=r.querySelector(".chart__yaxis");n.innerHTML="",Array.from(r.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map(i=>{i.remove()});const{xaxis:o}=v(t);return A(t,a),T(r,a,c),I(t,e),X(t,n),o&&K(r),!0},N=(t,r,a)=>{const c=r.querySelector(".chart__key");return c.innerHTML="",Array.from(r.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map(e=>{e.remove()}),A(t,a),T(r,a,c),H(r),!0},j=function(t,r){const a=r.querySelector(".chart");a.addEventListener("mousemove",o=>{if(o&&o.target instanceof HTMLElement&&o.target.closest("td:not(:first-child")){const l=o.target.closest("td:not(:first-child").getBoundingClientRect(),d=o.clientX-l.left,h=o.clientY-l.top;a.setAttribute("style",`--cursor-x: ${d}px; --cursor-y: ${h}px;`)}});const c=r.querySelectorAll("label");Array.from(c).forEach(o=>{r.querySelector(`input#${o.getAttribute("for")}`).checked?o.setAttribute("part","key-checked"):o.setAttribute("part","key-unchecked")});const e=t.querySelector("table"),n=r.querySelector("table");r.addEventListener("change",function(o){const i=o.target,l=new CustomEvent("view-change",{detail:{"data-dataset":i.getAttribute("data-dataset"),label:i.getAttribute("data-label"),checked:i.checked}});t.dispatchEvent(l),Array.from(c).forEach(d=>{var h;!((h=r.querySelector(`input#${d.getAttribute("for")}`))===null||h===void 0)&&h.checked?d.setAttribute("part","key-checked"):d.setAttribute("part","key-unchecked")}),n.innerHTML=e.innerHTML,A(t,n),t.tagName=="IAM-DOUGHNUTCHART"&&H(r)})},B=function(t,r){const a=t.querySelector("table"),c=r.querySelector("table"),e=(l,d)=>{d.disconnect(),i.disconnect();for(const h of l)(h.attributeName=="class"||h.type==="attributes"||h.type==="attributes")&&(c.innerHTML=a.innerHTML,w(t,r,c));d.observe(a,{characterData:!0,subtree:!0}),i.observe(t,{attributes:!0})},n=(l,d)=>{d.disconnect(),i.disconnect();for(const h of l)(h.type=="characterData"||h.type=="childList"&&h.addedNodes.length)&&(c.innerHTML=a.innerHTML,w(t,r,c));d.observe(a,{characterData:!0,subtree:!0}),i.observe(t,{attributes:!0})},o=new MutationObserver(n),i=new MutationObserver(e);return o.observe(a,{characterData:!0,subtree:!0}),i.observe(t,{attributes:!0}),!0};function C(t,r){r>1&&(t=t-.25);const a=Math.cos(2*Math.PI*t),c=Math.sin(2*Math.PI*t);return[a*100,c*100]}const v=function(t){const r=t.shadowRoot.querySelector(".chart__wrapper table"),a=t.hasAttribute("data-min")?t.getAttribute("data-min"):0,c=t.hasAttribute("data-max")?t.getAttribute("data-max"):U(t,r),e=t.hasAttribute("data-yaxis")?t.getAttribute("data-yaxis").split(","):[],n=t.hasAttribute("data-guidelines")?t.getAttribute("data-guidelines").split(","):[],o=t.hasAttribute("data-xaxis")?t.getAttribute("data-xaxis").split(","):null;return{min:a,max:c,yaxis:e,xaxis:o,guidelines:n}};function U(t,r){const a=t.classList.contains("chart--stacked")?"tbody tr":"tbody td:not(:first-child)",c=Array.from(r.querySelectorAll(a)).map(n=>n.getAttribute("data-numeric")),e=Math.max(...c);return Math.ceil(e)}const x=function(t,r,a,c){let e=String(t);e=e.replace("\xA3",""),e=e.replace("%",""),e=e.replace(",",""),e=Number.parseFloat(e);let n=(e-r)/(a-r)*100,o=n,i=0;return c&&c!=0&&(i=(c-r)/(a-r)*100),r<0&&(i=Math.abs(r/(a-r)*100),e<0?(n=i-n,i=i-n,o=i):(n=n-i,o=n+i)),{percent:n,axis:o,bottom:i}},A=function(t,r){Array.from(r.querySelectorAll("tbody tr")).forEach(e=>{let n=0;Array.from(e.querySelectorAll("td:not(:first-child)")).forEach(o=>{const i=o.cloneNode(!0);Array.from(i.querySelectorAll("*")).forEach(h=>{h.remove()});const l=parseFloat(i.textContent.replace("\xA3","").replace("%","").replace(",",""));o.setAttribute("data-numeric",l),o.setAttribute("data-value",i.textContent),getComputedStyle(o).display!="none"&&(n+=l),Array.from(o.querySelectorAll("a, button")).forEach((h,b)=>{b==0&&h.insertAdjacentHTML("beforeBegin","<hr/>"),h.classList.add("btn"),h.classList.add("btn-tertiary")})}),e.setAttribute("data-numeric",n)});const{min:a,max:c}=v(t);Array.from(r.querySelectorAll("tbody tr")).forEach((e,n)=>{const o=e.querySelector("td:first-child, th:first-child")?e.querySelector("td:first-child, th:first-child").textContent:"";e.setAttribute("part","group");const i=(e.getAttribute("data-numeric")-a)/(c-a)*100;e.style.setProperty("--percent",`${i}%`),Array.from(e.querySelectorAll("td:not([data-label])")).forEach((h,b)=>{b==0?h.setAttribute("part","xaxis-label"):h.setAttribute("part","value"),e.querySelectorAll("td").length>2&&h.setAttribute("data-label",r.querySelectorAll("thead th")[b].textContent)});const l=e.hasAttribute("data-min")?e.getAttribute("data-min"):a,d=e.hasAttribute("data-max")?e.getAttribute("data-max"):c;if(l<0){const h=Math.abs(l/(d-l)*100);t.setAttribute("style",`--min-bottom: ${h}%;`)}e.style.setProperty("--row-index",n+1),Array.from(e.querySelectorAll('td[data-numeric]:not([data-label="Min"]):not([data-label="Max"]):not(:first-child)')).forEach(h=>{if(getComputedStyle(h).display=="none")return;const y=h.innerHTML,_=Number.parseFloat(h.getAttribute("data-numeric")),s=Number.parseFloat(h.getAttribute("data-start"));if(h.querySelector("span[data-group]")||(h.innerHTML=`<span data-group="${o}" ${h.hasAttribute("data-label")?`data-label="${h.getAttribute("data-label")}"`:""} part="popover">${y}</span>`),!h.hasAttribute("style")){const{percent:m,bottom:g,axis:p}=x(_,l,d,s);h.setAttribute("data-percent",m),h.setAttribute("style",`--bottom:${g}%;--percent:${m}%;--axis:${p}%;`)}})})},T=function(t,r,a){const c=`chart-${Date.now()+(Math.floor(Math.random()*100)+1)}`;let e;const n=Array.from(r.querySelectorAll("thead th"));return n.forEach((o,i)=>{i!=0&&(e=V(c,i,o.textContent,a,t,e)),i==50&&(n.length=i+1)}),!0};function V(t,r,a,c,e,n){var o;const i=document.createElement("input");i.setAttribute("name",`${t}-dataset-${r}`),i.setAttribute("id",`${t}-dataset-${r}`),i.setAttribute("data-dataset",`${r}`),i.setAttribute("data-label",`${a}`),i.checked=!0,i.setAttribute("type","checkbox"),r==1?e.prepend(i):e.insertBefore(i,n.nextSibling),n=i;const l=document.createElement("label");l.setAttribute("class","key btn btn-action"),l.setAttribute("for",`${t}-dataset-${r}`),l.setAttribute("data-label",`${a}`),l.setAttribute("part","key");const d=(o=e.querySelector(`tbody tr td:nth-child(${r+1})`))===null||o===void 0?void 0:o.getAttribute("data-numeric");return l.setAttribute("data-numeric",d),l.innerHTML=`${a}`,c.append(l),n}const I=function(t,r){const{min:a,max:c,yaxis:e}=v(t);let{guidelines:n}=v(t);n.length||(n=e),r.innerHTML="";for(let o=0;o<n.length;o++){const i=parseFloat(n[o].replace("\xA3","").replace("%","").replace(",","")),{axis:l}=x(i,a,c);r.innerHTML+=`<div class="guideline" style="--percent:${l}%;">${e.indexOf(n[o])!=-1?`<span>${n[o]}</span>`:""}</div>`}},X=function(t,r){const{min:a,max:c,yaxis:e}=v(t);r.innerHTML="";for(let n=0;n<e.length;n++){const o=parseFloat(e[n].replace("\xA3","").replace("%","")),{axis:i}=x(o,a,c);r.innerHTML+=`<div class="axis__point" style="--percent:${i}%;"><span>${e[n]}</span></div>`}},K=function(t){const r=t.querySelector(".chart");let a=t.querySelector(".chart__xaxis");a||(a=document.createElement("div"),a.setAttribute("class","chart__xaxis")),r.prepend(a)},H=function(t){let r="";const a=t.querySelector(".chart");let c=t.querySelector(".doughnuts");c||(c=document.createElement("div"),c.setAttribute("class","doughnuts"),a.append(c)),Array.from(a.querySelectorAll("tbody tr")).forEach((e,n)=>{let o="",i="",l=0,d=0;const b=e.querySelectorAll("td")[0].innerHTML;let y=0;const _=e.getAttribute("data-numeric");Array.from(e.querySelectorAll("td")).forEach((s,m)=>{const g=getComputedStyle(s).display;if(m!=0&&g!="none"){let p=s.getAttribute("data-numeric");p=p.replace("\xA3",""),p=p.replace("%",""),p=p.replace(",",""),p=Number.parseInt(p),d+=p,y++}}),Array.from(e.querySelectorAll("td")).forEach((s,m)=>{var g,p;const f=getComputedStyle(s).display;if(m!=0&&y==1&&f!="none")o+=`<path d="M 0 0 L 100 0 A 100 100 0 1 1 100 -0.01 L 0 0" style="${s.getAttribute("style")} --path-index: ${m};"></path>`,i+=`<span class="h5 mb-0" part="popover">${L(q(s.getAttribute("data-label"))).trim()}<br/>${s.hasAttribute("data-second")?`${s.getAttribute("data-second-label")}: ${s.getAttribute("data-second")}<br/>`:""}${(g=s.querySelector('[part="popover"]'))===null||g===void 0?void 0:g.innerHTML}</span>`;else if(m!=0){let u=s.getAttribute("data-numeric");const D=f=="none"?"display: none;":"";u=u.replace("\xA3",""),u=u.replace("%",""),u=u.replace(",",""),u=Number.parseInt(u);const k=u/d,[$,z]=C(l,y),[S,M]=C(l+k,y),R=k>.5?1:0,F=["M 0 0",`L ${$?$.toFixed(0):0} ${z?z.toFixed(0):0}`,`A 100 100 0 ${R} 1 ${S?S.toFixed(0):0} ${M?M.toFixed(0):0}`,"L 0 0"].join(" ");o+=`<path d="${F}" style="${s.getAttribute("style")} --path-index: ${m};${D}"></path>`,i+=`<span class="h5 mb-0" part="popover">${L(q(s.getAttribute("data-label"))).trim()}<br/>${s.hasAttribute("data-second")?`${s.getAttribute("data-second-label")}: ${s.getAttribute("data-second")}<br/>`:""}${(p=s.querySelector('[part="popover"]'))===null||p===void 0?void 0:p.innerHTML}</span>`,f!="none"&&(l+=k)}}),r+=`<div class="doughnut">
5
5
  <svg viewBox="-105 -105 210 210" preserveAspectRatio="none" style="--row-index: ${n+1};">${o}</svg>