@iamproperty/components 7.2.2--beta2 → 7.3.0

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 (115) 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/barchart.component.css.map +1 -1
  4. package/assets/css/components/bento-grid.global.css.map +1 -1
  5. package/assets/css/components/card.component.css +1 -1
  6. package/assets/css/components/card.component.css.map +1 -1
  7. package/assets/css/components/charts.module.css.map +1 -1
  8. package/assets/css/components/doughnutchart.component.css.map +1 -1
  9. package/assets/css/components/fileupload.css +1 -1
  10. package/assets/css/components/fileupload.css.map +1 -1
  11. package/assets/css/components/menu.component.css +1 -1
  12. package/assets/css/components/menu.component.css.map +1 -1
  13. package/assets/css/components/menu.css +1 -1
  14. package/assets/css/components/menu.css.map +1 -1
  15. package/assets/css/components/nav.component.css +1 -1
  16. package/assets/css/components/nav.component.css.map +1 -1
  17. package/assets/css/components/rank.component.css +1 -1
  18. package/assets/css/components/rank.component.css.map +1 -1
  19. package/assets/css/components/rankings.component.css +1 -1
  20. package/assets/css/components/rankings.component.css.map +1 -1
  21. package/assets/css/components/rankings.global.css +1 -1
  22. package/assets/css/components/rankings.global.css.map +1 -1
  23. package/assets/css/components/slider.css.map +1 -1
  24. package/assets/css/components/table-basic.global.css.map +1 -1
  25. package/assets/css/components/table.global.css.map +1 -1
  26. package/assets/css/core.min.css +1 -1
  27. package/assets/css/core.min.css.map +1 -1
  28. package/assets/css/mobile-core.min.css +1 -1
  29. package/assets/css/mobile-core.min.css.map +1 -1
  30. package/assets/css/mobile.min.css +1 -1
  31. package/assets/css/mobile.min.css.map +1 -1
  32. package/assets/css/style.min.css +1 -1
  33. package/assets/css/style.min.css.map +1 -1
  34. package/assets/img/thumbnail.png +0 -0
  35. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  36. package/assets/js/components/actionbar/actionbar.component.min.js +2 -2
  37. package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
  38. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  39. package/assets/js/components/barchart/barchart.component.min.js +1 -1
  40. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  41. package/assets/js/components/card/card.component.min.js +2 -2
  42. package/assets/js/components/carousel/carousel.component.min.js +1 -1
  43. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  44. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +1 -1
  45. package/assets/js/components/fileupload/fileupload.component.min.js +4 -4
  46. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  47. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  48. package/assets/js/components/header/header.component.min.js +1 -1
  49. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  50. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  51. package/assets/js/components/menu/menu.component.js +138 -159
  52. package/assets/js/components/menu/menu.component.min.js +4 -69
  53. package/assets/js/components/menu/menu.component.min.js.map +1 -1
  54. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  55. package/assets/js/components/multiselect/multiselect.component.min.js +1 -1
  56. package/assets/js/components/nav/nav.component.min.js +2 -2
  57. package/assets/js/components/notification/notification.component.min.js +1 -1
  58. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  59. package/assets/js/components/rank/rank.component.min.js +4 -4
  60. package/assets/js/components/rankings/rankings.component.min.js +5 -5
  61. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  62. package/assets/js/components/search/search.component.min.js +1 -1
  63. package/assets/js/components/slider/slider.component.min.js +1 -1
  64. package/assets/js/components/table/table.component.min.js +1 -1
  65. package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
  66. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  67. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
  68. package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
  69. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  70. package/assets/js/components/video-card/video-card.component.js +3 -66
  71. package/assets/js/components/video-card/video-card.component.min.js +5 -5
  72. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  73. package/assets/js/modules/videos.js +147 -0
  74. package/assets/js/scripts.bundle.js +3 -3
  75. package/assets/js/scripts.bundle.js.map +1 -1
  76. package/assets/js/scripts.bundle.min.js +2 -2
  77. package/assets/js/scripts.bundle.min.js.map +1 -1
  78. package/assets/js/scripts.js +13 -2
  79. package/assets/sass/_elements.scss +6 -0
  80. package/assets/sass/_functions/functions.scss +6 -6
  81. package/assets/sass/_functions/variables.scss +24 -33
  82. package/assets/sass/_utility-mixins.scss +1 -0
  83. package/assets/sass/components/actionbar.component.scss +2 -3
  84. package/assets/sass/components/bento-grid.global.scss +0 -1
  85. package/assets/sass/components/charts.module.scss +0 -2
  86. package/assets/sass/components/fileupload.scss +3 -3
  87. package/assets/sass/components/menu.component.scss +123 -31
  88. package/assets/sass/components/menu.scss +68 -7
  89. package/assets/sass/components/nav.component.scss +2 -4
  90. package/assets/sass/components/rank.component.scss +14 -23
  91. package/assets/sass/components/rankings.component.scss +1 -7
  92. package/assets/sass/components/rankings.global.scss +6 -12
  93. package/assets/sass/components/table-basic.global.scss +2 -4
  94. package/assets/sass/components/table.global.scss +4 -4
  95. package/assets/sass/elements/buttons--global.scss +1 -1
  96. package/assets/sass/elements/details.scss +2 -4
  97. package/assets/sass/elements/dialog.scss +1 -3
  98. package/assets/sass/elements/forms.scss +28 -18
  99. package/assets/sass/elements/links.scss +49 -1
  100. package/assets/sass/elements/toggle-button.scss +55 -0
  101. package/assets/sass/elements/type.scss +15 -46
  102. package/assets/sass/error.scss +3 -9
  103. package/assets/sass/foundations/reboot.scss +3 -3
  104. package/assets/sass/templates/form.scss +4 -8
  105. package/assets/ts/components/menu/menu.component.ts +152 -171
  106. package/assets/ts/components/rank/rank.component.ts +1 -6
  107. package/assets/ts/components/rankings/rankings.component.ts +1 -7
  108. package/assets/ts/components/video-card/video-card.component.ts +4 -77
  109. package/assets/ts/modules/videos.ts +194 -0
  110. package/assets/ts/scripts.ts +7 -1
  111. package/dist/components.es.js +19 -19
  112. package/dist/components.umd.js +78 -143
  113. package/package.json +1 -1
  114. package/src/components/Rank/Rank.vue +1 -2
  115. package/src/components/Rankings/Rankings.vue +9 -10
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.2.2--beta2
2
+ * iamKey v7.3.0
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */const R=t=>t.charAt(0).toUpperCase()+t.slice(1),h=(t,e,a)=>e.split(/[\.\[\]\'\"]/).filter(i=>i).reduce((i,l)=>i?i[l]:a,t),D=(t=1)=>Math.floor(Math.random()*Date.now()*(t+1));var B=function(t,e,a,i){function l(o){return o instanceof a?o:new a(function(s){s(o)})}return new(a||(a=Promise))(function(o,s){function m(d){try{c(i.next(d))}catch(g){s(g)}}function b(d){try{c(i.throw(d))}catch(g){s(g)}}function c(d){d.done?o(d.value):l(d.value).then(m,b)}c((i=i.apply(t,e||[])).next())})};const P=(t,e)=>{switch(t){case"datetime":return new Date(e).toLocaleDateString("en-gb",{weekday:"short",year:"2-digit",month:"long",day:"numeric"})+" "+new Date(e).toLocaleTimeString("en-gb",{hour:"2-digit",minute:"2-digit"});case"date":return new Date(e).toLocaleDateString("en-gb",{day:"numeric",month:"long",year:"2-digit"});case"capitalise":return e=R(e)}},I=function(t){const e=new Object;return Array.from(t.querySelectorAll("[data-filter]")).forEach(i=>{if(!(i.type=="radio"&&!i.checked)&&!(i.type=="checkbox"&&!i.checked)&&i&&i.value){const l=i.getAttribute("data-filter");let o=i.value;i.hasAttribute("data-date-from")&&(o+="-date-from"),i.hasAttribute("data-date-to")&&(o+="-date-to"),e[l]||(e[l]=[]),e[l].push(o)}}),e},N=(t,e,a,i,l)=>{a.querySelector("[name=show]")||a.insertAdjacentHTML("beforeend",`<input name="show" type="hidden" value="${t.getAttribute("data-show")}" />`),a.querySelector("[name=page]")||a.insertAdjacentHTML("beforeend",`<input name="page" type="hidden" value="${t.getAttribute("data-page")}" />`),i.addEventListener("update-show",o=>{if(a.querySelector("[name=show]").value!=o.detail.show){a.querySelector("[name=show]").value=o.detail.show;const s=new CustomEvent("update-show",{detail:{show:o.detail.show}});t.dispatchEvent(s),T(t,i),l()}}),i.addEventListener("update-page",o=>{if(a.querySelector("[name=page]").value!=o.detail.page){a.querySelector("[name=page]").value=o.detail.page;const s=new CustomEvent("update-page",{detail:{page:o.detail.page}});if(t.dispatchEvent(s),T(t,i),l(),!t.hasAttribute("data-no-scroll")){const b=e.getBoundingClientRect().top+window.pageYOffset+-250;window.scrollTo({top:b,behavior:"smooth"})}}})},O=(t,e)=>{let a=document.createElement("form");return t.hasAttribute("data-filterby")?a=document.querySelector(`#${t.getAttribute("data-filterby")}`):t.closest("form")?a=t.closest("form"):e.parentNode.insertBefore(a,e.nextSibling),a},E=(t,e,a,i)=>{const l=t.shadowRoot.querySelector(".table__wrapper");t.hasAttribute("data-total")||t.setAttribute("data-total",t.querySelectorAll("tbody tr").length),t.hasAttribute("data-page")||t.setAttribute("data-page",1),t.hasAttribute("data-show")||t.setAttribute("data-show",5),t.hasAttribute("data-increment")||t.setAttribute("data-increment",t.getAttribute("data-show")),W(t,i),U(e),V(t,e),t.classList.contains("mh-sm")&&l.classList.add("mh-sm"),t.classList.contains("mh-md")&&l.classList.add("mh-md"),t.classList.contains("mh-lg")&&l.classList.add("mh-lg"),t.classList.contains("table--cta")&&(J(t,e),X(t,e))},W=(t,e)=>{t.hasAttribute("data-total")&&e.setAttribute("data-total",t.getAttribute("data-total")),t.hasAttribute("data-page")&&e.setAttribute("data-page",t.getAttribute("data-page")),t.hasAttribute("data-show")&&e.setAttribute("data-show",t.getAttribute("data-show")),t.hasAttribute("data-increment")&&e.setAttribute("data-increment",t.getAttribute("data-show")),t.hasAttribute("data-page-jump")&&e.setAttribute("data-page-jump","true"),t.hasAttribute("data-per-page")&&e.setAttribute("data-per-page","true"),t.hasAttribute("data-item-count")&&e.setAttribute("data-item-count","true"),t.hasAttribute("data-loading")&&e.setAttribute("data-loading","true"),t.classList.contains("table--fullwidth")&&e.setAttribute("data-minimal","true")},T=(t,e)=>{t.setAttribute("data-total",e.getAttribute("data-total")),t.setAttribute("data-page",e.getAttribute("data-page")),t.setAttribute("data-show",e.getAttribute("data-show")),t.setAttribute("data-increment",e.getAttribute("data-show"))},U=t=>{const e=Array.from(t.querySelectorAll("thead th"));Array.from(t.querySelectorAll("tbody tr")).forEach(i=>{const l=Array.from(i.querySelectorAll("th, td")),o=["0","low","medium","high","unknown","n/a","pending","verified","due","overdue","incomplete","complete","completed","approval required","upcoming","requires approval","to do","on track","not started","warning","successful","failed"];l.forEach((s,m)=>{const b=e[m];if(typeof b<"u"){const c=document.createElement("div");c.innerHTML=b.innerHTML;const d=c.textContent||c.innerText||"";s.setAttribute("data-label",d),b.hasAttribute("data-td-class")&&s.setAttribute("class",b.getAttribute("data-td-class")),b.hasAttribute("data-format")&&(s.setAttribute("data-format",b.getAttribute("data-format")),s.innerHTML=P(b.getAttribute("data-format"),s.textContent.trim())),o.includes(s.textContent.trim().toLowerCase())&&s.setAttribute("data-content",s.textContent.trim().toLowerCase())}})})},V=(t,e)=>{if(t.classList.contains("table--fullwidth")&&!t.hasAttribute("data-expandable")||e.querySelectorAll("thead tr th").length<4&&!t.hasAttribute("data-expandable"))return!1;Array.from(e.querySelectorAll("thead tr")).forEach(a=>{e.querySelectorAll("thead tr th.expand-button-heading").length||a.insertAdjacentHTML("afterbegin",`<th class="${t.hasAttribute("data-expandable")?"th--fixed ":""}expand-button-heading"></th>`)}),Array.from(e.querySelectorAll("tbody tr")).forEach((a,i)=>{const l=a.getAttribute("data-view")==="full"?"aria-expanded":"";a.insertAdjacentHTML("afterbegin",`<td class="${t.hasAttribute("data-expandable")?"td--fixed ":""}td--expand"><button class="btn btn-compact btn-secondary btn-sm" data-expand-button ${l} data-index="${i}">Expand</button></td>`)}),e.addEventListener("click",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("[data-expand-button]")){const i=a.target.closest("[data-expand-button]"),l=i.closest("tr");i.toggleAttribute("aria-expanded"),l.getAttribute("data-view")=="full"?l.setAttribute("data-view","default"):l.setAttribute("data-view","full"),i.blur(),t.dispatchEvent(new CustomEvent("row-expanded",{detail:{row:i.getAttribute("data-index")}}))}})},J=(t,e)=>{let a=0;Array.from(e.querySelectorAll("tbody tr")).forEach(i=>{const l=window.getComputedStyle(document.querySelector("html")),o=i.querySelector(":scope > *:last-child > *:first-child");if(o){o.classList.add("text-nowrap");let s=o.offsetWidth/parseFloat(l.fontSize);s+=1.8,a=a>s?a:s}}),t.style.setProperty("--cta-width",`${a}rem`)},X=(t,e)=>{function a(){Array.from(e.querySelectorAll("tr")).forEach(i=>{const l=i.offsetHeight;i.style.setProperty("--row-height",`${l}px`)})}new ResizeObserver(a).observe(e)},C=(t,e)=>{if(t.querySelector("iam-actionbar[data-selectall]")||document.querySelector(`iam-actionbar[data-for='${t.getAttribute("id")}']`)){const a=t.querySelector("iam-actionbar[data-selectall]")?t.querySelector("iam-actionbar[data-selectall]"):document.querySelector(`iam-actionbar[data-for='${t.getAttribute("id")}']`);Y(t,e,a)}t.querySelectorAll(".dialog__wrapper .btn-compact").forEach(a=>{a.classList.add("btn-sm"),a.classList.add("m-0");const i=a.closest("tr"),l=a.closest("td"),s=Array.prototype.slice.call(i.children).indexOf(l);l.classList.add("td--fixed"),e.querySelector(`thead tr th:nth-child(${s+1})`).classList.add("th--fixed")})},Y=(t,e,a)=>{Array.from(e.querySelectorAll("thead tr")).forEach(i=>{i.querySelector(".expand-button-heading")?i.querySelector(".expand-button-heading").insertAdjacentHTML("afterend",'<th class="th--fixed"></th>'):i.insertAdjacentHTML("afterbegin",'<th class="th--fixed"></th>')}),Array.from(e.querySelectorAll("tbody tr")).forEach((i,l)=>{if(i.setAttribute("data-index",l+1),!i.querySelector(".selectrow")){const o=`row${D(l)}`;i.querySelector(".td--expand")?i.querySelector(".td--expand").insertAdjacentHTML("afterend",`<td class="td--fixed selectrow selected"><input type="checkbox" name="row" id="${o}" ${i.hasAttribute("data-selected")?'checked="true"':""}/><label for="${o}"><span class="visually-hidden">Select row</span></label></td>`):i.insertAdjacentHTML("afterbegin",`<td class="td--fixed selectrow selected"><input type="checkbox" name="row" id="${o}" ${i.hasAttribute("data-selected")?'checked="true"':""}/><label for="${o}"><span class="visually-hidden">Select row</span></label></td>`)}}),e.addEventListener("change",i=>{if(i&&i.target instanceof HTMLElement&&i.target.closest(".selectrow input")){const l=i.target.closest(".selectrow input"),o=i.target.closest("tr"),s=e.querySelectorAll('.selectrow input[type="checkbox"]').length,m=e.querySelectorAll('.selectrow input[type="checkbox"]:checked').length;a.setAttribute("data-selected",s==m?"all":m);const b=new CustomEvent("row-selected",{detail:{rowIndex:o.getAttribute("data-index"),checked:!!l.checked}});t.dispatchEvent(b)}}),a.addEventListener("selected",i=>{if(i.detail.selected=="0"){Array.from(e.querySelectorAll('.selectrow input[type="checkbox"]')).forEach(o=>{o.checked=!1});const l=new CustomEvent("all-rows-unselected");t.dispatchEvent(l)}else if(i.detail.selected=="all"){Array.from(e.querySelectorAll('.selectrow input[type="checkbox"]')).forEach(o=>{o.checked=!0});const l=new CustomEvent("all-rows-selected");t.dispatchEvent(l)}})},G=(t,e,a,i)=>{y(t,e,a,i);const l=t.querySelector("iam-actionbar");a.addEventListener("submit",o=>{y(t,e,a,i),o.preventDefault()}),l&&l.addEventListener("change",o=>{y(t,e,a,i)})},y=function(t,e,a,i){return B(this,void 0,void 0,function*(){t.querySelector("iam-actionbar")&&!t.querySelector("iam-actionbar").closest("form")&&(a.querySelector(".duplicate-actionbar")||a.insertAdjacentHTML("beforeend",'<div class="duplicate-actionbar" style="visibility: hidden; pointer-events: none; position: absolute;"></div>'),a.querySelector(".duplicate-actionbar").innerHTML=t.querySelector("iam-actionbar").innerHTML),a.querySelector("input[name=show]")||a.insertAdjacentHTML("beforeend",`<input name="show" type="hidden" value="${t.getAttribute("data-show")}" />`),a.querySelector("input[name=page]")||a.insertAdjacentHTML("beforeend",`<input name="page" type="hidden" value="${t.getAttribute("data-page")}" />`),a.querySelector("input[name=page]").value=t.getAttribute("data-page"),a.querySelector("input[name=show]").value=t.getAttribute("data-show");const l=new FormData(a),o=new URLSearchParams(l).toString(),s=e.querySelectorAll("thead tr th:not(.expand-button-heading)"),m=e.querySelector("tbody"),b=a.getAttribute("data-ajax");t.classList.add("table--loading");const c=I(a);Array.from(a.querySelectorAll("[data-filter-count]")).forEach(n=>{n.innerHTML="",n.parentNode.classList.remove("hover")});let d=0;Object.values(c).forEach(n=>{typeof n=="object"&&Object.values(n).length?d+=Object.values(n).length:d++}),d&&Array.from(a.querySelectorAll("[data-filter-count]")).forEach(n=>{n.innerHTML+=`(${d})`,n.parentNode.classList.add("hover")}),window.controller||(window.controller=[]),window.controller[b]&&window.controller[b].abort(),window.controller[b]=new AbortController;const{signal:g}=controller[b];i.setAttribute("data-loading","true"),a.classList.add("processing");try{yield fetch(b+"?"+o,{signal:g,method:"get",credentials:"same-origin",headers:new Headers({"Content-Type":"application/json",Accept:"application/json","X-Requested-With":"XMLHttpRequest"})}).then(n=>n.json()).then(n=>{const M=a.hasAttribute("data-schema")?a.getAttribute("data-schema"):"data",H=a.hasAttribute("data-schema-total")?a.getAttribute("data-schema-total"):"meta.total",j=a.hasAttribute("data-schema-page")?a.getAttribute("data-schema-page"):"meta.current_page",v=h(n,H,15),S=h(n,j,1),_=h(n,M),$=t.hasAttribute("data-empty-msg")?t.getAttribute("data-empty-msg"):"No results found";_?(m.innerHTML="",_.forEach(p=>{const f=document.createElement("tr");s.forEach(r=>{let u="";const x=document.createElement("td");if(x.setAttribute("data-label",r.innerText),r.getAttribute("data-output")&&(u=r.getAttribute("data-output").replace(new RegExp(/{(.*?)}/,"gm"),function(k){return h(p,k.replace("{","").replace("}",""))})),r.hasAttribute("data-output-array")){const A=r.getAttribute("data-output"),k=h(p,A.replace("{","").replace("}",""));u="",k.forEach(q=>{const z=r.getAttribute("data-output-array");let w="";if(r.hasAttribute("data-output-array-property")&&r.hasAttribute("data-output-array-transform")){const L=h(q,r.getAttribute("data-output-array-property")),F=JSON.parse(r.getAttribute("data-output-array-transform"))[L];w=z.replace(`{${r.getAttribute("data-output-array-property")}}`,F)}w=w.replace(new RegExp(/{(.*?)}/,"gm"),function(L){return h(q,L.replace("{","").replace("}",""))}),u+=w})}r.hasAttribute("data-transform")&&(u=JSON.parse(r.getAttribute("data-transform"))[u],!u&&r.hasAttribute("data-default")&&(u=r.getAttribute("data-default"))),x.innerHTML=u,f.appendChild(x)}),m.appendChild(f)}),t.setAttribute("data-total",parseInt(v)),t.setAttribute("data-page",parseInt(S)),i.setAttribute("data-total",v),i.setAttribute("data-page",S),Array.from(a.querySelectorAll("[data-ajax-query]")).forEach(p=>{const f=h(n,p.getAttribute("data-ajax-query"),"");p.hasAttribute("data-total")?p.setAttribute("data-total",f):p.innerHTML=f}),parseInt(v)==0&&(m.innerHTML=`<tr><td colspan="100%"><span>${$}</span></td></tr>`),t.classList.remove("table--loading"),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Ajax table loaded",url:b,formData:o}),E(t,e,a,i),C(t,e,a,i)):m.innerHTML='<tr><td colspan="100%"><span>Error loading table</span></td></tr>',i.removeAttribute("data-loading"),a.classList.remove("processing")})}catch(n){console.log(n)}})};class K extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const e=document.createElement("template");e.innerHTML=`
5
5
  <style>
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.2.2--beta2
2
+ * iamKey v7.3.0
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */const u=t=>t.charAt(0).toUpperCase()+t.slice(1),h=(t,a)=>{switch(t){case"datetime":return new Date(a).toLocaleDateString("en-gb",{weekday:"short",year:"2-digit",month:"long",day:"numeric"})+" "+new Date(a).toLocaleTimeString("en-gb",{hour:"2-digit",minute:"2-digit"});case"date":return new Date(a).toLocaleDateString("en-gb",{day:"numeric",month:"long",year:"2-digit"});case"capitalise":return a=u(a)}},g=(t,a,e,i,n)=>{e.querySelector("[name=show]")||e.insertAdjacentHTML("beforeend",`<input name="show" type="hidden" value="${t.getAttribute("data-show")}" />`),e.querySelector("[name=page]")||e.insertAdjacentHTML("beforeend",`<input name="page" type="hidden" value="${t.getAttribute("data-page")}" />`),i.addEventListener("update-show",r=>{if(e.querySelector("[name=show]").value!=r.detail.show){e.querySelector("[name=show]").value=r.detail.show;const o=new CustomEvent("update-show",{detail:{show:r.detail.show}});t.dispatchEvent(o),c(t,i),n()}}),i.addEventListener("update-page",r=>{if(e.querySelector("[name=page]").value!=r.detail.page){e.querySelector("[name=page]").value=r.detail.page;const o=new CustomEvent("update-page",{detail:{page:r.detail.page}});if(t.dispatchEvent(o),c(t,i),n(),!t.hasAttribute("data-no-scroll")){const l=a.getBoundingClientRect().top+window.pageYOffset+-250;window.scrollTo({top:l,behavior:"smooth"})}}})},f=(t,a)=>{let e=document.createElement("form");return t.hasAttribute("data-filterby")?e=document.querySelector(`#${t.getAttribute("data-filterby")}`):t.closest("form")?e=t.closest("form"):a.parentNode.insertBefore(e,a.nextSibling),e},p=(t,a,e,i)=>{const n=t.shadowRoot.querySelector(".table__wrapper");t.hasAttribute("data-total")||t.setAttribute("data-total",t.querySelectorAll("tbody tr").length),t.hasAttribute("data-page")||t.setAttribute("data-page",1),t.hasAttribute("data-show")||t.setAttribute("data-show",5),t.hasAttribute("data-increment")||t.setAttribute("data-increment",t.getAttribute("data-show")),w(t,i),y(a),A(t,a),t.classList.contains("mh-sm")&&n.classList.add("mh-sm"),t.classList.contains("mh-md")&&n.classList.add("mh-md"),t.classList.contains("mh-lg")&&n.classList.add("mh-lg"),t.classList.contains("table--cta")&&(x(t,a),k(t,a))},w=(t,a)=>{t.hasAttribute("data-total")&&a.setAttribute("data-total",t.getAttribute("data-total")),t.hasAttribute("data-page")&&a.setAttribute("data-page",t.getAttribute("data-page")),t.hasAttribute("data-show")&&a.setAttribute("data-show",t.getAttribute("data-show")),t.hasAttribute("data-increment")&&a.setAttribute("data-increment",t.getAttribute("data-show")),t.hasAttribute("data-page-jump")&&a.setAttribute("data-page-jump","true"),t.hasAttribute("data-per-page")&&a.setAttribute("data-per-page","true"),t.hasAttribute("data-item-count")&&a.setAttribute("data-item-count","true"),t.hasAttribute("data-loading")&&a.setAttribute("data-loading","true"),t.classList.contains("table--fullwidth")&&a.setAttribute("data-minimal","true")},c=(t,a)=>{t.setAttribute("data-total",a.getAttribute("data-total")),t.setAttribute("data-page",a.getAttribute("data-page")),t.setAttribute("data-show",a.getAttribute("data-show")),t.setAttribute("data-increment",a.getAttribute("data-show"))},v=t=>{t.getAttribute("data-total");const a=t.getAttribute("data-page"),e=t.getAttribute("data-show");t.getAttribute("data-increment");const i=t.querySelector("table"),n=a*e,r=n-e;Array.from(i.querySelectorAll("tbody tr")).forEach((o,s)=>{s>=r&&s<n?o.classList.add("show"):o.classList.remove("show")})},y=t=>{const a=Array.from(t.querySelectorAll("thead th"));Array.from(t.querySelectorAll("tbody tr")).forEach(i=>{const n=Array.from(i.querySelectorAll("th, td")),r=["0","low","medium","high","unknown","n/a","pending","verified","due","overdue","incomplete","complete","completed","approval required","upcoming","requires approval","to do","on track","not started","warning","successful","failed"];n.forEach((o,s)=>{const l=a[s];if(typeof l<"u"){const m=document.createElement("div");m.innerHTML=l.innerHTML;const d=m.textContent||m.innerText||"";o.setAttribute("data-label",d),l.hasAttribute("data-td-class")&&o.setAttribute("class",l.getAttribute("data-td-class")),l.hasAttribute("data-format")&&(o.setAttribute("data-format",l.getAttribute("data-format")),o.innerHTML=h(l.getAttribute("data-format"),o.textContent.trim())),r.includes(o.textContent.trim().toLowerCase())&&o.setAttribute("data-content",o.textContent.trim().toLowerCase())}})})},A=(t,a)=>{if(t.classList.contains("table--fullwidth")&&!t.hasAttribute("data-expandable")||a.querySelectorAll("thead tr th").length<4&&!t.hasAttribute("data-expandable"))return!1;Array.from(a.querySelectorAll("thead tr")).forEach(e=>{a.querySelectorAll("thead tr th.expand-button-heading").length||e.insertAdjacentHTML("afterbegin",`<th class="${t.hasAttribute("data-expandable")?"th--fixed ":""}expand-button-heading"></th>`)}),Array.from(a.querySelectorAll("tbody tr")).forEach((e,i)=>{const n=e.getAttribute("data-view")==="full"?"aria-expanded":"";e.insertAdjacentHTML("afterbegin",`<td class="${t.hasAttribute("data-expandable")?"td--fixed ":""}td--expand"><button class="btn btn-compact btn-secondary btn-sm" data-expand-button ${n} data-index="${i}">Expand</button></td>`)}),a.addEventListener("click",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("[data-expand-button]")){const i=e.target.closest("[data-expand-button]"),n=i.closest("tr");i.toggleAttribute("aria-expanded"),n.getAttribute("data-view")=="full"?n.setAttribute("data-view","default"):n.setAttribute("data-view","full"),i.blur(),t.dispatchEvent(new CustomEvent("row-expanded",{detail:{row:i.getAttribute("data-index")}}))}})},x=(t,a)=>{let e=0;Array.from(a.querySelectorAll("tbody tr")).forEach(i=>{const n=window.getComputedStyle(document.querySelector("html")),r=i.querySelector(":scope > *:last-child > *:first-child");if(r){r.classList.add("text-nowrap");let o=r.offsetWidth/parseFloat(n.fontSize);o+=1.8,e=e>o?e:o}}),t.style.setProperty("--cta-width",`${e}rem`)},k=(t,a)=>{function e(){Array.from(a.querySelectorAll("tr")).forEach(i=>{const n=i.offsetHeight;i.style.setProperty("--row-height",`${n}px`)})}new ResizeObserver(e).observe(a)};class _ extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const a=document.createElement("template");a.innerHTML=`
5
5
  <style>
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.2.2--beta2
2
+ * iamKey v7.3.0
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */const T=function(t){return typeof t!="string"?!1:!isNaN(t)&&!isNaN(parseFloat(t))},M=(t,e)=>String(t).padStart(e,"0"),H=t=>t.charAt(0).toUpperCase()+t.slice(1),$=(t=1)=>Math.floor(Math.random()*Date.now()*(t+1)),A=(t,e)=>{switch(t){case"datetime":return new Date(e).toLocaleDateString("en-gb",{weekday:"short",year:"2-digit",month:"long",day:"numeric"})+" "+new Date(e).toLocaleTimeString("en-gb",{hour:"2-digit",minute:"2-digit"});case"date":return new Date(e).toLocaleDateString("en-gb",{day:"numeric",month:"long",year:"2-digit"});case"capitalise":return e=H(e)}},D=function(t){const e=new Object;return Array.from(t.querySelectorAll("[data-filter]")).forEach(s=>{if(!(s.type=="radio"&&!s.checked)&&!(s.type=="checkbox"&&!s.checked)&&s&&s.value){const l=s.getAttribute("data-filter");let o=s.value;s.hasAttribute("data-date-from")&&(o+="-date-from"),s.hasAttribute("data-date-to")&&(o+="-date-to"),e[l]||(e[l]=[]),e[l].push(o)}}),e},z=(t,e,a,s,l)=>{a.querySelector("[name=show]")||a.insertAdjacentHTML("beforeend",`<input name="show" type="hidden" value="${t.getAttribute("data-show")}" />`),a.querySelector("[name=page]")||a.insertAdjacentHTML("beforeend",`<input name="page" type="hidden" value="${t.getAttribute("data-page")}" />`),s.addEventListener("update-show",o=>{if(a.querySelector("[name=show]").value!=o.detail.show){a.querySelector("[name=show]").value=o.detail.show;const r=new CustomEvent("update-show",{detail:{show:o.detail.show}});t.dispatchEvent(r),L(t,s),l()}}),s.addEventListener("update-page",o=>{if(a.querySelector("[name=page]").value!=o.detail.page){a.querySelector("[name=page]").value=o.detail.page;const r=new CustomEvent("update-page",{detail:{page:o.detail.page}});if(t.dispatchEvent(r),L(t,s),l(),!t.hasAttribute("data-no-scroll")){const d=e.getBoundingClientRect().top+window.pageYOffset+-250;window.scrollTo({top:d,behavior:"smooth"})}}})},F=(t,e)=>{let a=document.createElement("form");return t.hasAttribute("data-filterby")?a=document.querySelector(`#${t.getAttribute("data-filterby")}`):t.closest("form")?a=t.closest("form"):e.parentNode.insertBefore(a,e.nextSibling),a},j=(t,e,a,s)=>{const l=t.shadowRoot.querySelector(".table__wrapper");t.hasAttribute("data-total")||t.setAttribute("data-total",t.querySelectorAll("tbody tr").length),t.hasAttribute("data-page")||t.setAttribute("data-page",1),t.hasAttribute("data-show")||t.setAttribute("data-show",5),t.hasAttribute("data-increment")||t.setAttribute("data-increment",t.getAttribute("data-show")),I(t,s),q(e),B(t,e),t.classList.contains("mh-sm")&&l.classList.add("mh-sm"),t.classList.contains("mh-md")&&l.classList.add("mh-md"),t.classList.contains("mh-lg")&&l.classList.add("mh-lg"),t.classList.contains("table--cta")&&(P(t,e),N(t,e))},I=(t,e)=>{t.hasAttribute("data-total")&&e.setAttribute("data-total",t.getAttribute("data-total")),t.hasAttribute("data-page")&&e.setAttribute("data-page",t.getAttribute("data-page")),t.hasAttribute("data-show")&&e.setAttribute("data-show",t.getAttribute("data-show")),t.hasAttribute("data-increment")&&e.setAttribute("data-increment",t.getAttribute("data-show")),t.hasAttribute("data-page-jump")&&e.setAttribute("data-page-jump","true"),t.hasAttribute("data-per-page")&&e.setAttribute("data-per-page","true"),t.hasAttribute("data-item-count")&&e.setAttribute("data-item-count","true"),t.hasAttribute("data-loading")&&e.setAttribute("data-loading","true"),t.classList.contains("table--fullwidth")&&e.setAttribute("data-minimal","true")},L=(t,e)=>{t.setAttribute("data-total",e.getAttribute("data-total")),t.setAttribute("data-page",e.getAttribute("data-page")),t.setAttribute("data-show",e.getAttribute("data-show")),t.setAttribute("data-increment",e.getAttribute("data-show"))},S=t=>{t.getAttribute("data-total");const e=t.getAttribute("data-page"),a=t.getAttribute("data-show");t.getAttribute("data-increment");const s=t.querySelector("table"),l=e*a,o=l-a;Array.from(s.querySelectorAll("tbody tr")).forEach((r,b)=>{b>=o&&b<l?r.classList.add("show"):r.classList.remove("show")})},q=t=>{const e=Array.from(t.querySelectorAll("thead th"));Array.from(t.querySelectorAll("tbody tr")).forEach(s=>{const l=Array.from(s.querySelectorAll("th, td")),o=["0","low","medium","high","unknown","n/a","pending","verified","due","overdue","incomplete","complete","completed","approval required","upcoming","requires approval","to do","on track","not started","warning","successful","failed"];l.forEach((r,b)=>{const d=e[b];if(typeof d<"u"){const i=document.createElement("div");i.innerHTML=d.innerHTML;const n=i.textContent||i.innerText||"";r.setAttribute("data-label",n),d.hasAttribute("data-td-class")&&r.setAttribute("class",d.getAttribute("data-td-class")),d.hasAttribute("data-format")&&(r.setAttribute("data-format",d.getAttribute("data-format")),r.innerHTML=A(d.getAttribute("data-format"),r.textContent.trim())),o.includes(r.textContent.trim().toLowerCase())&&r.setAttribute("data-content",r.textContent.trim().toLowerCase())}})})},B=(t,e)=>{if(t.classList.contains("table--fullwidth")&&!t.hasAttribute("data-expandable")||e.querySelectorAll("thead tr th").length<4&&!t.hasAttribute("data-expandable"))return!1;Array.from(e.querySelectorAll("thead tr")).forEach(a=>{e.querySelectorAll("thead tr th.expand-button-heading").length||a.insertAdjacentHTML("afterbegin",`<th class="${t.hasAttribute("data-expandable")?"th--fixed ":""}expand-button-heading"></th>`)}),Array.from(e.querySelectorAll("tbody tr")).forEach((a,s)=>{const l=a.getAttribute("data-view")==="full"?"aria-expanded":"";a.insertAdjacentHTML("afterbegin",`<td class="${t.hasAttribute("data-expandable")?"td--fixed ":""}td--expand"><button class="btn btn-compact btn-secondary btn-sm" data-expand-button ${l} data-index="${s}">Expand</button></td>`)}),e.addEventListener("click",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("[data-expand-button]")){const s=a.target.closest("[data-expand-button]"),l=s.closest("tr");s.toggleAttribute("aria-expanded"),l.getAttribute("data-view")=="full"?l.setAttribute("data-view","default"):l.setAttribute("data-view","full"),s.blur(),t.dispatchEvent(new CustomEvent("row-expanded",{detail:{row:s.getAttribute("data-index")}}))}})},P=(t,e)=>{let a=0;Array.from(e.querySelectorAll("tbody tr")).forEach(s=>{const l=window.getComputedStyle(document.querySelector("html")),o=s.querySelector(":scope > *:last-child > *:first-child");if(o){o.classList.add("text-nowrap");let r=o.offsetWidth/parseFloat(l.fontSize);r+=1.8,a=a>r?a:r}}),t.style.setProperty("--cta-width",`${a}rem`)},N=(t,e)=>{function a(){Array.from(e.querySelectorAll("tr")).forEach(s=>{const l=s.offsetHeight;s.style.setProperty("--row-height",`${l}px`)})}new ResizeObserver(a).observe(e)},R=(t,e)=>{if(t.querySelector("iam-actionbar[data-selectall]")||document.querySelector(`iam-actionbar[data-for='${t.getAttribute("id")}']`)){const a=t.querySelector("iam-actionbar[data-selectall]")?t.querySelector("iam-actionbar[data-selectall]"):document.querySelector(`iam-actionbar[data-for='${t.getAttribute("id")}']`);W(t,e,a)}t.querySelectorAll(".dialog__wrapper .btn-compact").forEach(a=>{a.classList.add("btn-sm"),a.classList.add("m-0");const s=a.closest("tr"),l=a.closest("td"),r=Array.prototype.slice.call(s.children).indexOf(l);l.classList.add("td--fixed"),e.querySelector(`thead tr th:nth-child(${r+1})`).classList.add("th--fixed")})},W=(t,e,a)=>{Array.from(e.querySelectorAll("thead tr")).forEach(s=>{s.querySelector(".expand-button-heading")?s.querySelector(".expand-button-heading").insertAdjacentHTML("afterend",'<th class="th--fixed"></th>'):s.insertAdjacentHTML("afterbegin",'<th class="th--fixed"></th>')}),Array.from(e.querySelectorAll("tbody tr")).forEach((s,l)=>{if(s.setAttribute("data-index",l+1),!s.querySelector(".selectrow")){const o=`row${$(l)}`;s.querySelector(".td--expand")?s.querySelector(".td--expand").insertAdjacentHTML("afterend",`<td class="td--fixed selectrow selected"><input type="checkbox" name="row" id="${o}" ${s.hasAttribute("data-selected")?'checked="true"':""}/><label for="${o}"><span class="visually-hidden">Select row</span></label></td>`):s.insertAdjacentHTML("afterbegin",`<td class="td--fixed selectrow selected"><input type="checkbox" name="row" id="${o}" ${s.hasAttribute("data-selected")?'checked="true"':""}/><label for="${o}"><span class="visually-hidden">Select row</span></label></td>`)}}),e.addEventListener("change",s=>{if(s&&s.target instanceof HTMLElement&&s.target.closest(".selectrow input")){const l=s.target.closest(".selectrow input"),o=s.target.closest("tr"),r=e.querySelectorAll('.selectrow input[type="checkbox"]').length,b=e.querySelectorAll('.selectrow input[type="checkbox"]:checked').length;a.setAttribute("data-selected",r==b?"all":b);const d=new CustomEvent("row-selected",{detail:{rowIndex:o.getAttribute("data-index"),checked:!!l.checked}});t.dispatchEvent(d)}}),a.addEventListener("selected",s=>{if(s.detail.selected=="0"){Array.from(e.querySelectorAll('.selectrow input[type="checkbox"]')).forEach(o=>{o.checked=!1});const l=new CustomEvent("all-rows-unselected");t.dispatchEvent(l)}else if(s.detail.selected=="all"){Array.from(e.querySelectorAll('.selectrow input[type="checkbox"]')).forEach(o=>{o.checked=!0});const l=new CustomEvent("all-rows-selected");t.dispatchEvent(l)}})},O=(t,e,a,s,l)=>{V(t,e),Q(t,e),a.addEventListener("change",o=>{o&&o.target instanceof HTMLElement&&o.target.closest("[data-sort]")&&E(e,a,l)}),U(t,e,a,s,l)},V=(t,e)=>{e.addEventListener("click",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("[data-sort]")){const s=a.target.closest("[data-sort]");s.setAttribute("data-sort","true"),Array.from(e.querySelectorAll("th[data-sort]")).forEach(b=>{b!=s&&(b.setAttribute("data-sort",""),b.removeAttribute("data-order-by"),s.setAttribute("title","Click to sort ascending"))}),s.hasAttribute("data-order-by")&&s.getAttribute("data-order-by")=="asc"?(s.setAttribute("data-order-by","desc"),s.setAttribute("title","Click to sort ascending")):(s.setAttribute("data-order-by","asc"),s.setAttribute("title","Click to sort descending"));const l=new CustomEvent("sort-by-heading",{detail:{heading:s.textContent,sortBy:s.getAttribute("data-order-by"),ref:s.getAttribute("data-ref")}});t.dispatchEvent(l);const o=s.textContent.trim(),r=s.getAttribute("data-order-by");t.hasAttribute("data-submit")||_(e,o,r)}})},Q=(t,e)=>{var a;const s=t.querySelector("iam-actionbar");if(!s)return!1;const l=(a=s.shadowRoot)===null||a===void 0?void 0:a.querySelector("input#search");if(!l)return!1;const o=l.getAttribute("id"),r=l.parentNode,b={};e.querySelectorAll("tbody td:not(.td--fixed)").forEach(d=>{d.querySelector(".td__content")?b[d.querySelector(".td__content").textContent]=d.querySelector(".td__content").textContent:b[d.textContent]=d.textContent}),l.setAttribute("list",`${o}_list`),l.setAttribute("autocomplete","off"),r.querySelector("datalist")||(r.innerHTML+=`<datalist id="${o}_list"></datalist>`),r.querySelector("datalist").innerHTML=`${Object.keys(b).map(d=>`<option value="${d}"></option>`).join("")}`},E=(t,e,a)=>{if(e.getAttribute("data-ajax"))return!1;const s=t.querySelector("tbody");let l=e.querySelector('input[type="radio"][data-sort]:checked');if(e.querySelector("select[data-sort]")){const d=e.querySelector("select[data-sort]");l=e.querySelector(`select[data-sort] option:nth-child(${d.selectedIndex+1})`)}const o=l.getAttribute("data-sort"),r=l.getAttribute("data-order"),b=l.getAttribute("data-format");if(!o)return s.innerHTML=a.innerHTML,q(t),!1;_(t,o,r,b)},_=(t,e,a,s="")=>{const l=t.querySelector("tbody");let o=[];["asc","desc","descending"].includes(a)||(o=a.split(","));let r=[];Array.from(l.querySelectorAll("tr")).forEach(d=>{let i=d.querySelector('td[data-label="'+e+'"], th[data-label="'+e+'"]').textContent.trim();d.querySelector('[data-label="'+e+'"] .td__content')&&(i=d.querySelector('[data-label="'+e+'"] .td__content').textContent.trim()),o.length&&o.includes(i)&&(i=o.indexOf(i)),T(i)&&(i=M(i,10)),s&&s=="date"&&(i=new Date(i));const n={index:i,row:d};r.push(n)}),r.sort((d,i)=>d.index>i.index?1:-1),(a=="descending"||a=="desc")&&(r=r.reverse());let b="";r.forEach(d=>{b+=d.row.outerHTML}),l.innerHTML=b},U=(t,e,a,s,l)=>{let o;const r=function(i,n=!1){if(a.classList.contains("processing"))return!1;Array.from(a.querySelectorAll("iam-applied-filters")).forEach(c=>{const h=new Event("tags-set");c.dispatchEvent(h)}),i.type=="submit"&&(a.classList.add("processing"),Array.from(a.querySelectorAll("[data-duplicate]")).forEach(c=>{const h=c.getAttribute("data-duplicate"),m=document.getElementById(h),u=document.querySelector(`[for="${h}"] iam-card`);if(m.checked!=c.checked)if(u){const g=new Event("click");u.dispatchEvent(g)}else m.checked=c.checked}),a.classList.remove("processing")),k(t,e,a,s),C(t,e,a)};t.querySelector("iam-actionbar[data-search]")&&t.querySelector("iam-actionbar[data-search]").addEventListener("search-submit",i=>{a.querySelector("input[data-search]")?a.querySelector("input[data-search]").value=i.detail.search:a.insertAdjacentHTML("beforeend",`<input type="hidden" name="search" data-search="${t.querySelector("iam-actionbar[data-search]").getAttribute("data-search")}" value="${i.detail.search}"/>`);const n=new CustomEvent("search-submit",{detail:i.details});t.dispatchEvent(n),clearTimeout(o),r(i)}),t.querySelector("iam-actionbar")&&!t.querySelector("iam-actionbar").closest("form")&&t.querySelector("iam-actionbar").addEventListener("change",i=>{a.querySelector(".duplicate-actionbar")||a.insertAdjacentHTML("beforeend",'<div class="duplicate-actionbar" style="visibility: hidden; pointer-events: none; position: absolute;"></div>'),a.querySelector(".duplicate-actionbar").innerHTML=t.querySelector("iam-actionbar").innerHTML,k(t,e,a,s)}),a.addEventListener("keyup",i=>{clearTimeout(o),i&&i.target instanceof HTMLElement&&i.target.closest("input[data-search]")&&(o=setTimeout(function(){r(i)},500))}),a.addEventListener("change",i=>{if(clearTimeout(o),i&&i.target instanceof HTMLElement&&i.target.closest("input[data-search]")&&r(i),i&&i.target instanceof HTMLElement&&i.target.closest("[data-filter][data-no-ajax]")?(k(t,e,a,s),C(e,a)):(i&&i.target instanceof HTMLElement&&i.target.closest("[data-filter]")&&i.target.closest("form .dialog__wrapper > dialog")||i&&i.target instanceof HTMLElement&&i.target.closest("[data-filter]")&&!i.target.closest("form dialog"))&&r(i),i&&i.target instanceof HTMLElement&&i.target.closest("[data-show]")&&r(i),i&&i.target instanceof HTMLElement&&i.target.closest("[data-mimic]")&&r(i),i&&i.target instanceof HTMLElement&&i.target.hasAttribute("id")){const n=i.target.getAttribute("id");document.querySelector(`[data-duplicate="${n}"]`)&&(document.querySelector(`[data-duplicate="${n}"]`).checked=i.target.checked)}}),a.addEventListener("click",i=>{if(clearTimeout(o),i&&i.target instanceof HTMLElement&&i.target.closest('dialog button:not([type="button"])')&&i.target.closest('dialog button:not([type="button"])').closest("dialog").close(),i&&i.target instanceof HTMLElement&&i.target.closest(".dialog__close")&&(i.preventDefault(),i.stopPropagation()),i&&i.target instanceof HTMLElement&&i.target.closest("[data-clear]")){a.classList.add("processing"),Array.from(a.querySelectorAll(".applied-filters")).forEach(c=>{c.innerHTML=""});const n=a.elements;for(let c=0;c<n.length;c++)switch(n[c].type.toLowerCase()?n[c].type.toLowerCase():"text"){case"text":case"password":case"textarea":n[c].value="";break;case"radio":case"checkbox":if(n[c].checked){const m=n[c],u=m.getAttribute("id"),g=document.querySelector(`[for="${u}"`);if(g.querySelector("iam-card")){const p=g.querySelector("iam-card"),f=new Event("click");p.dispatchEvent(f)}m.checked=!1}break;case"select-one":case"select-multi":n[c].selectedIndex=-1;break}a.classList.remove("processing"),a.hasAttribute("data-submit")||E(e,a,l),r(i)}}),a.addEventListener("submit",i=>{clearTimeout(o),a.hasAttribute("data-submit")||i.preventDefault(),r(i)}),a.addEventListener("force",i=>{r(i)}),a.addEventListener("paginate",i=>{r(i,!0)});const b=[],d=[];Array.from(a.querySelectorAll("[data-mimic]")).forEach(i=>{const n=i.getAttribute("data-mimic");Array.from(document.querySelectorAll(`[name="${n}"]`)).forEach(c=>{const h=c.closest("form");b.includes(h)||b.push(h),d.includes(n)||d.push(n)})}),b.forEach(i=>{const n=function(){const c=[],h=new FormData(i);for(const[m,u]of h)document.querySelector(`[data-mimic="${m}"]`)&&!c.includes(m)?(c.push(m),document.querySelector(`[data-mimic="${m}"]`).value=u):document.querySelector(`[data-mimic="${m}"]`)&&(document.querySelector(`[data-mimic="${m}"]`).value+=","+u);for(const m of c){const u=new Event("force");a.dispatchEvent(u)}for(const m of d)if(!h.has(m)&&i.querySelector(`[name="${m}"]`)){document.querySelector(`[data-mimic="${m}"]`).value="";const u=new Event("force");a.dispatchEvent(u)}};i.addEventListener("force",()=>{n()}),i.addEventListener("change",()=>{n()})})},k=(t,e,a,s)=>{e.classList.remove("table--filtered");const l=D(a),o=[];let r=0;const b=a.querySelector("[data-pagination]")?parseInt(a.querySelector("[data-pagination]").value):1,d=a.querySelector("[data-show]")?parseInt(a.querySelector("[data-show]").value):15;if(Array.from(e.querySelectorAll("tbody tr")).forEach(n=>{n.classList.remove("filtered"),n.classList.remove("filtered--matched"),n.classList.remove("filtered--show"),n.removeAttribute("data-filtered-by")}),a.querySelector("input[data-search]")){const n=a.querySelector("input[data-search]");e.querySelectorAll("thead tr th").forEach(c=>{o.push({column:`${c.textContent.trim()}`,value:`${n.value}`})})}Array.from(a.querySelectorAll("[data-filter-count]")).forEach(n=>{n.innerHTML="",n.parentNode.classList.remove("hover")});let i=0;Object.values(l).forEach(n=>{typeof n=="object"&&Object.values(n).length?i+=Object.values(n).length:i++}),i&&Array.from(a.querySelectorAll("[data-filter-count]")).forEach(n=>{n.innerHTML+=`(${i})`,n.parentNode.classList.add("hover")}),e.classList.add("table--filtered");for(const[n,c]of Object.entries(l))Array.from(e.querySelectorAll("tbody tr:not(.filtered)")).forEach(h=>{let m=!1;c.forEach(u=>{const g=h.querySelector(`[data-label="${n}"]`);if(u.includes("-date-from")){const p=new Date(u.replace("-date-from","")),f=new Date(g.textContent.toLowerCase());p.setHours(0,0,0,0),f.setHours(0,0,0,0),f<p?(h.classList.add("less-than-from-date"),m=!1):!h.classList.contains("less-than-from-date")&&!h.classList.contains("greater-than-to-date")&&(m=!0)}else if(u.includes("-date-to")){const p=new Date(u.replace("-date-to","")),f=new Date(g.textContent.toLowerCase());p.setHours(0,0,0,0),f.setHours(0,0,0,0),f>p?(h.classList.add("greater-than-to-date"),m=!1):!h.classList.contains("less-than-from-date")&&!h.classList.contains("greater-than-to-date")&&(m=!0)}if(u&&u=="$today")u=A("date",new Date);else if(u&&u=="$yesterday"){const p=new Date;p.setDate(p.getDate()-1),u=A("date",p)}else if(u&&(u=="$thisWeek"||u=="$lastWeek")){const p=new Date,f=new Date(p.setDate(p.getDate()-(p.getDay()-1))),w=new Date(p.setDate(p.getDate()-p.getDay()+7)),y=new Date(g.textContent.toLowerCase());if(p.setHours(0,0,0,0),f.setHours(0,0,0,0),w.setHours(0,0,0,0),y.setHours(0,0,0,0),u=="$thisWeek")m=y>=f&&y<=w;else{const v=new Date(f.setDate(f.getDate()-7)),x=new Date(w.setDate(w.getDate()-7));v.setHours(0,0,0,0),x.setHours(0,0,0,0),m=y>=v&&y<=x}}else if(u&&u=="$thisMonth"){const p=new Date,f=p.getFullYear(),w=p.getMonth(),y=new Date(f,w,1),v=new Date(f,w+1,0),x=new Date(g.textContent.toLowerCase());y.setHours(0,0,0,0),v.setHours(0,0,0,0),x.setHours(0,0,0,0),m=x>=y&&x<=v}else if(u&&u=="$lastMonth"){const p=new Date,f=p.getFullYear(),w=p.getMonth(),y=new Date(f,w-1,1),v=new Date(f,w,0),x=new Date(g.textContent.toLowerCase());y.setHours(0,0,0,0),v.setHours(0,0,0,0),x.setHours(0,0,0,0),m=x>=y&&x<=v}g&&g.textContent.toLowerCase().includes(u.replace("-"," ").toLowerCase())&&(m=!0)}),m||(h.classList.add("filtered"),h.setAttribute("data-filtered-by",n))});Array.from(e.querySelectorAll("tbody tr:not(.filtered)")).forEach(n=>{let c=!(o.length>0&&o[0].value.length>=3);o.forEach(h=>{const m=n.querySelector(`[data-label="${h.column}"]`);m&&h.value.length>=3&&m.textContent.toLowerCase().includes(h.value.toLowerCase())&&(c=!0)}),c||n.classList.add("filtered")}),Array.from(e.querySelectorAll("tbody tr:not(.filtered)")).forEach(n=>{r++,n.classList.add("filtered--matched"),Math.ceil(r/d)==parseInt(b)&&n.classList.add("filtered--show")}),s&&(s.setAttribute("data-total",r),s.setAttribute("data-show",d),s.setAttribute("data-page",b))},C=(t,e,a)=>{Array.from(a.querySelectorAll("[data-query]")).forEach(l=>{const o=l.getAttribute("data-query");let r=0;if(o=="total")t.hasAttribute("data-total")?r=t.getAttribute("data-total"):r=(e.classList.contains("table--filtered"),e.querySelectorAll("tbody tr").length);else if(!o.includes(" == ")&&o.includes(" & ")){const b=o.split(" & ");let d="";b.forEach(i=>{d+=`:not([data-filtered-by="${i}"])`}),r=Array.from(e.querySelectorAll(`tbody tr${d}`)).length}else if(!o.includes(" == "))r=Array.from(e.querySelectorAll(`tbody tr:not([data-filtered-by="${o}"])`)).length;else if(o.includes(" && ")){const b=o.split(" && ");r=Array.from(e.querySelectorAll("tbody tr:not(.filtered)")).filter(function(d){let i=!0;for(const n of Object.entries(b)){const c=n.split(" == ");(!d.querySelector(`td[data-label="${c[0]}"]`)||d.querySelector(`td[data-label="${c[0]}"]`).textContent!=`${c[1]}`)&&(i=!1)}return i}).length}else{const b=o.split(" == ");r=Array.from(e.querySelectorAll(`tbody tr.filtered--matched td[data-label="${b[0]}"], tbody tr[data-filtered-by="${b[0]}"] td[data-label="${b[0]}"]`)).filter(function(d){return d.textContent===b[1]}).length}l.hasAttribute("data-total")?l.setAttribute("data-total",r):l.innerHTML=r})};class Y extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const e=document.createElement("template");e.innerHTML=`
5
5
  <style>
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.2.2--beta2
2
+ * iamKey v7.3.0
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */const h=t=>t.charAt(0).toUpperCase()+t.slice(1),u=(t=1)=>Math.floor(Math.random()*Date.now()*(t+1)),p=(t,a)=>{switch(t){case"datetime":return new Date(a).toLocaleDateString("en-gb",{weekday:"short",year:"2-digit",month:"long",day:"numeric"})+" "+new Date(a).toLocaleTimeString("en-gb",{hour:"2-digit",minute:"2-digit"});case"date":return new Date(a).toLocaleDateString("en-gb",{day:"numeric",month:"long",year:"2-digit"});case"capitalise":return a=h(a)}},g=(t,a,e,i,l)=>{e.querySelector("[name=show]")||e.insertAdjacentHTML("beforeend",`<input name="show" type="hidden" value="${t.getAttribute("data-show")}" />`),e.querySelector("[name=page]")||e.insertAdjacentHTML("beforeend",`<input name="page" type="hidden" value="${t.getAttribute("data-page")}" />`),i.addEventListener("update-show",o=>{if(e.querySelector("[name=show]").value!=o.detail.show){e.querySelector("[name=show]").value=o.detail.show;const b=new CustomEvent("update-show",{detail:{show:o.detail.show}});t.dispatchEvent(b),c(t,i),l()}}),i.addEventListener("update-page",o=>{if(e.querySelector("[name=page]").value!=o.detail.page){e.querySelector("[name=page]").value=o.detail.page;const b=new CustomEvent("update-page",{detail:{page:o.detail.page}});if(t.dispatchEvent(b),c(t,i),l(),!t.hasAttribute("data-no-scroll")){const s=a.getBoundingClientRect().top+window.pageYOffset+-250;window.scrollTo({top:s,behavior:"smooth"})}}})},f=(t,a)=>{let e=document.createElement("form");return t.hasAttribute("data-filterby")?e=document.querySelector(`#${t.getAttribute("data-filterby")}`):t.closest("form")?e=t.closest("form"):a.parentNode.insertBefore(e,a.nextSibling),e},w=(t,a,e,i)=>{const l=t.shadowRoot.querySelector(".table__wrapper");t.hasAttribute("data-total")||t.setAttribute("data-total",t.querySelectorAll("tbody tr").length),t.hasAttribute("data-page")||t.setAttribute("data-page",1),t.hasAttribute("data-show")||t.setAttribute("data-show",5),t.hasAttribute("data-increment")||t.setAttribute("data-increment",t.getAttribute("data-show")),y(t,i),x(a),v(t,a),t.classList.contains("mh-sm")&&l.classList.add("mh-sm"),t.classList.contains("mh-md")&&l.classList.add("mh-md"),t.classList.contains("mh-lg")&&l.classList.add("mh-lg"),t.classList.contains("table--cta")&&(k(t,a),A(t,a))},y=(t,a)=>{t.hasAttribute("data-total")&&a.setAttribute("data-total",t.getAttribute("data-total")),t.hasAttribute("data-page")&&a.setAttribute("data-page",t.getAttribute("data-page")),t.hasAttribute("data-show")&&a.setAttribute("data-show",t.getAttribute("data-show")),t.hasAttribute("data-increment")&&a.setAttribute("data-increment",t.getAttribute("data-show")),t.hasAttribute("data-page-jump")&&a.setAttribute("data-page-jump","true"),t.hasAttribute("data-per-page")&&a.setAttribute("data-per-page","true"),t.hasAttribute("data-item-count")&&a.setAttribute("data-item-count","true"),t.hasAttribute("data-loading")&&a.setAttribute("data-loading","true"),t.classList.contains("table--fullwidth")&&a.setAttribute("data-minimal","true")},c=(t,a)=>{t.setAttribute("data-total",a.getAttribute("data-total")),t.setAttribute("data-page",a.getAttribute("data-page")),t.setAttribute("data-show",a.getAttribute("data-show")),t.setAttribute("data-increment",a.getAttribute("data-show"))},x=t=>{const a=Array.from(t.querySelectorAll("thead th"));Array.from(t.querySelectorAll("tbody tr")).forEach(i=>{const l=Array.from(i.querySelectorAll("th, td")),o=["0","low","medium","high","unknown","n/a","pending","verified","due","overdue","incomplete","complete","completed","approval required","upcoming","requires approval","to do","on track","not started","warning","successful","failed"];l.forEach((b,n)=>{const s=a[n];if(typeof s<"u"){const d=document.createElement("div");d.innerHTML=s.innerHTML;const m=d.textContent||d.innerText||"";b.setAttribute("data-label",m),s.hasAttribute("data-td-class")&&b.setAttribute("class",s.getAttribute("data-td-class")),s.hasAttribute("data-format")&&(b.setAttribute("data-format",s.getAttribute("data-format")),b.innerHTML=p(s.getAttribute("data-format"),b.textContent.trim())),o.includes(b.textContent.trim().toLowerCase())&&b.setAttribute("data-content",b.textContent.trim().toLowerCase())}})})},v=(t,a)=>{if(t.classList.contains("table--fullwidth")&&!t.hasAttribute("data-expandable")||a.querySelectorAll("thead tr th").length<4&&!t.hasAttribute("data-expandable"))return!1;Array.from(a.querySelectorAll("thead tr")).forEach(e=>{a.querySelectorAll("thead tr th.expand-button-heading").length||e.insertAdjacentHTML("afterbegin",`<th class="${t.hasAttribute("data-expandable")?"th--fixed ":""}expand-button-heading"></th>`)}),Array.from(a.querySelectorAll("tbody tr")).forEach((e,i)=>{const l=e.getAttribute("data-view")==="full"?"aria-expanded":"";e.insertAdjacentHTML("afterbegin",`<td class="${t.hasAttribute("data-expandable")?"td--fixed ":""}td--expand"><button class="btn btn-compact btn-secondary btn-sm" data-expand-button ${l} data-index="${i}">Expand</button></td>`)}),a.addEventListener("click",e=>{if(e&&e.target instanceof HTMLElement&&e.target.closest("[data-expand-button]")){const i=e.target.closest("[data-expand-button]"),l=i.closest("tr");i.toggleAttribute("aria-expanded"),l.getAttribute("data-view")=="full"?l.setAttribute("data-view","default"):l.setAttribute("data-view","full"),i.blur(),t.dispatchEvent(new CustomEvent("row-expanded",{detail:{row:i.getAttribute("data-index")}}))}})},k=(t,a)=>{let e=0;Array.from(a.querySelectorAll("tbody tr")).forEach(i=>{const l=window.getComputedStyle(document.querySelector("html")),o=i.querySelector(":scope > *:last-child > *:first-child");if(o){o.classList.add("text-nowrap");let b=o.offsetWidth/parseFloat(l.fontSize);b+=1.8,e=e>b?e:b}}),t.style.setProperty("--cta-width",`${e}rem`)},A=(t,a)=>{function e(){Array.from(a.querySelectorAll("tr")).forEach(i=>{const l=i.offsetHeight;i.style.setProperty("--row-height",`${l}px`)})}new ResizeObserver(e).observe(a)},_=(t,a)=>{if(t.querySelector("iam-actionbar[data-selectall]")||document.querySelector(`iam-actionbar[data-for='${t.getAttribute("id")}']`)){const e=t.querySelector("iam-actionbar[data-selectall]")?t.querySelector("iam-actionbar[data-selectall]"):document.querySelector(`iam-actionbar[data-for='${t.getAttribute("id")}']`);L(t,a,e)}t.querySelectorAll(".dialog__wrapper .btn-compact").forEach(e=>{e.classList.add("btn-sm"),e.classList.add("m-0");const i=e.closest("tr"),l=e.closest("td"),b=Array.prototype.slice.call(i.children).indexOf(l);l.classList.add("td--fixed"),a.querySelector(`thead tr th:nth-child(${b+1})`).classList.add("th--fixed")})},L=(t,a,e)=>{Array.from(a.querySelectorAll("thead tr")).forEach(i=>{i.querySelector(".expand-button-heading")?i.querySelector(".expand-button-heading").insertAdjacentHTML("afterend",'<th class="th--fixed"></th>'):i.insertAdjacentHTML("afterbegin",'<th class="th--fixed"></th>')}),Array.from(a.querySelectorAll("tbody tr")).forEach((i,l)=>{if(i.setAttribute("data-index",l+1),!i.querySelector(".selectrow")){const o=`row${u(l)}`;i.querySelector(".td--expand")?i.querySelector(".td--expand").insertAdjacentHTML("afterend",`<td class="td--fixed selectrow selected"><input type="checkbox" name="row" id="${o}" ${i.hasAttribute("data-selected")?'checked="true"':""}/><label for="${o}"><span class="visually-hidden">Select row</span></label></td>`):i.insertAdjacentHTML("afterbegin",`<td class="td--fixed selectrow selected"><input type="checkbox" name="row" id="${o}" ${i.hasAttribute("data-selected")?'checked="true"':""}/><label for="${o}"><span class="visually-hidden">Select row</span></label></td>`)}}),a.addEventListener("change",i=>{if(i&&i.target instanceof HTMLElement&&i.target.closest(".selectrow input")){const l=i.target.closest(".selectrow input"),o=i.target.closest("tr"),b=a.querySelectorAll('.selectrow input[type="checkbox"]').length,n=a.querySelectorAll('.selectrow input[type="checkbox"]:checked').length;e.setAttribute("data-selected",b==n?"all":n);const s=new CustomEvent("row-selected",{detail:{rowIndex:o.getAttribute("data-index"),checked:!!l.checked}});t.dispatchEvent(s)}}),e.addEventListener("selected",i=>{if(i.detail.selected=="0"){Array.from(a.querySelectorAll('.selectrow input[type="checkbox"]')).forEach(o=>{o.checked=!1});const l=new CustomEvent("all-rows-unselected");t.dispatchEvent(l)}else if(i.detail.selected=="all"){Array.from(a.querySelectorAll('.selectrow input[type="checkbox"]')).forEach(o=>{o.checked=!0});const l=new CustomEvent("all-rows-selected");t.dispatchEvent(l)}})},S=(t,a,e,i)=>{e.setAttribute("method","get");const l=t.querySelector("iam-actionbar");l&&l.addEventListener("change",o=>{e.submit()})};class q extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),document.body.hasAttribute("data-assets-location")&&document.body.getAttribute("data-assets-location");const a=document.createElement("template");a.innerHTML=`
5
5
  <style>
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * iamKey v7.2.2--beta2
2
+ * iamKey v7.3.0
3
3
  * Copyright 2022-2025 iamproperty
4
4
  */const w=(t,i,o,a)=>{const s=Math.tan(.375*Math.PI),r=window.innerWidth||document.body.clientWidth,n=Math.max(1,Math.floor(.01*r)),c=o-t,e=a-i,d=Math.abs(c/e),l=Math.abs(e/c);if(Math.abs(c)>n||Math.abs(e)>n){if(l<=s)return c<0?"left":"right";if(d<=s)return e<0?"top":"bottom"}else return"tap"},g=function(t){const i=t.querySelectorAll(":scope > details, :scope > a");let o=t.querySelector(":scope > .tabs__links"),a=t.querySelector(":scope .tabs__dropdown");if(t.shadowRoot&&t.shadowRoot.querySelector(".tabs__links")&&(o=t.shadowRoot.querySelector(".tabs__links")),!o){o=document.createElement("div"),o.classList.add("tabs__links");const r=document.createElement("div");r.classList.add("tabs__links__wrapper"),r.prepend(o),t.prepend(r)}a||(a=document.createElement("select"),a.classList.add("tabs__dropdown"),t.prepend(a));let s=0;i.forEach(r=>{let n=document.createElement("button");const c=document.createElement("option");if(r.matches("details")){const e=r.querySelector(":scope > summary"),d=e.classList.contains("disabled");e.classList.add("visually-hidden"),r.hasAttribute("id")&&n.setAttribute("data-id",`${r.getAttribute("id")}`),r.hasAttribute("open")&&n.setAttribute("aria-pressed",!0),n.innerHTML=`${e.innerText}`,n.classList.add("link"),n.setAttribute("data-index",s),n.setAttribute("part","tab-link"),c.innerHTML=`${e.innerText}`,c.value=e.innerText.replace(/\s+/g,"-").toLowerCase(),c.setAttribute("data-index",s),r.setAttribute("tabindex","-1"),d&&n.classList.add("disabled"),s++}else r.matches("a")&&(n=r);n.classList.add("link"),o.appendChild(n),a.appendChild(c)})},y=function(t){const i=t.querySelectorAll(":scope > details"),o=t.querySelectorAll(":scope > details > summary");let a=t.querySelector(":scope .tabs__links"),s=t.querySelectorAll(":scope .tabs__links > button");const r=t.querySelector(":scope .tabs__dropdown");let n=t.querySelector(":scope .tabs__next"),c;if(window.isClicked=!1,window.isScrolling=!1,t.shadowRoot&&(s=t.shadowRoot.querySelectorAll(".tabs__links > button"),a=t.shadowRoot.querySelector(".tabs__links"),n=t.shadowRoot.querySelector(".tabs__next")),s.forEach(e=>{e.addEventListener("click",d=>{if(d.preventDefault(),window.isClicked=!0,e.classList.contains("disabled"))return!1;s.forEach(l=>{const b=l==e;l.setAttribute("aria-pressed",b)}),a.scroll({top:0,left:e.offsetLeft,behavior:"smooth"}),k(i,e),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openTab",tabTitle:e.textContent}),e.matches(":last-child")?n?.setAttribute("disabled","disabled"):n?.removeAttribute("disabled")}),v(i,r)}),a.addEventListener("scrollend",()=>{clearTimeout(c),c=setTimeout(function(){let e=s[0],d=Math.abs(e.getBoundingClientRect().left);if(s.forEach(l=>{Math.abs(l.getBoundingClientRect().left)<d&&(d=Math.abs(l.getBoundingClientRect().left),e=l)}),window.isClicked)return window.isClicked=!1,!1;e.click(),e.focus()},500)}),o.forEach((e,d)=>{e.addEventListener("click",l=>{l.preventDefault(),s[d].click()})}),n?.addEventListener("click",e=>{e.preventDefault();const l=a.querySelector('[aria-pressed="true"]').nextSibling;l&&l.click()}),t.classList.contains("tabs--guided")){let e=0,d=0,l=0,b=0;i.forEach(u=>{u.addEventListener("touchstart",p=>{p.stopPropagation(),e=p.changedTouches[0].screenX,d=p.changedTouches[0].screenY}),u.addEventListener("touchend",p=>{p.stopPropagation(),l=p.changedTouches[0].screenX,b=p.changedTouches[0].screenY;const f=w(e,d,l,b),_=a.querySelector('[aria-pressed="true"]'),h=_.nextSibling,m=_.previousSibling;switch(f){case"left":h&&h.click();break;case"right":m&&m.click();break}})})}},k=function(t,i){t.forEach((o,a)=>{const s=i.getAttribute("data-index")==a;s?o.setAttribute("open",s):o.removeAttribute("open")})},v=function(t,i){i.addEventListener("change",o=>{o.preventDefault();const a=i.options[i.selectedIndex];k(t,a),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openTab",tabTitle:a.innerText})})},x=function(t){if(!t.querySelector(":scope > details"))return!1;const i=t.querySelectorAll(":scope > details"),o=t.shadowRoot.querySelectorAll(".tabs__links > button");location.hash&&t.shadowRoot.querySelector(`.tabs__links [data-id="${location.hash.replace("#","")}"]`)?(t.shadowRoot.querySelector(`[data-id="${location.hash.replace("#","")}"]`).setAttribute("aria-pressed",!0),t.querySelector(`details[id="${location.hash.replace("#","")}"]`).setAttribute("open",!0)):t.querySelector("details[open]")||(i[0].setAttribute("open",!0),o[0].setAttribute("aria-pressed",!0))},L=function(t){g(t),y(t),x(t)};window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:"tabs"});class S extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});const i=document.body.hasAttribute("data-assets-location")?document.body.getAttribute("data-assets-location"):"/assets",o=document.body.hasAttribute("data-core-css")?document.body.getAttribute("data-core-css"):`${i}/css/core.min.css`,a=document.createElement("template");a.innerHTML=`
5
5
  <style>
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { trackComponent, trackComponentRegistered } from '../_global.js';
11
11
  import { cardHTML, setupCard } from '../../modules/card.module.js';
12
+ import { loadYouTubeScripts, createYoutTubeVideo } from '../../modules/videos.js';
12
13
  trackComponentRegistered('iam-video-card');
13
14
  class iamVideoCard extends HTMLElement {
14
15
  constructor() {
@@ -62,14 +63,14 @@ class iamVideoCard extends HTMLElement {
62
63
  // Load the scripts only once
63
64
  if (!document.body.classList.contains('youtubeLoaded')) {
64
65
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
65
- const loaded = yield this.loadYouTubeScripts();
66
+ const loaded = yield loadYouTubeScripts();
66
67
  }
67
68
  cardHead.addEventListener('click', function () {
68
69
  const customEvent = new CustomEvent('play-video', {
69
70
  detail: { 'Video Type': 'YoutTube', ID: cardComponent.getAttribute('data-youtube') },
70
71
  });
71
72
  cardComponent.dispatchEvent(customEvent);
72
- cardComponent.createYoutTubeVideo(embed);
73
+ createYoutTubeVideo(embed, this.getAttribute('[data-youtbue]'));
73
74
  dialog.showModal();
74
75
  });
75
76
  dialog.addEventListener('close', () => {
@@ -106,70 +107,6 @@ class iamVideoCard extends HTMLElement {
106
107
  trackComponent(cardComponent, 'iam-video-card', ['play-video', 'close-video']);
107
108
  });
108
109
  }
109
- loadYouTubeScripts() {
110
- return new Promise((resolve, reject) => {
111
- const image = new Image();
112
- image.onload = function () {
113
- // This code loads the IFrame Player API code asynchronously.
114
- const tag = document.createElement('script');
115
- tag.src = 'https://www.youtube.com/iframe_api';
116
- const firstScriptTag = document.getElementsByTagName('script')[0];
117
- firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
118
- document.body.classList.add('youtubeLoaded');
119
- resolve(true);
120
- };
121
- image.onerror = function () {
122
- reject(false);
123
- };
124
- image.src = 'https://youtube.com/favicon.ico';
125
- });
126
- }
127
- createYoutTubeVideo(target) {
128
- if (typeof window.player == 'undefined') {
129
- window.player = [];
130
- }
131
- const link_id = target.getAttribute('id');
132
- const video_id = this.getAttribute('data-youtube');
133
- console.log(window.player);
134
- if (typeof window.player[link_id] != 'undefined' && typeof window.player[link_id].pauseVideo == 'function') {
135
- window.player[link_id].playVideo();
136
- return false;
137
- }
138
- // This function creates an <iframe> (and YouTube player) after the API code downloads.
139
- //function onYouTubeIframeAPIReady() {
140
- window.player[link_id] = new YT.Player(link_id, {
141
- height: '100%',
142
- width: '100%',
143
- videoId: video_id,
144
- playerVars: {
145
- modestbranding: 1,
146
- playsinline: 1,
147
- rel: 0,
148
- showinfo: 0,
149
- },
150
- events: {
151
- onReady: onPlayerReady,
152
- onStateChange: onPlayerStateChange,
153
- },
154
- });
155
- //}
156
- //onYouTubeIframeAPIReady();
157
- // The API will call this function when the video player is ready.
158
- function onPlayerReady(event) {
159
- // Play the video straight away
160
- event.target.playVideo();
161
- }
162
- // The API calls this function when the player's state changes.
163
- // The function indicates that when playing a video (state=1)
164
- let done = false;
165
- function onPlayerStateChange(event) {
166
- if (event.data == YT.PlayerState.PLAYING && !done) {
167
- const link = document.getElementById(link_id);
168
- link.classList.add('player-ready');
169
- done = true;
170
- }
171
- }
172
- }
173
110
  static get observedAttributes() {
174
111
  return ['data-image'];
175
112
  }
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * iamKey v7.2.2--beta2
2
+ * iamKey v7.3.0
3
3
  * Copyright 2022-2025 iamproperty
4
- */const u=i=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:i})},p=(i,t,e)=>(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementAdded",element:t}),e.forEach(r=>{i.addEventListener(r,function(o){const a={event:r,element:t,target:o.target};Object.keys(o.detail).forEach(d=>{const n=o.detail[d];a[d]=n}),window.dataLayer.push(a)})}),!0),h=`<div class="card__head" part="head">
4
+ */const p=o=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementRegistered",element:o})},h=(o,t,e)=>(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"customElementAdded",element:t}),e.forEach(r=>{o.addEventListener(r,function(i){const d={event:r,element:t,target:i.target};Object.keys(i.detail).forEach(a=>{const n=i.detail[a];d[a]=n}),window.dataLayer.push(d)})}),!0),b=`<div class="card__head" part="head">
5
5
  <slot name="head"></slot>
6
6
  </div>
7
7
  <div class="card__badges"><slot name="badges"></slot></div>
@@ -15,16 +15,16 @@
15
15
  </div>
16
16
  <div class="card__footer" part="footer">
17
17
  <slot name="footer"></slot>
18
- </div>`,b=i=>{i.classList.add("card");const t=i.shadowRoot.querySelector(".card__head"),e=i.shadowRoot.querySelector(".card__body");i.hasAttribute("data-image")&&(t.innerHTML+=`<img src="${i.getAttribute("data-image")}" alt="" loading="lazy" part="image" />`),i.hasAttribute("data-total")?e.insertAdjacentHTML("beforeend",`<div class="card__total">${i.getAttribute("data-total")}</div>`):i.querySelector('[slot="total-icon"]')&&e.insertAdjacentHTML("beforeend",'<div class="card__total"><slot name="total-icon"></slot></div>'),i.querySelector('[slot="badges"]')?i.shadowRoot.querySelector(".card__badges").classList.remove("empty"):i.shadowRoot.querySelector(".card__badges").classList.add("empty")};var g=function(i,t,e,r){function o(a){return a instanceof e?a:new e(function(d){d(a)})}return new(e||(e=Promise))(function(a,d){function n(s){try{l(r.next(s))}catch(m){d(m)}}function c(s){try{l(r.throw(s))}catch(m){d(m)}}function l(s){s.done?a(s.value):o(s.value).then(n,c)}l((r=r.apply(i,t||[])).next())})};u("iam-video-card");class v 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=`
18
+ </div>`,g=o=>{o.classList.add("card");const t=o.shadowRoot.querySelector(".card__head"),e=o.shadowRoot.querySelector(".card__body");o.hasAttribute("data-image")&&(t.innerHTML+=`<img src="${o.getAttribute("data-image")}" alt="" loading="lazy" part="image" />`),o.hasAttribute("data-total")?e.insertAdjacentHTML("beforeend",`<div class="card__total">${o.getAttribute("data-total")}</div>`):o.querySelector('[slot="total-icon"]')&&e.insertAdjacentHTML("beforeend",'<div class="card__total"><slot name="total-icon"></slot></div>'),o.querySelector('[slot="badges"]')?o.shadowRoot.querySelector(".card__badges").classList.remove("empty"):o.shadowRoot.querySelector(".card__badges").classList.add("empty")};var u=function(o,t,e,r){function i(d){return d instanceof e?d:new e(function(a){a(d)})}return new(e||(e=Promise))(function(d,a){function n(s){try{c(r.next(s))}catch(l){a(l)}}function m(s){try{c(r.throw(s))}catch(l){a(l)}}function c(s){s.done?d(s.value):i(s.value).then(n,m)}c((r=r.apply(o,t||[])).next())})};const f=()=>u(void 0,void 0,void 0,function*(){return new Promise((o,t)=>{const e=new Image;e.onload=function(){const r=document.createElement("script");r.src="https://www.youtube.com/iframe_api";const i=document.getElementsByTagName("script")[0];i.parentNode.insertBefore(r,i),document.body.classList.add("youtubeLoaded"),o(!0)},e.onerror=function(){t(!1)},e.src="https://youtube.com/favicon.ico"})}),v=(o,t)=>u(void 0,void 0,void 0,function*(){typeof window.player>"u"&&(window.player=[]);const e=o.getAttribute("id");if(typeof window.player[e]<"u"&&typeof window.player[e].pauseVideo=="function")return window.player[e].playVideo(),!1;window.player[e]=new YT.Player(e,{height:"100%",width:"100%",videoId:t,playerVars:{modestbranding:1,playsinline:1,rel:0,showinfo:0},events:{onReady:r,onStateChange:d}});function r(a){a.target.playVideo()}let i=!1;function d(a){a.data==YT.PlayerState.PLAYING&&!i&&(document.getElementById(e).classList.add("player-ready"),i=!0)}});var y=function(o,t,e,r){function i(d){return d instanceof e?d:new e(function(a){a(d)})}return new(e||(e=Promise))(function(d,a){function n(s){try{c(r.next(s))}catch(l){a(l)}}function m(s){try{c(r.throw(s))}catch(l){a(l)}}function c(s){s.done?d(s.value):i(s.value).then(n,m)}c((r=r.apply(o,t||[])).next())})};p("iam-video-card");class w 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=`
19
19
  <style>
20
20
  ${this.hasAttribute("css")?`@import "${this.getAttribute("css")}";`:""}
21
21
 
22
22
  :host{--card-icon-right: 1rem;--card-head-top-padding: 2rem;--card-head-bottom-padding: 2rem;--card-footer-bottom-padding: 1.5rem;--card-head-height: 6rem;box-shadow:var(--card-box-shadow);border-radius:var(--card-border-radius);position:relative;font-weight:bold;font-size:1.125rem;line-height:1.5rem;color:var(--colour-primary);width:100%;text-align:left;display:flex;flex-direction:column;overflow:hidden;z-index:0;background:var(--colour-canvas-2);outline:2px solid var(--outline-colour, --colour-canvas-2);outline-offset:-2px;margin-bottom:2rem}:host>*{width:100%;box-sizing:border-box}:host-context(:is(a,label,button)){margin-bottom:0 !important}:host(.border-0){box-shadow:none;--card-left-padding: 0rem;outline-offset:1px !important}.card__head:has(img){min-height:var(--card-head-height);position:relative;overflow:hidden;background:rgba(0,0,0,.1);z-index:-1}.card__head:has(img)>img{position:absolute;top:0;left:0;margin:-2px;width:calc(100% + 4px);height:calc(100% + 4px);object-fit:cover}.card__body{padding:var(--card-head-top-padding) var(--card-right-padding) var(--card-head-bottom-padding) var(--card-left-padding)}.card__footer{margin-top:0;padding:0 var(--card-right-padding) 0 var(--card-left-padding)}::slotted(i){font-size:1.5rem !important;margin:-3px var(--card-icon-right) 0 0 !important;vertical-align:middle !important}::slotted(i:not(.fa-light):not(.fa-bold)){font-weight:400 !important}::slotted(.badge){margin-bottom:.375rem !important}::slotted(span:not(.badge)){display:block !important;font-weight:normal !important;font-size:1rem !important}::slotted(small){padding-top:1rem !important;display:block !important;font-weight:normal !important;padding-bottom:0 !important;color:var(--colour-body)}::slotted(span:not(.badge):not([class*=pt-])){padding-top:1.5rem !important}::slotted(:is(a,button)[slot=footer]){margin-bottom:var(--card-footer-bottom-padding) !important}.card__body:has(.card__total){--card-head-top-padding: 1rem;--card-head-bottom-padding: 1.5rem}.card__total{font-size:3rem;line-height:3rem;padding-right:1rem;margin-top:.5rem}.card__total i{font-family:var(--fa-style-family, "Font Awesome 6 Pro");font-weight:var(--fa-style, 900);display:block !important;font-size:2.5rem !important;margin:.5rem 0 .5rem 0 !important}::slotted([slot=total-icon]){display:block !important;font-size:2.5rem !important;margin:.5rem 0 .5rem 0 !important;line-height:2.5rem}.card__head:has(img)~.card__badges{position:absolute;top:0;text-align:left;left:0;z-index:9}.card__badges:not(.empty){padding:var(--card-badges-top-padding, 1rem) var(--card-right-padding) 0 var(--card-left-padding);margin-bottom:-1.5rem}:host{--card-right-padding: 1rem;--card-head-height: 10rem;font-size:1.5rem;--line-height: 2rem}:host(:is([data-youtube],[data-vimeo]):not(.video-card--top)) .card__head{order:2}:host(:is([data-youtube],[data-vimeo])) .card__head{cursor:pointer;position:relative}:host(:is([data-youtube],[data-vimeo])) .card__head>*:not(img){z-index:-1}:host(:is([data-youtube],[data-vimeo])) .card__head:before{content:"";display:block;background-color:var(--video-btn-colour, var(--colour-success));height:5rem;width:5rem;position:absolute;top:calc(50% - 2.5rem);left:calc(50% - 2.5rem);z-index:2;border-radius:2.5rem}:host(:is([data-youtube],[data-vimeo])) .card__head:after{--icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'><path d='M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80L0 432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z'/></svg>");content:"";display:block;height:2rem;width:2rem;position:absolute;top:calc(50% - 1rem);left:calc(50% - .8rem);z-index:5;background:var(--colour-primary-theme);mask-image:var(--icon);mask-size:80%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon);-webkit-mask-size:80%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%}:host(:is([data-youtube],[data-vimeo])) .card__head:is(:hover,:focus){--video-btn-colour: var(--colour-canvas)}:host(:is([data-youtube],[data-vimeo])) .card__head:is(:active){--video-btn-colour: color-mix(in oklab, var(--colour-success), #000000 20%) !important}.embed{aspect-ratio:1/1;display:block;width:10rem}/*# sourceMappingURL=assets/css/components/video-card.component.css.map */
23
23
 
24
24
  </style>
25
- ${h}
25
+ ${b}
26
26
  <dialog>
27
27
  <div class="embed"></div>
28
28
  </dialog>
29
- `,this.shadowRoot.appendChild(t.content.cloneNode(!0))}connectedCallback(){return g(this,void 0,void 0,function*(){const t=this,e=t.shadowRoot.querySelector(".card__head"),o=String.fromCharCode(65+Math.floor(Math.random()*26))+Date.now();let a,d;b(t),t.querySelector("[data-youtube]")&&t.setAttribute("data-youtube",t.querySelector("[data-youtube]").getAttribute("data-youtube")),t.querySelector("[data-vimeo]")&&t.setAttribute("data-vimeo",t.querySelector("[data-vimeo]").getAttribute("data-vimeo")),(t.hasAttribute("data-youtube")||t.hasAttribute("data-vimeo"))&&(e.setAttribute("tabindex","0"),document.getElementById(`${o}-dialog`)||document.body.insertAdjacentHTML("beforeend",`<dialog id="${o}-dialog"><div class="embed" id="${o}"></div></dialog>`),a=document.getElementById(`${o}-dialog`),d=document.getElementById(o)),t.hasAttribute("data-youtube")?(document.body.classList.contains("youtubeLoaded")||(yield this.loadYouTubeScripts()),e.addEventListener("click",function(){const n=new CustomEvent("play-video",{detail:{"Video Type":"YoutTube",ID:t.getAttribute("data-youtube")}});t.dispatchEvent(n),t.createYoutTubeVideo(d),a.showModal()}),a.addEventListener("close",()=>{window.player[d.getAttribute("id")]&&typeof window.player[d.getAttribute("id")].pauseVideo=="function"&&window.player[d.getAttribute("id")].pauseVideo();const n=new CustomEvent("close-video",{detail:{"Video Type":"YoutTube",ID:t.getAttribute("data-youtube")}});t.dispatchEvent(n)})):t.hasAttribute("data-vimeo")&&(e.addEventListener("click",function(){const n=t.getAttribute("data-vimeo"),c=new CustomEvent("play-video",{detail:{"Video Type":"Vimeo",ID:n}});t.dispatchEvent(c),d.querySelector("iframe")||(d.innerHTML=`<iframe src="https://player.vimeo.com/video/${n}?autoplay=1" width="100%" height="100%" frameborder="0" allow="autoplay; encrypted-media" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>`),a.showModal()}),a.addEventListener("close",()=>{d.innerHTML="";const n=new CustomEvent("close-video",{detail:{"Video Type":"Vimeo",ID:t.getAttribute("data-vimeo")}});t.dispatchEvent(n)})),p(t,"iam-video-card",["play-video","close-video"])})}loadYouTubeScripts(){return new Promise((t,e)=>{const r=new Image;r.onload=function(){const o=document.createElement("script");o.src="https://www.youtube.com/iframe_api";const a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(o,a),document.body.classList.add("youtubeLoaded"),t(!0)},r.onerror=function(){e(!1)},r.src="https://youtube.com/favicon.ico"})}createYoutTubeVideo(t){typeof window.player>"u"&&(window.player=[]);const e=t.getAttribute("id"),r=this.getAttribute("data-youtube");if(console.log(window.player),typeof window.player[e]<"u"&&typeof window.player[e].pauseVideo=="function")return window.player[e].playVideo(),!1;window.player[e]=new YT.Player(e,{height:"100%",width:"100%",videoId:r,playerVars:{modestbranding:1,playsinline:1,rel:0,showinfo:0},events:{onReady:o,onStateChange:d}});function o(n){n.target.playVideo()}let a=!1;function d(n){n.data==YT.PlayerState.PLAYING&&!a&&(document.getElementById(e).classList.add("player-ready"),a=!0)}}static get observedAttributes(){return["data-image"]}attributeChangedCallback(t,e,r){switch(t){case"data-image":{if(e!=r){const o=this.shadowRoot.querySelector(".card__head img");o&&o.setAttribute("src",r)}break}}}}export{v as default};
29
+ `,this.shadowRoot.appendChild(t.content.cloneNode(!0))}connectedCallback(){return y(this,void 0,void 0,function*(){const t=this,e=t.shadowRoot.querySelector(".card__head"),i=String.fromCharCode(65+Math.floor(Math.random()*26))+Date.now();let d,a;g(t),t.querySelector("[data-youtube]")&&t.setAttribute("data-youtube",t.querySelector("[data-youtube]").getAttribute("data-youtube")),t.querySelector("[data-vimeo]")&&t.setAttribute("data-vimeo",t.querySelector("[data-vimeo]").getAttribute("data-vimeo")),(t.hasAttribute("data-youtube")||t.hasAttribute("data-vimeo"))&&(e.setAttribute("tabindex","0"),document.getElementById(`${i}-dialog`)||document.body.insertAdjacentHTML("beforeend",`<dialog id="${i}-dialog"><div class="embed" id="${i}"></div></dialog>`),d=document.getElementById(`${i}-dialog`),a=document.getElementById(i)),t.hasAttribute("data-youtube")?(document.body.classList.contains("youtubeLoaded")||(yield f()),e.addEventListener("click",function(){const n=new CustomEvent("play-video",{detail:{"Video Type":"YoutTube",ID:t.getAttribute("data-youtube")}});t.dispatchEvent(n),v(a,this.getAttribute("[data-youtbue]")),d.showModal()}),d.addEventListener("close",()=>{window.player[a.getAttribute("id")]&&typeof window.player[a.getAttribute("id")].pauseVideo=="function"&&window.player[a.getAttribute("id")].pauseVideo();const n=new CustomEvent("close-video",{detail:{"Video Type":"YoutTube",ID:t.getAttribute("data-youtube")}});t.dispatchEvent(n)})):t.hasAttribute("data-vimeo")&&(e.addEventListener("click",function(){const n=t.getAttribute("data-vimeo"),m=new CustomEvent("play-video",{detail:{"Video Type":"Vimeo",ID:n}});t.dispatchEvent(m),a.querySelector("iframe")||(a.innerHTML=`<iframe src="https://player.vimeo.com/video/${n}?autoplay=1" width="100%" height="100%" frameborder="0" allow="autoplay; encrypted-media" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>`),d.showModal()}),d.addEventListener("close",()=>{a.innerHTML="";const n=new CustomEvent("close-video",{detail:{"Video Type":"Vimeo",ID:t.getAttribute("data-vimeo")}});t.dispatchEvent(n)})),h(t,"iam-video-card",["play-video","close-video"])})}static get observedAttributes(){return["data-image"]}attributeChangedCallback(t,e,r){switch(t){case"data-image":{if(e!=r){const i=this.shadowRoot.querySelector(".card__head img");i&&i.setAttribute("src",r)}break}}}}export{w as default};
30
30
  //# sourceMappingURL=video-card.component.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"video-card.component.min.js","sources":["../_global.js","../../modules/card.module.js","video-card.component.js"],"sourcesContent":["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","export const cardHTML = `<div class=\"card__head\" part=\"head\">\n <slot name=\"head\"></slot>\n</div>\n<div class=\"card__badges\"><slot name=\"badges\"></slot></div>\n<slot name=\"checkbox\" class=\"activate-prevent-hover\"></slot>\n<div class=\"card__body\" part=\"body\">\n <slot></slot>\n <slot name=\"secondary\" part=\"secondary\"></slot>\n</div>\n<div class=\"card__details\" part=\"details\">\n <slot name=\"details\"></slot>\n</div>\n<div class=\"card__footer\" part=\"footer\">\n <slot name=\"footer\"></slot>\n</div>`;\nexport const setupCard = (cardComponent) => {\n cardComponent.classList.add('card');\n const cardHead = cardComponent.shadowRoot.querySelector('.card__head');\n const cardBody = cardComponent.shadowRoot.querySelector('.card__body');\n if (cardComponent.hasAttribute('data-image')) {\n cardHead.innerHTML += `<img src=\"${cardComponent.getAttribute('data-image')}\" alt=\"\" loading=\"lazy\" part=\"image\" />`;\n }\n // Inset the HTML for the data total or icon fallback\n if (cardComponent.hasAttribute('data-total')) {\n cardBody.insertAdjacentHTML('beforeend', `<div class=\"card__total\">${cardComponent.getAttribute('data-total')}</div>`);\n }\n else if (cardComponent.querySelector('[slot=\"total-icon\"]')) {\n cardBody.insertAdjacentHTML('beforeend', `<div class=\"card__total\"><slot name=\"total-icon\"></slot></div>`);\n }\n if (!cardComponent.querySelector('[slot=\"badges\"]')) {\n cardComponent.shadowRoot.querySelector('.card__badges').classList.add('empty');\n }\n else {\n cardComponent.shadowRoot.querySelector('.card__badges').classList.remove('empty');\n }\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 { trackComponent, trackComponentRegistered } from '../_global.js';\nimport { cardHTML, setupCard } from '../../modules/card.module.js';\ntrackComponentRegistered('iam-video-card');\nclass iamVideoCard 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/video-card.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n \n ${loadCSS}\n </style>\n ${cardHTML}\n <dialog>\n <div class=\"embed\"></div>\n </dialog>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n return __awaiter(this, void 0, void 0, function* () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const cardComponent = this;\n const cardHead = cardComponent.shadowRoot.querySelector('.card__head');\n const randLetter = String.fromCharCode(65 + Math.floor(Math.random() * 26));\n const link_id = randLetter + Date.now();\n let dialog;\n let embed;\n setupCard(cardComponent);\n // Check if youtube or vimeo video link is present\n if (cardComponent.querySelector('[data-youtube]'))\n cardComponent.setAttribute('data-youtube', cardComponent.querySelector('[data-youtube]').getAttribute('data-youtube'));\n if (cardComponent.querySelector('[data-vimeo]'))\n cardComponent.setAttribute('data-vimeo', cardComponent.querySelector('[data-vimeo]').getAttribute('data-vimeo'));\n // General dialog stuff\n if (cardComponent.hasAttribute('data-youtube') || cardComponent.hasAttribute('data-vimeo')) {\n cardHead.setAttribute('tabindex', '0');\n // Add dialog to page\n if (!document.getElementById(`${link_id}-dialog`)) {\n document.body.insertAdjacentHTML('beforeend', `<dialog id=\"${link_id}-dialog\"><div class=\"embed\" id=\"${link_id}\"></div></dialog>`);\n }\n dialog = document.getElementById(`${link_id}-dialog`);\n embed = document.getElementById(link_id);\n }\n // Youtube\n if (cardComponent.hasAttribute('data-youtube')) {\n // Load the scripts only once\n if (!document.body.classList.contains('youtubeLoaded')) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const loaded = yield this.loadYouTubeScripts();\n }\n cardHead.addEventListener('click', function () {\n const customEvent = new CustomEvent('play-video', {\n detail: { 'Video Type': 'YoutTube', ID: cardComponent.getAttribute('data-youtube') },\n });\n cardComponent.dispatchEvent(customEvent);\n cardComponent.createYoutTubeVideo(embed);\n dialog.showModal();\n });\n dialog.addEventListener('close', () => {\n if (window.player[embed.getAttribute('id')] &&\n typeof window.player[embed.getAttribute('id')].pauseVideo == 'function') {\n window.player[embed.getAttribute('id')].pauseVideo();\n }\n const customEvent = new CustomEvent('close-video', {\n detail: { 'Video Type': 'YoutTube', ID: cardComponent.getAttribute('data-youtube') },\n });\n cardComponent.dispatchEvent(customEvent);\n });\n }\n else if (cardComponent.hasAttribute('data-vimeo')) {\n // Vimeo\n cardHead.addEventListener('click', function () {\n const videoId = cardComponent.getAttribute('data-vimeo');\n const customEvent = new CustomEvent('play-video', {\n detail: { 'Video Type': 'Vimeo', ID: videoId },\n });\n cardComponent.dispatchEvent(customEvent);\n if (!embed.querySelector('iframe'))\n embed.innerHTML = `<iframe src=\"https://player.vimeo.com/video/${videoId}?autoplay=1\" width=\"100%\" height=\"100%\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>`;\n dialog.showModal();\n });\n dialog.addEventListener('close', () => {\n embed.innerHTML = ``; // Remove the video since we cant pause it\n const customEvent = new CustomEvent('close-video', {\n detail: { 'Video Type': 'Vimeo', ID: cardComponent.getAttribute('data-vimeo') },\n });\n cardComponent.dispatchEvent(customEvent);\n });\n }\n trackComponent(cardComponent, 'iam-video-card', ['play-video', 'close-video']);\n });\n }\n loadYouTubeScripts() {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = function () {\n // This code loads the IFrame Player API code asynchronously.\n const tag = document.createElement('script');\n tag.src = 'https://www.youtube.com/iframe_api';\n const firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n document.body.classList.add('youtubeLoaded');\n resolve(true);\n };\n image.onerror = function () {\n reject(false);\n };\n image.src = 'https://youtube.com/favicon.ico';\n });\n }\n createYoutTubeVideo(target) {\n if (typeof window.player == 'undefined') {\n window.player = [];\n }\n const link_id = target.getAttribute('id');\n const video_id = this.getAttribute('data-youtube');\n console.log(window.player);\n if (typeof window.player[link_id] != 'undefined' && typeof window.player[link_id].pauseVideo == 'function') {\n window.player[link_id].playVideo();\n return false;\n }\n // This function creates an <iframe> (and YouTube player) after the API code downloads.\n //function onYouTubeIframeAPIReady() {\n window.player[link_id] = new YT.Player(link_id, {\n height: '100%',\n width: '100%',\n videoId: video_id,\n playerVars: {\n modestbranding: 1,\n playsinline: 1,\n rel: 0,\n showinfo: 0,\n },\n events: {\n onReady: onPlayerReady,\n onStateChange: onPlayerStateChange,\n },\n });\n //}\n //onYouTubeIframeAPIReady();\n // The API will call this function when the video player is ready.\n function onPlayerReady(event) {\n // Play the video straight away\n event.target.playVideo();\n }\n // The API calls this function when the player's state changes.\n // The function indicates that when playing a video (state=1)\n let done = false;\n function onPlayerStateChange(event) {\n if (event.data == YT.PlayerState.PLAYING && !done) {\n const link = document.getElementById(link_id);\n link.classList.add('player-ready');\n done = true;\n }\n }\n }\n static get observedAttributes() {\n return ['data-image'];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case 'data-image': {\n if (oldVal != newVal) {\n const cardHeadImg = this.shadowRoot.querySelector('.card__head img');\n if (cardHeadImg)\n cardHeadImg.setAttribute('src', newVal);\n }\n break;\n }\n }\n }\n}\nexport default iamVideoCard;\n"],"names":["trackComponentRegistered","componentName","trackComponent","component","trackEvents","eventName","event","eventDetails","eventKey","eventDetail","cardHTML","setupCard","cardComponent","cardHead","cardBody","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","iamVideoCard","template","link_id","dialog","embed","customEvent","videoId","image","tag","firstScriptTag","target","video_id","onPlayerReady","onPlayerStateChange","done","attrName","oldVal","newVal","cardHeadImg"],"mappings":"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"}
1
+ {"version":3,"file":"video-card.component.min.js","sources":["../_global.js","../../modules/card.module.js","../../modules/videos.js","video-card.component.js"],"sourcesContent":["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","export const cardHTML = `<div class=\"card__head\" part=\"head\">\n <slot name=\"head\"></slot>\n</div>\n<div class=\"card__badges\"><slot name=\"badges\"></slot></div>\n<slot name=\"checkbox\" class=\"activate-prevent-hover\"></slot>\n<div class=\"card__body\" part=\"body\">\n <slot></slot>\n <slot name=\"secondary\" part=\"secondary\"></slot>\n</div>\n<div class=\"card__details\" part=\"details\">\n <slot name=\"details\"></slot>\n</div>\n<div class=\"card__footer\" part=\"footer\">\n <slot name=\"footer\"></slot>\n</div>`;\nexport const setupCard = (cardComponent) => {\n cardComponent.classList.add('card');\n const cardHead = cardComponent.shadowRoot.querySelector('.card__head');\n const cardBody = cardComponent.shadowRoot.querySelector('.card__body');\n if (cardComponent.hasAttribute('data-image')) {\n cardHead.innerHTML += `<img src=\"${cardComponent.getAttribute('data-image')}\" alt=\"\" loading=\"lazy\" part=\"image\" />`;\n }\n // Inset the HTML for the data total or icon fallback\n if (cardComponent.hasAttribute('data-total')) {\n cardBody.insertAdjacentHTML('beforeend', `<div class=\"card__total\">${cardComponent.getAttribute('data-total')}</div>`);\n }\n else if (cardComponent.querySelector('[slot=\"total-icon\"]')) {\n cardBody.insertAdjacentHTML('beforeend', `<div class=\"card__total\"><slot name=\"total-icon\"></slot></div>`);\n }\n if (!cardComponent.querySelector('[slot=\"badges\"]')) {\n cardComponent.shadowRoot.querySelector('.card__badges').classList.add('empty');\n }\n else {\n cardComponent.shadowRoot.querySelector('.card__badges').classList.remove('empty');\n }\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};\nconst videoSupport = (body) => __awaiter(void 0, void 0, void 0, function* () {\n if (document.querySelector('.youtube-link[data-youtube]') && !document.body.classList.contains('youtubeLoaded')) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const loaded = yield loadYouTubeScripts();\n }\n setTimeout(() => __awaiter(void 0, void 0, void 0, function* () {\n if (document.querySelector('.youtube-link[data-youtube]') && !document.body.classList.contains('youtubeLoaded')) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const loaded = yield loadYouTubeScripts();\n }\n }), \"2000\");\n body.addEventListener('click', (event) => __awaiter(void 0, void 0, void 0, function* () {\n let target = event.target.closest('.youtube-link[data-youtube]');\n if (!target) {\n target = event.target.closest('.vimeo-link[data-vimeo]');\n }\n if (target && target.hasAttribute('data-youtube')) {\n event.preventDefault();\n if (!document.body.classList.contains('youtubeLoaded')) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const loaded = yield loadYouTubeScripts();\n }\n const link_id = 'youtube-' + target.getAttribute('data-youtube');\n if (!document.getElementById(`${link_id}-dialog`)) {\n document.body.insertAdjacentHTML('beforeend', `<dialog id=\"${link_id}-dialog\"><div class=\"embed\" id=\"${link_id}\"></div></dialog>`);\n }\n const dialog = document.getElementById(`${link_id}-dialog`);\n const embed = document.getElementById(link_id);\n const customEvent = new CustomEvent('play-video', {\n detail: { 'Video Type': 'YoutTube', ID: target.getAttribute('data-youtube') },\n });\n target.dispatchEvent(customEvent);\n window.dataLayer.push(customEvent.detail);\n createYoutTubeVideo(embed, target.getAttribute('data-youtube'));\n dialog.showModal();\n dialog.addEventListener('close', () => {\n if (window.player[embed.getAttribute('id')] &&\n typeof window.player[embed.getAttribute('id')].pauseVideo == 'function') {\n window.player[embed.getAttribute('id')].pauseVideo();\n }\n const customEvent = new CustomEvent('close-video', {\n detail: { 'Video Type': 'YoutTube', ID: target.getAttribute('data-youtube') },\n });\n target.dispatchEvent(customEvent);\n window.dataLayer.push(customEvent.detail);\n });\n }\n else if (target && target.hasAttribute('data-vimeo')) {\n event.preventDefault();\n const link_id = 'vimeo-' + target.getAttribute('data-youtube');\n if (!document.getElementById(`${link_id}-dialog`)) {\n document.body.insertAdjacentHTML('beforeend', `<dialog id=\"${link_id}-dialog\"><div class=\"embed\" id=\"${link_id}\"></div></dialog>`);\n }\n const dialog = document.getElementById(`${link_id}-dialog`);\n const embed = document.getElementById(link_id);\n const videoId = target.getAttribute('data-vimeo');\n const customEvent = new CustomEvent('play-video', {\n detail: { 'Video Type': 'Vimeo', ID: videoId },\n });\n target.dispatchEvent(customEvent);\n window.dataLayer.push(customEvent.detail);\n if (!embed.querySelector('iframe'))\n embed.innerHTML = `<iframe src=\"https://player.vimeo.com/video/${videoId}?autoplay=1\" width=\"100%\" height=\"100%\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>`;\n dialog.showModal();\n dialog.addEventListener('close', () => {\n embed.innerHTML = ``; // Remove the video since we cant pause it\n const customEvent = new CustomEvent('close-video', {\n detail: { 'Video Type': 'Vimeo', ID: target.getAttribute('data-vimeo') },\n });\n target.dispatchEvent(customEvent);\n window.dataLayer.push(customEvent.detail);\n });\n }\n }));\n});\nexport const loadYouTubeScripts = () => __awaiter(void 0, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = function () {\n // This code loads the IFrame Player API code asynchronously.\n const tag = document.createElement('script');\n tag.src = 'https://www.youtube.com/iframe_api';\n const firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n document.body.classList.add('youtubeLoaded');\n resolve(true);\n };\n image.onerror = function () {\n reject(false);\n };\n image.src = 'https://youtube.com/favicon.ico';\n });\n});\nexport const createYoutTubeVideo = (target, video_id) => __awaiter(void 0, void 0, void 0, function* () {\n if (typeof window.player == 'undefined') {\n window.player = [];\n }\n const link_id = target.getAttribute('id');\n if (typeof window.player[link_id] != 'undefined' && typeof window.player[link_id].pauseVideo == 'function') {\n window.player[link_id].playVideo();\n return false;\n }\n // This function creates an <iframe> (and YouTube player) after the API code downloads.\n //function onYouTubeIframeAPIReady() {\n window.player[link_id] = new YT.Player(link_id, {\n height: '100%',\n width: '100%',\n videoId: video_id,\n playerVars: {\n modestbranding: 1,\n playsinline: 1,\n rel: 0,\n showinfo: 0,\n },\n events: {\n onReady: onPlayerReady,\n onStateChange: onPlayerStateChange,\n },\n });\n //}\n //onYouTubeIframeAPIReady();\n // The API will call this function when the video player is ready.\n function onPlayerReady(event) {\n // Play the video straight away\n event.target.playVideo();\n }\n // The API calls this function when the player's state changes.\n // The function indicates that when playing a video (state=1)\n let done = false;\n function onPlayerStateChange(event) {\n if (event.data == YT.PlayerState.PLAYING && !done) {\n const link = document.getElementById(link_id);\n link.classList.add('player-ready');\n done = true;\n }\n }\n});\nexport default videoSupport;\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 { trackComponent, trackComponentRegistered } from '../_global.js';\nimport { cardHTML, setupCard } from '../../modules/card.module.js';\nimport { loadYouTubeScripts, createYoutTubeVideo } from '../../modules/videos.js';\ntrackComponentRegistered('iam-video-card');\nclass iamVideoCard 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/video-card.component.css\";`;\n const template = document.createElement('template');\n template.innerHTML = `\n <style>\n ${this.hasAttribute('css') ? `@import \"${this.getAttribute('css')}\";` : ``}\n \n ${loadCSS}\n </style>\n ${cardHTML}\n <dialog>\n <div class=\"embed\"></div>\n </dialog>\n `;\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n }\n connectedCallback() {\n return __awaiter(this, void 0, void 0, function* () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const cardComponent = this;\n const cardHead = cardComponent.shadowRoot.querySelector('.card__head');\n const randLetter = String.fromCharCode(65 + Math.floor(Math.random() * 26));\n const link_id = randLetter + Date.now();\n let dialog;\n let embed;\n setupCard(cardComponent);\n // Check if youtube or vimeo video link is present\n if (cardComponent.querySelector('[data-youtube]'))\n cardComponent.setAttribute('data-youtube', cardComponent.querySelector('[data-youtube]').getAttribute('data-youtube'));\n if (cardComponent.querySelector('[data-vimeo]'))\n cardComponent.setAttribute('data-vimeo', cardComponent.querySelector('[data-vimeo]').getAttribute('data-vimeo'));\n // General dialog stuff\n if (cardComponent.hasAttribute('data-youtube') || cardComponent.hasAttribute('data-vimeo')) {\n cardHead.setAttribute('tabindex', '0');\n // Add dialog to page\n if (!document.getElementById(`${link_id}-dialog`)) {\n document.body.insertAdjacentHTML('beforeend', `<dialog id=\"${link_id}-dialog\"><div class=\"embed\" id=\"${link_id}\"></div></dialog>`);\n }\n dialog = document.getElementById(`${link_id}-dialog`);\n embed = document.getElementById(link_id);\n }\n // Youtube\n if (cardComponent.hasAttribute('data-youtube')) {\n // Load the scripts only once\n if (!document.body.classList.contains('youtubeLoaded')) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const loaded = yield loadYouTubeScripts();\n }\n cardHead.addEventListener('click', function () {\n const customEvent = new CustomEvent('play-video', {\n detail: { 'Video Type': 'YoutTube', ID: cardComponent.getAttribute('data-youtube') },\n });\n cardComponent.dispatchEvent(customEvent);\n createYoutTubeVideo(embed, this.getAttribute('[data-youtbue]'));\n dialog.showModal();\n });\n dialog.addEventListener('close', () => {\n if (window.player[embed.getAttribute('id')] &&\n typeof window.player[embed.getAttribute('id')].pauseVideo == 'function') {\n window.player[embed.getAttribute('id')].pauseVideo();\n }\n const customEvent = new CustomEvent('close-video', {\n detail: { 'Video Type': 'YoutTube', ID: cardComponent.getAttribute('data-youtube') },\n });\n cardComponent.dispatchEvent(customEvent);\n });\n }\n else if (cardComponent.hasAttribute('data-vimeo')) {\n // Vimeo\n cardHead.addEventListener('click', function () {\n const videoId = cardComponent.getAttribute('data-vimeo');\n const customEvent = new CustomEvent('play-video', {\n detail: { 'Video Type': 'Vimeo', ID: videoId },\n });\n cardComponent.dispatchEvent(customEvent);\n if (!embed.querySelector('iframe'))\n embed.innerHTML = `<iframe src=\"https://player.vimeo.com/video/${videoId}?autoplay=1\" width=\"100%\" height=\"100%\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>`;\n dialog.showModal();\n });\n dialog.addEventListener('close', () => {\n embed.innerHTML = ``; // Remove the video since we cant pause it\n const customEvent = new CustomEvent('close-video', {\n detail: { 'Video Type': 'Vimeo', ID: cardComponent.getAttribute('data-vimeo') },\n });\n cardComponent.dispatchEvent(customEvent);\n });\n }\n trackComponent(cardComponent, 'iam-video-card', ['play-video', 'close-video']);\n });\n }\n static get observedAttributes() {\n return ['data-image'];\n }\n attributeChangedCallback(attrName, oldVal, newVal) {\n switch (attrName) {\n case 'data-image': {\n if (oldVal != newVal) {\n const cardHeadImg = this.shadowRoot.querySelector('.card__head img');\n if (cardHeadImg)\n cardHeadImg.setAttribute('src', newVal);\n }\n break;\n }\n }\n }\n}\nexport default iamVideoCard;\n"],"names":["trackComponentRegistered","componentName","trackComponent","component","trackEvents","eventName","event","eventDetails","eventKey","eventDetail","cardHTML","setupCard","cardComponent","cardHead","cardBody","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","loadYouTubeScripts","image","tag","firstScriptTag","createYoutTubeVideo","target","video_id","link_id","onPlayerReady","onPlayerStateChange","done","iamVideoCard","template","dialog","embed","customEvent","videoId","attrName","oldVal","newVal","cardHeadImg"],"mappings":"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"}