@luzmo/analytics-components-kit 1.0.3-beta.5 → 1.0.3-beta.6

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 (236) hide show
  1. package/components/ai-chat/ai-chat-request.d.ts +11 -0
  2. package/components/ai-chat/ai-chat.d.ts +59 -54
  3. package/components/ai-chat/ai-prompt-types.d.ts +93 -0
  4. package/components/ai-chat/index.cjs +1 -1
  5. package/components/ai-chat/index.d.ts +9 -4
  6. package/components/ai-chat/index.js +2 -2
  7. package/components/ai-chat/session/ai-chat-session-controller.d.ts +51 -0
  8. package/components/ai-chat/session/ai-chat-session-types.d.ts +86 -0
  9. package/components/ai-chat/session/ai-chat-session.d.ts +81 -0
  10. package/components/ai-chat/session/index.d.ts +2 -0
  11. package/components/ai-chat/{ai-chat-streaming.d.ts → stream/ai-chat-streaming.d.ts} +6 -0
  12. package/components/ai-chat/stream/analyst-handler.d.ts +3 -0
  13. package/components/ai-chat/stream/dashboard-handler.d.ts +4 -0
  14. package/components/ai-chat/stream/index.d.ts +8 -0
  15. package/components/ai-chat/stream/item-handler.d.ts +2 -0
  16. package/components/ai-chat/stream/registry.d.ts +5 -0
  17. package/components/ai-chat/stream/shared.d.ts +10 -0
  18. package/components/ai-chat/stream/types.d.ts +26 -0
  19. package/components/ai-chat-CY73iYCg.cjs +154 -0
  20. package/components/ai-chat-DVU9XiA2.js +1788 -0
  21. package/components/ai-interaction-textarea/index.cjs +1 -1
  22. package/components/ai-interaction-textarea/index.js +1 -1
  23. package/components/{ai-interaction-textarea-BXmgedJt.js → ai-interaction-textarea-DI98QoMZ.js} +3 -3
  24. package/components/{ai-interaction-textarea-CogE101T.cjs → ai-interaction-textarea-DqWt823F.cjs} +1 -1
  25. package/components/{base-BAzY-whv.js → base-D3ehdFno.js} +1 -1
  26. package/components/{base-CbpjVnVy.cjs → base-HUGXYn6t.cjs} +1 -1
  27. package/components/data-field/index.cjs +1 -1
  28. package/components/data-field/index.js +1 -1
  29. package/components/{data-field-97uH3l6o.cjs → data-field-DSzU9Apl.cjs} +1 -1
  30. package/components/{data-field-tfAMLb-d.js → data-field-DwSYggPc.js} +3 -3
  31. package/components/data-field-level/index.cjs +1 -1
  32. package/components/data-field-level/index.js +1 -1
  33. package/components/{data-field-level-BsDTHrJ6.js → data-field-level-BquNqRm1.js} +1 -1
  34. package/components/{data-field-level-6npuFtQo.cjs → data-field-level-CYUtLiIi.cjs} +1 -1
  35. package/components/data-field-panel/index.cjs +1 -1
  36. package/components/data-field-panel/index.js +1 -1
  37. package/components/{data-field-panel-Dv5nfM0z.cjs → data-field-panel-B_83HNyI.cjs} +1 -1
  38. package/components/{data-field-panel-P2t8d6sG.js → data-field-panel-Bqslx0EB.js} +3 -3
  39. package/components/data-fields-select/index.cjs +1 -1
  40. package/components/data-fields-select/index.js +1 -1
  41. package/components/{data-fields-select-B7vJTdZO.cjs → data-fields-select-BZj1cpL5.cjs} +1 -1
  42. package/components/{data-fields-select-DHnnYhbr.js → data-fields-select-t1ikPTLw.js} +1 -1
  43. package/components/dataset-selector-list/index.cjs +1 -1
  44. package/components/dataset-selector-list/index.js +1 -1
  45. package/components/{dataset-selector-list-DbCmavOc.cjs → dataset-selector-list-Bta-CGoN.cjs} +1 -1
  46. package/components/{dataset-selector-list-CXnDkIe2.js → dataset-selector-list-Ho8JnQp7.js} +1 -1
  47. package/components/dataset-selector-row/index.cjs +1 -1
  48. package/components/dataset-selector-row/index.js +1 -1
  49. package/components/{dataset-selector-row-BONcmdL2.js → dataset-selector-row-8hgsmMRg.js} +1 -1
  50. package/components/{dataset-selector-row-Bm60zTbF.cjs → dataset-selector-row-CKhHK1H5.cjs} +1 -1
  51. package/components/{de-B8ds_DbE.cjs → de-CVLDoWlp.cjs} +1 -1
  52. package/components/{de-DMnvmNFg.js → de-D2bZwq4D.js} +6 -1
  53. package/components/display-settings/index.cjs +1 -1
  54. package/components/display-settings/index.js +1 -1
  55. package/components/{display-settings-BLf7lBww.cjs → display-settings-Bmb0HUlu.cjs} +1 -1
  56. package/components/{display-settings-BLMrlvMS.js → display-settings-Di9dXtUM.js} +1 -1
  57. package/components/display-settings-binning/index.cjs +1 -1
  58. package/components/display-settings-binning/index.js +1 -1
  59. package/components/{display-settings-binning-hCJ0qkt5.js → display-settings-binning-B8qUIt6T.js} +2 -2
  60. package/components/{display-settings-binning-BAg6FoqJ.cjs → display-settings-binning-CpwCqvwm.cjs} +1 -1
  61. package/components/display-settings-datetime/index.cjs +1 -1
  62. package/components/display-settings-datetime/index.js +1 -1
  63. package/components/{display-settings-datetime-BzeNlKLC.cjs → display-settings-datetime-3M3DvzTN.cjs} +1 -1
  64. package/components/{display-settings-datetime-CCxok7d7.js → display-settings-datetime-C8JfjDJK.js} +2 -2
  65. package/components/display-settings-grand-totals/index.cjs +1 -1
  66. package/components/display-settings-grand-totals/index.js +1 -1
  67. package/components/{display-settings-grand-totals-HDpr3IJ5.cjs → display-settings-grand-totals-DMDa6C5k.cjs} +1 -1
  68. package/components/{display-settings-grand-totals-C1N1cehl.js → display-settings-grand-totals-kyfMh55D.js} +2 -2
  69. package/components/display-settings-numeric/index.cjs +1 -1
  70. package/components/display-settings-numeric/index.js +1 -1
  71. package/components/{display-settings-numeric-DSs20wUu.cjs → display-settings-numeric-B51KddXI.cjs} +1 -1
  72. package/components/{display-settings-numeric-oyCfBAGV.js → display-settings-numeric-Cw8Nx5s9.js} +2 -2
  73. package/components/display-settings-period-over-period/index.cjs +1 -1
  74. package/components/display-settings-period-over-period/index.js +1 -1
  75. package/components/{display-settings-period-over-period-h8bA3V5C.js → display-settings-period-over-period-B2AN0rwz.js} +2 -2
  76. package/components/{display-settings-period-over-period-CcX7vQnt.cjs → display-settings-period-over-period-CjjA2NqZ.cjs} +1 -1
  77. package/components/{es-Cc258uTs.js → es-9-jszdOJ.js} +6 -1
  78. package/components/{es-DGC51Dm9.cjs → es-Byjf7YBI.cjs} +1 -1
  79. package/components/filter-expression-picker/index.cjs +1 -1
  80. package/components/filter-expression-picker/index.js +1 -1
  81. package/components/{filter-expression-picker-DQP5lkn4.js → filter-expression-picker-Brn-vNUd.js} +1 -1
  82. package/components/{filter-expression-picker-BMJkgHu9.cjs → filter-expression-picker-DCFZKpBE.cjs} +1 -1
  83. package/components/filter-item/index.cjs +1 -1
  84. package/components/filter-item/index.js +1 -1
  85. package/components/{filter-item-BXcYNAAm.js → filter-item-BlSQe2nu.js} +4 -4
  86. package/components/{filter-item-D9m378Qo.cjs → filter-item-Cjrhb1RR.cjs} +1 -1
  87. package/components/filter-value-picker/index.cjs +1 -1
  88. package/components/filter-value-picker/index.js +1 -1
  89. package/components/{filter-value-picker-YIkbsWDP.cjs → filter-value-picker-BCckBdal.cjs} +1 -1
  90. package/components/{filter-value-picker-B-dzcjEo.js → filter-value-picker-CBetCjIs.js} +4 -4
  91. package/components/filter-value-picker-datetime/index.cjs +1 -1
  92. package/components/filter-value-picker-datetime/index.js +1 -1
  93. package/components/{filter-value-picker-datetime-BJMcnoKH.js → filter-value-picker-datetime-CT63jJDI.js} +1 -1
  94. package/components/{filter-value-picker-datetime-BrrmcjIE.cjs → filter-value-picker-datetime-CxM6HXe3.cjs} +1 -1
  95. package/components/filter-value-picker-hierarchy/index.cjs +1 -1
  96. package/components/filter-value-picker-hierarchy/index.js +1 -1
  97. package/components/{filter-value-picker-hierarchy-B9gDxYna.cjs → filter-value-picker-hierarchy-C5QZXiQz.cjs} +1 -1
  98. package/components/{filter-value-picker-hierarchy-UdDq0CZG.js → filter-value-picker-hierarchy-CAORy2A-.js} +2 -2
  99. package/components/filter-value-picker-numeric/index.cjs +1 -1
  100. package/components/filter-value-picker-numeric/index.js +1 -1
  101. package/components/{filter-value-picker-numeric-D_dgITCq.cjs → filter-value-picker-numeric-CtOfHaJR.cjs} +1 -1
  102. package/components/{filter-value-picker-numeric-EK515Z-Y.js → filter-value-picker-numeric-Fao-PKN7.js} +1 -1
  103. package/components/filters/index.cjs +1 -1
  104. package/components/filters/index.js +1 -1
  105. package/components/{filters-H2scDNLi.js → filters-CtWut3ce.js} +2 -2
  106. package/components/{filters-8ehwgopC.cjs → filters-DI0GTL9k.cjs} +1 -1
  107. package/components/{fr-BoZFY3Qe.cjs → fr-BVxPTfyF.cjs} +1 -1
  108. package/components/{fr-B32d4zcX.js → fr-DLf99-F8.js} +6 -1
  109. package/components/{get-dataset-name-CrWWViwN.cjs → get-dataset-name-CvZduuOo.cjs} +1 -1
  110. package/components/{get-dataset-name-7FdLQo10.js → get-dataset-name-EKmxKZU9.js} +1 -1
  111. package/components/index.cjs +1 -1
  112. package/components/index.js +58 -58
  113. package/components/item-grid/helpers/grid-item-popover.d.ts +7 -1
  114. package/components/item-grid/helpers/grid-rendering.d.ts +7 -1
  115. package/components/item-grid/index.cjs +1 -1
  116. package/components/item-grid/index.js +1 -1
  117. package/components/item-grid/item-grid.d.ts +8 -0
  118. package/components/{item-grid-CxblVEy3.cjs → item-grid-Bcez8lwg.cjs} +7 -7
  119. package/components/{item-grid-B-IFwriA.js → item-grid-DgxtJ0eX.js} +574 -564
  120. package/components/item-option/index.cjs +1 -1
  121. package/components/item-option/index.js +1 -1
  122. package/components/{item-option-ChsD18x9.cjs → item-option-BgYyAKSW.cjs} +1 -1
  123. package/components/{item-option-Buxnv89s.js → item-option-DjiTHr0r.js} +1 -1
  124. package/components/item-option-action-button-group/index.cjs +1 -1
  125. package/components/item-option-action-button-group/index.js +1 -1
  126. package/components/{item-option-action-button-group-Cw9EDbG-.cjs → item-option-action-button-group-DdqzgR08.cjs} +1 -1
  127. package/components/{item-option-action-button-group-QO_darH9.js → item-option-action-button-group-U5GCtFjg.js} +1 -1
  128. package/components/{item-option-base-DjQ5poaH.cjs → item-option-base-BeIdCZMp.cjs} +1 -1
  129. package/components/{item-option-base-DMmga0dv.js → item-option-base-DM3U9dbW.js} +1 -1
  130. package/components/item-option-color-palette-picker/index.cjs +1 -1
  131. package/components/item-option-color-palette-picker/index.js +1 -1
  132. package/components/{item-option-color-palette-picker-CiE_aWRI.js → item-option-color-palette-picker-BsMZ3IUR.js} +1 -1
  133. package/components/{item-option-color-palette-picker-gZvk4ODA.cjs → item-option-color-palette-picker-oj8nSb-q.cjs} +1 -1
  134. package/components/item-option-color-picker/index.cjs +1 -1
  135. package/components/item-option-color-picker/index.js +1 -1
  136. package/components/{item-option-color-picker-DCnGqBgT.cjs → item-option-color-picker-BJKGTrIi.cjs} +1 -1
  137. package/components/{item-option-color-picker-CUskqN3R.js → item-option-color-picker-B_pemZKJ.js} +1 -1
  138. package/components/item-option-color-range/index.cjs +1 -1
  139. package/components/item-option-color-range/index.js +1 -1
  140. package/components/{item-option-color-range-B24EAbUi.cjs → item-option-color-range-BOegJZim.cjs} +1 -1
  141. package/components/{item-option-color-range-BgHXTDvx.js → item-option-color-range-DW3rdMt5.js} +1 -1
  142. package/components/item-option-multi-language-field/index.cjs +1 -1
  143. package/components/item-option-multi-language-field/index.js +1 -1
  144. package/components/{item-option-multi-language-field-DDIu7Hns.cjs → item-option-multi-language-field-BQZ4Lmiy.cjs} +1 -1
  145. package/components/{item-option-multi-language-field-qngZBXHT.js → item-option-multi-language-field-CeYgkRzs.js} +1 -1
  146. package/components/item-option-number-field/index.cjs +1 -1
  147. package/components/item-option-number-field/index.js +1 -1
  148. package/components/{item-option-number-field-Cd-cfpaq.js → item-option-number-field-CFQyJG_w.js} +1 -1
  149. package/components/{item-option-number-field-CqrO1Xu0.cjs → item-option-number-field-T2L2jFCf.cjs} +1 -1
  150. package/components/item-option-panel/index.cjs +1 -1
  151. package/components/item-option-panel/index.js +1 -1
  152. package/components/{item-option-panel-B26_sDcj.cjs → item-option-panel-BOJmKPgY.cjs} +1 -1
  153. package/components/{item-option-panel-DZiOx_sn.js → item-option-panel-ChOItFmc.js} +2 -2
  154. package/components/item-option-picker/index.cjs +1 -1
  155. package/components/item-option-picker/index.js +1 -1
  156. package/components/{item-option-picker-B86AqAWp.cjs → item-option-picker-3krQktmk.cjs} +1 -1
  157. package/components/{item-option-picker-LRahjZUz.js → item-option-picker-IBP7QFLA.js} +1 -1
  158. package/components/item-option-position-picker/index.cjs +1 -1
  159. package/components/item-option-position-picker/index.js +1 -1
  160. package/components/{item-option-position-picker-Cbi2OygH.cjs → item-option-position-picker-BiLRWUWK.cjs} +1 -1
  161. package/components/{item-option-position-picker-NUpUlyPV.js → item-option-position-picker-DF54K_Mw.js} +1 -1
  162. package/components/item-option-positions-number-field/index.cjs +1 -1
  163. package/components/item-option-positions-number-field/index.js +1 -1
  164. package/components/{item-option-positions-number-field-BbIkX6wM.cjs → item-option-positions-number-field-B6qxN1x7.cjs} +1 -1
  165. package/components/{item-option-positions-number-field-ClPil6MM.js → item-option-positions-number-field-Dchzu5NS.js} +1 -1
  166. package/components/item-option-radio-button-group/index.cjs +1 -1
  167. package/components/item-option-radio-button-group/index.js +1 -1
  168. package/components/{item-option-radio-button-group-Bdd9sU4p.js → item-option-radio-button-group-BiOpqNXX.js} +1 -1
  169. package/components/{item-option-radio-button-group-BtYYhQyI.cjs → item-option-radio-button-group-DzI_2jB3.cjs} +1 -1
  170. package/components/item-option-slider/index.cjs +1 -1
  171. package/components/item-option-slider/index.js +1 -1
  172. package/components/{item-option-slider-32oGS1fd.cjs → item-option-slider-6E4VgJpv.cjs} +1 -1
  173. package/components/{item-option-slider-BJ7gVQXP.js → item-option-slider-Dba7mmcA.js} +1 -1
  174. package/components/item-option-switch/index.cjs +1 -1
  175. package/components/item-option-switch/index.js +1 -1
  176. package/components/{item-option-switch-BMVlfdx5.js → item-option-switch-BAYX5lTr.js} +1 -1
  177. package/components/{item-option-switch-BFk3biK9.cjs → item-option-switch-Dt4pzFNi.cjs} +1 -1
  178. package/components/item-option-text-field/index.cjs +1 -1
  179. package/components/item-option-text-field/index.js +1 -1
  180. package/components/{item-option-text-field-CWvgQ3pJ.cjs → item-option-text-field-BLOz4LvH.cjs} +1 -1
  181. package/components/{item-option-text-field-BoXwVo-B.js → item-option-text-field-CHalqTt1.js} +1 -1
  182. package/components/item-slot-drop/index.cjs +1 -1
  183. package/components/item-slot-drop/index.js +1 -1
  184. package/components/{item-slot-drop-CYRVCWF0.cjs → item-slot-drop-CNeF_Qmg.cjs} +1 -1
  185. package/components/{item-slot-drop-C0GmOMQY.js → item-slot-drop-n6UHgA-Q.js} +4 -4
  186. package/components/item-slot-drop-panel/index.cjs +1 -1
  187. package/components/item-slot-drop-panel/index.js +1 -1
  188. package/components/{item-slot-drop-panel-CoRFds3a.cjs → item-slot-drop-panel-Bh6PlCJx.cjs} +1 -1
  189. package/components/{item-slot-drop-panel-Ci3Soo16.js → item-slot-drop-panel-Hhp9_pDd.js} +3 -3
  190. package/components/item-slot-picker/index.cjs +1 -1
  191. package/components/item-slot-picker/index.js +1 -1
  192. package/components/{item-slot-picker-CmnJSYIF.cjs → item-slot-picker-7oF3vLwb.cjs} +1 -1
  193. package/components/{item-slot-picker-D1_NbL1A.js → item-slot-picker-BAMVwHtd.js} +5 -5
  194. package/components/item-slot-picker-panel/index.cjs +1 -1
  195. package/components/item-slot-picker-panel/index.js +1 -1
  196. package/components/{item-slot-picker-panel-B8VvKhRF.js → item-slot-picker-panel-BYCDx6Hk.js} +3 -3
  197. package/components/{item-slot-picker-panel-DzKodYTM.cjs → item-slot-picker-panel-C6mMlurQ.cjs} +1 -1
  198. package/components/{localized-mixin-DZuGq2Fm.js → localized-mixin-CpYxJczB.js} +1 -1
  199. package/components/{localized-mixin-Dujo7nlJ.cjs → localized-mixin-CxGNXOcg.cjs} +1 -1
  200. package/components/{nl-C9Ad2LdA.cjs → nl-D4uOyZ6h.cjs} +1 -1
  201. package/components/{nl-hCQgb1fB.js → nl-QLEhlKsI.js} +6 -1
  202. package/components/{set-locale-CXnxhP_B.js → set-locale-wsrhUZVV.js} +4 -4
  203. package/components/{set-locale-MCuEsOOu.cjs → set-locale-xSK2Wd4D.cjs} +1 -1
  204. package/components/slot-menu/index.cjs +1 -1
  205. package/components/slot-menu/index.js +1 -1
  206. package/components/{slot-menu-CYNYwJnU.js → slot-menu-B431N66z.js} +3 -3
  207. package/components/{slot-menu-CDAAPyFj.cjs → slot-menu-CIQRPLvx.cjs} +1 -1
  208. package/components/slot-menu-list/index.cjs +1 -1
  209. package/components/slot-menu-list/index.js +1 -1
  210. package/components/{slot-menu-list-DbWiuJDF.cjs → slot-menu-list-BROocU0s.cjs} +1 -1
  211. package/components/{slot-menu-list-DL-x5Ggl.js → slot-menu-list-Cdh09ie0.js} +1 -1
  212. package/components/utils/base.cjs +1 -1
  213. package/components/utils/base.js +2 -2
  214. package/components/{utils-BACUV6sE.js → utils-CJ3Vy98n.js} +1 -1
  215. package/components/{utils-DKSE_5u1.cjs → utils-iY1cKQaF.cjs} +1 -1
  216. package/components/utils.cjs +1 -1
  217. package/components/utils.js +2 -2
  218. package/components/viz-item-menu/index.cjs +1 -1
  219. package/components/viz-item-menu/index.js +1 -1
  220. package/components/{viz-item-menu-DXoKwAhV.js → viz-item-menu--FyB_XCf.js} +1 -1
  221. package/components/{viz-item-menu-yr7TQY8-.cjs → viz-item-menu-D20StIE_.cjs} +1 -1
  222. package/custom-elements.json +1460 -157
  223. package/package.json +1 -1
  224. package/react/components/ai-chat/stream/index.ts +1 -0
  225. package/react/components/ai-chat/stream/types.ts +29 -0
  226. package/react/components/ai-chat.component.ts +12 -12
  227. package/react/esm/components/ai-chat/stream/index.d.ts +1 -0
  228. package/react/esm/components/ai-chat/stream/index.js +1 -0
  229. package/react/esm/components/ai-chat/stream/types.d.ts +26 -0
  230. package/react/esm/components/ai-chat/stream/types.js +1 -0
  231. package/react/esm/components/ai-chat.component.d.ts +8 -8
  232. package/react/esm/components/ai-chat.component.js +8 -8
  233. package/types/ai-chat.types.d.ts +1 -1
  234. package/components/ai-chat/request-contract.d.ts +0 -56
  235. package/components/ai-chat-D9yB7Sw_.cjs +0 -151
  236. package/components/ai-chat-DkfD3BDG.js +0 -1258
@@ -17,7 +17,7 @@
17
17
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18
18
  * SOFTWARE.
19
19
  * */
20
- require(`./chunk-i8uDWG73.cjs`);const e=require(`./decorate-BfLyr4NV.cjs`),t=require(`./localized-mixin-Dujo7nlJ.cjs`),n=require(`./color-NSHups5I.cjs`),r=require(`./themes-D20ABfIw.cjs`),i=require(`./item-list.cjs`);let a=require(`@luzmo/icons`),o=require(`lit`),s=require(`lit/decorators.js`),c=require(`@lit/localize`);require(`@luzmo/lucero/icon`),require(`@luzmo/lucero/tooltip`);let l=require(`lit/directives/repeat.js`);require(`@luzmo/lucero/action-button`),require(`@luzmo/lucero/action-group`);let u=require(`lit/directives/guard.js`),d=require(`@luzmo/lucero/utils`),f=require(`lit/directives/style-map.js`);var p=[];for(let e=0;e<256;++e)p.push((e+256).toString(16).slice(1));function m(e,t=0){return(p[e[t+0]]+p[e[t+1]]+p[e[t+2]]+p[e[t+3]]+`-`+p[e[t+4]]+p[e[t+5]]+`-`+p[e[t+6]]+p[e[t+7]]+`-`+p[e[t+8]]+p[e[t+9]]+`-`+p[e[t+10]]+p[e[t+11]]+p[e[t+12]]+p[e[t+13]]+p[e[t+14]]+p[e[t+15]]).toLowerCase()}var h=new Uint8Array(16);function g(){return crypto.getRandomValues(h)}function _(e,t,n){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():v(e,t,n)}function v(e,t,n){e||={};let r=e.random??e.rng?.()??g();if(r.length<16)throw Error(`Random bytes length must be >= 16`);if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){if(n||=0,n<0||n+16>t.length)throw RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[n+e]=r[e];return t}return m(r)}var y=(e,t)=>{let n=`The dashboard component encountered an error`;typeof t?.dashboardId==`string`&&(n+=` for dashboard with id ${t.dashboardId}`),typeof t?.dashboardSlug==`string`&&(n+=` for dashboard with slug ${t.dashboardSlug}`),typeof t?.container==`string`&&(n+=` in container ${t.container}`),e&&(n+=`:\n${e}`,console.warn(n))},ee=e=>{let t=!1,n=``,r=(document.body||document.documentElement).style,i={svg:!!(`createElementNS`in document&&document.createElementNS(`http://www.w3.org/2000/svg`,`svg`).createSVGRect),flexbox:r.webkitFlexWrap===``||r.flexWrap===``,postMessage:!!window.postMessage};for(let r of[`svg`,`flexbox`,`postMessage`])i[r]||(t=!0,e.browserNotSupported=e.browserNotSupported||[],e.browserNotSupported.push(r),n+=`Your browser does not support: ${r}\n`);let a=window.navigator.userAgent,o=a.includes(`MSIE`),s=a.includes(`Trident/`);(o||s)&&(t=!0,n=`IE is not supported.`),t&&y(n)},b={appServer:`https://app.luzmo.com/`,apiHost:`https://api.luzmo.com/`,dashboardId:null,dashboardSlug:null,container:null,key:null,token:null,language:`auto`,editorLanguage:`auto`,qeVersion:null,editMode:null,screenMode:null,switchScreenModeOnResize:!0,itemId:null,theme:``,mainColor:``,accentColor:``,itemDimensions:{width:`auto`,height:`auto`},loaderBackground:`#f9f9f9`,loaderFontColor:`#5a5a5a`,loaderSpinnerColor:`rgba(255, 165, 0, 0.7)`,loaderSpinnerBackground:`rgba(169, 169, 169, 0.14)`,timezoneId:null,contextId:null},te=[{mode:`mobile`,width:[150,767]},{mode:`tablet`,width:[768,1199]},{mode:`desktop`,width:[1200,1599]},{mode:`largeScreen`,width:[1600,9999]},{mode:`fixed`,width:[]}],ne={initializing:{en:`Initializing...`,nl:`Laden...`,fr:`Chargement...`,de:`Initialisiere...`,es:`Inicializando...`},errorDashboard:{en:`Oops, we could not load this dashboard!`,nl:`Oeps, we konden het dashboard niet laden.`,fr:`Le chargement a echoué.`,de:`Hoppla, wir konnten dieses Dashboard nicht laden!`,es:`¡Ups! No pudimos cargar este tablero.`},errorItem:{en:`Oops, we could not load this item!`,nl:`Oeps, we konden de grafiek niet laden.`,fr:`Le chargement a echoué.`,de:`Hoppla, wir konnten dieses Diagramm nicht laden!`,es:`¡Ups! No pudimos cargar este elemento.`}},x=e=>e?e.endsWith(`/`)?e:`${e}/`:``,S=e=>e?e.endsWith(`/`)?e.slice(0,-1):e:``,re=(e,t,n,r)=>{let i=(e,t)=>{let n=e.users.find(e=>e.id===t.id),r=n&&n.userAccessRight?{flagRead:n.userAccessRight.flagRead,flagUse:n.userAccessRight.flagUse,flagModify:n.userAccessRight.flagModify,flagOwn:n.userAccessRight.flagOwn}:{flagRead:!1,flagUse:!1,flagModify:!1,flagOwn:!1},i=e.groups.filter(e=>t.userGroups.includes(e.id)||e.public===!0).map(e=>{if(e.groupAccessRight)return e.groupAccessRight});for(let e of i)!r.flagRead&&e.flagRead&&(r.flagRead=e.flagRead),!r.flagUse&&e.flagUse&&(r.flagUse=e.flagUse),!r.flagModify&&e.flagModify&&(r.flagModify=e.flagModify),!r.flagOwn&&e.flagOwn&&(r.flagOwn=e.flagOwn);let a=e.integrations?.length>0?e.integrations.map(e=>{if(e.integrationAccessRight)return e.integrationAccessRight}):[];for(let e of a)!r.flagRead&&e.flagRead&&(r.flagRead=e.flagRead),!r.flagUse&&e.flagUse&&(r.flagUse=e.flagUse),!r.flagModify&&e.flagModify&&(r.flagModify=e.flagModify);return r},a=(e,t)=>{if(e==null)return``;if(typeof e!=`object`||Object.keys(e).length===0)return typeof e==`object`&&Object.keys(e).length===0?``:e;let n;return n=t&&e[t]?e[t]:e[Object.keys(e)[0]],n??=``,n},o=[];for(let s of e){let e={accessibleBy:[],accessRights:i(s,n),id:s.id,modifiedAt:s.modified_at,name:a(s.name,r.language),slug:null,tags:s.tags.map(e=>e.tag).sort((e,t)=>e.localeCompare(t))},c=s.integrations.find(e=>e.id===t);c?.integrationAccessRight?.slug&&(e.slug=c.integrationAccessRight.slug);let l=s.users.map(e=>({model:`User`,id:e.id,name:a(e.name,n.locale_id)})),u=s.groups.map(e=>({model:`Group`,id:e.id,name:a(e.name,n.locale_id)||{}})),d=s.integrations.map(e=>({model:`Integration`,id:e.id,name:a(e.name,n.locale_id)||{}}));e.accessibleBy=[...l,...u,...d],o.push(e)}return o},ie=e=>{let t=/^(%20|\s)*(javascript|data)/im,n=/[^\u0020-\u007E]/gim,r=/^([^:]+):/gm,i=new Set([`.`,`/`]),a=e=>i.has(e[0]);if(!e)return`about:blank`;let o=e.replaceAll(n,``).trim();if(a(o))return o;let s=o.match(r);if(!s)return o;let c=s[0];return t.test(c)?`about:blank`:o},ae=e=>JSON.parse(JSON.stringify(e)),oe=e=>e&&typeof e==`object`,se=(e,t)=>(Object.entries(t).forEach(([t,n])=>{t in e?e[t]===void 0?e[t]=n:e[t]=oe(n)?se(e[t],n):e[t]:e[t]=n}),e),ce=()=>`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replaceAll(/[xy]/g,function(e){let t=Math.random()*16|0;return(e==`x`?t:t&3|8).toString(16)}),le=e=>{let t=[],{appServer:n,language:r,editorLanguage:i,qeVersion:a,loaderBackground:o,loaderSpinnerColor:s,loaderSpinnerBackground:c,loaderFontColor:l,screenMode:u,key:d,token:f,timezoneId:p,itemEmbedding:m,itemDimensions:h,dashboardId:g,dashboardSlug:_,itemId:v,theme:y,mainColor:ee,accentColor:b,editMode:te}=e.params;r&&r!==`auto`&&t.push(`language=${r}`),i&&i!==`auto`&&t.push(`editorLanguage=${i}`),a&&t.push(`qe_version=${a}`),o&&t.push(`ldrbg=${o}`),l&&t.push(`ldrftclr=${l}`),s&&t.push(`ldrspclr=${s}`),c&&t.push(`ldrspbg=${c}`),y&&t.push(`theme=${y}`),ee&&t.push(`mainColor=${ee}`),b&&t.push(`accentColor=${b}`),u&&u!==`auto`&&t.push(`screenMode=&{screenMode}`),p&&t.push(`timezoneId=`+p),m&&h&&h.width&&t.push(`width=`+h.width),m&&h&&h.height&&t.push(`height=`+h.height),te&&t.push(`editMode=`+te);let ne=d&&f?`#`+d+`:`+f:``;return t.push(`version=`+(e.libVersion||`0.0.0-unknown-luzmo`)),ie(m?`${n}i/${g||_}/${v}?${encodeURIComponent(t.join(`&`))}${ne}`:`${n}i/${g||_}?${encodeURIComponent(t.join(`&`))}${ne}`)},ue=e=>{let t;(e.params.error||e.browserNotSupported.length>0)&&(e.params.error=!0,e.browserNotSupported&&(t=`Browser is not supported.`));let n=ne.initializing[e.params.language]||ne.initializing.en;return e.browserNotSupported||e.params.error?{loadingMsg:n,errorMsg:t}:{loadingMsg:n,errorMsg:``}};function de(e,t,n){e.promises[t]&&(e.promises[t].resolve(n),delete e.promises[t])}function fe(e,t,n){e.promises[t]&&(e.promises[t].reject(n),delete e.promises[t])}function pe(e){let t={};return e.params.loaderBackground&&!e.iframeLoaded&&(t.background=e.params.loaderBackground),t}function me(e){let t=e.params.itemDimensions?.height||b.itemDimensions.height,n=e.params.itemEmbedding&&t!==`auto`;return{display:e.iframeLoaded?`none`:``,height:`${n?t:e.minHeight}px`}}function he(e){let t=e.params.loaderBackground||b.loaderBackground;if(e.params.itemEmbedding){e.loaderSize=24,e.borderWidth=4,e.minHeight=200;let n=e.params.itemDimensions?.width||b.itemDimensions.width,r=e.params.itemDimensions?.height||b.itemDimensions.height,i=n!==`auto`,a=r!==`auto`;return{background:t,width:i?`${n}px`:`100%`,height:`${a?r:`200`}px`,"min-height":a?``:`200px`}}return{background:t}}function ge(e){let{loaderSpinnerColor:t,loaderSpinnerBackground:n}=b,r=ye(e.borderWidth,e.params.loaderSpinnerColor||t),i=ye(e.borderWidth,e.params.loaderSpinnerBackground||n),a=`${e.loaderSize}px`;return{"border-top":r,"border-right":r,"border-bottom":i,"border-left":i,width:a,height:a}}function _e(e){let t=e.params.itemDimensions?.height||b.itemDimensions.height,n=e.params.itemEmbedding&&t!==`auto`;return{padding:`${e.params.itemId?(t=>`${(t-e.loaderSize-32)/2}px`)(n?Number.parseInt(`${t}`,10):e.minHeight):`128px`} 16px`}}function ve(e){let t=e.params.itemDimensions?.height||b.itemDimensions.height,n=e.params.itemDimensions?.width||b.itemDimensions.width;e.params.itemEmbedding&&t!==`auto`?e.iframeHeight=`${t}px`:e.params.itemEmbedding?e.iframeHeight=`200px`:[`editFull`,`editLimited`].includes(e.params.editMode)?e.iframeHeight=`100%`:e.iframeHeight=`400px`,e.iframeWidth=e.params.itemEmbedding&&n!==`auto`?`${n}px`:`100%`;let r={height:e.iframeHeight,width:e.iframeWidth};return e.iframeLoaded?r.opacity=1:e.error?(r.opacity=1,r.width=`100%`,r.height=`400px`):r.opacity=0,r}function ye(e,t){return`${e}px solid ${t}`}var be=(e,t)=>{e?.contentWindow&&e.contentWindow.location.replace(t)},xe=(e,t,n)=>{let r=ce();return t?.contentWindow?(t.contentWindow.postMessage({action:`exportDashboard`,format:n||`png`,_version:e.libVersion,requestId:r},`*`),new Promise((t,n)=>{e.promises[r]={resolve:t,reject:n},setTimeout(()=>{e.promises[r]&&(e.promises[r].reject(Error(`exportDashboard request timed out.`)),delete e.promises[r])},12e5)})):Promise.reject(Error(`Cannot retrieve contentWindow.`))},Se=async e=>{if(await e.updateComplete,(e.currentAuthKey??e.authKey)&&(e.currentAuthToken??e.authToken)){let t=new Promise((t,n)=>{(()=>{try{window.fetch(`${x(e.params.apiHost)}0.1.0/authorization`,{method:`POST`,mode:`cors`,cache:`no-cache`,headers:{"Content-Type":`application/json`},redirect:`follow`,body:JSON.stringify({action:`get`,version:`0.1.0`,key:e.currentAuthKey??e.authKey,token:e.currentAuthToken??e.authToken,find:{where:{id:e.authKey},attributes:[`id`,`integration_id`],include:[{model:`User`,attributes:[`id`,`name`,`locale_id`],include:[{model:`Group`}]}]}})}).then(e=>e.json()).then(e=>{!e||!e.rows||e.rows.length===0||!e.rows[0].user?n(`Authorization failed, please check authKey and authToken. If the problem persists, please contact support@luzmo.com.`):(e.rows[0].user.userGroups=e.rows[0].user.groups.map(e=>e.id),delete e.rows[0].user.groups,t({integrationId:e.rows[0].integration_id,user:e.rows[0].user}))})}catch(e){n(e)}})()});return new Promise((n,r)=>void(()=>{try{t.then(t=>{window.fetch(`${x(e.params.apiHost)}0.1.0/securable`,{method:`POST`,mode:`cors`,cache:`no-cache`,headers:{"Content-Type":`application/json`},redirect:`follow`,body:JSON.stringify({action:`get`,version:`0.1.0`,key:e.currentAuthKey??e.authKey,token:e.currentAuthToken??e.authToken,find:{where:{type:`dashboard`,is_variant:!1},attributes:[`id`,`name`,`modified_at`],order:[[`modified_at`,`desc`]],include:[{model:`Tag`,attributes:[`tag`]},{model:`User`,attributes:[`id`,`name`]},{model:`Group`,attributes:[`id`,`name`,`public`]},{model:`Integration`,attributes:[`id`,`name`]}]}})}).then(e=>e.json()).then(r=>{n(r.rows.length>0?re(r.rows,t.integrationId,t.user,e):[])})}).catch(e=>{r(e)})}catch(e){r(e)}})())}throw Error(`No authKey or authToken found in the luzmo-dashboard component.`)},Ce=(e,t,n)=>{if(t?.contentWindow){let r=ce();return t.contentWindow.postMessage({action:`getData`,id:n,_version:e.libVersion,requestId:r},`*`),new Promise((t,n)=>{e.promises[r]={resolve:t,reject:n},setTimeout(()=>{e.promises[r]&&(e.promises[r].reject(Error(`getData request timed out.`)),delete e.promises[r])},2e3)})}return Promise.reject(Error(`Cannot retrieve contentWindow.`))},we=(e,t)=>{if(t?.contentWindow){let n=ce();return t.contentWindow.postMessage({action:`getFilters`,_version:e.libVersion,requestId:n},`*`),new Promise((t,r)=>{e.promises[n]={resolve:t,reject:r},setTimeout(()=>{e.promises[n]&&(e.promises[n].reject(Error(`getFilters request timed out.`)),delete e.promises[n])},2e3)})}return Promise.reject(Error(`Cannot retrieve contentWindow.`))},Te=(e,t,n)=>t?(t.contentWindow.postMessage({action:`refreshData`,id:n??null,_version:e.libVersion},`*`),Promise.resolve()):Promise.reject(Error(`Cannot retrieve contentWindow.`)),Ee=(e,t)=>t?(t.contentWindow.postMessage({action:`reloadDashboard`,_version:e.libVersion},`*`),Promise.resolve()):Promise.reject(Error(`Cannot retrieve contentWindow.`)),De=(e,t,n,r,i)=>t?(t.contentWindow.postMessage({action:`sendExportEmail`,type:n||`once`,subject:r,message:i,_version:e.libVersion},`*`),Promise.resolve()):Promise.reject(Error(`Cannot retrieve contentWindow.`)),Oe=(e,t,n,r)=>t?(t.contentWindow.postMessage({action:`setAuthorization`,key:n,token:r,_version:e.libVersion},`*`),Promise.resolve()):Promise.reject(Error(`Cannot retrieve contentWindow.`)),ke=(e,t,n)=>{if(t&&t.contentWindow){let r=ce();return e.params.editMode===n?Promise.reject(Error(`editMode parameter is currently already set to `+n)):n!==`editFull`&&n!==`editLimited`&&n!==`view`?Promise.reject(Error(`The editMode parameter must be one of the following values: 'editFull', 'editLimited' or 'view'.`)):(t.contentWindow.postMessage({action:`setEditMode`,editMode:n,_version:e.libVersion,requestId:r},`*`),new Promise((t,n)=>{e.promises[r]={resolve:t,reject:n}}))}return Promise.reject(Error(`Cannot retrieve contentWindow.`))},Ae=(e,t,n)=>{if(t){let r=ce();return t.contentWindow.postMessage({action:`setPreview`,preview:n,requestId:r,_version:e.libVersion},`*`),new Promise((t,n)=>{e.promises[r]={resolve:t,reject:n},setTimeout(()=>{e.promises[r]&&(e.promises[r].reject(Error(`setPreview request timed out.`)),delete e.promises[r])},2e3)})}return Promise.reject(Error(`Cannot retrieve contentWindow.`))},je=(e,t,n,r)=>{if(t){let i=ce();return t.contentWindow.postMessage({action:`setSelectedData`,itemId:n,filters:r,_version:e.libVersion,requestId:i},`*`),new Promise((t,n)=>{e.promises[i]={resolve:t,reject:n},setTimeout(()=>{e.promises[i]&&(e.promises[i].reject(Error(`setSelectedData request timed out.`)),delete e.promises[i])},2e3)})}return Promise.reject()},Me=e=>{if(!e.dimensions){e.params.error=!0,y(`Got no valid dimensions.`,e.params);return}let t=Object.keys(e.dimensions),n=[],r,i=0,a=0;if(!e.params.switchScreenModeOnResize&&e.currentScreenMode&&(e.params.screenMode=e.currentScreenMode),e.dimensions&&t?.[0]===`fixed`)r=`fixed`,i=e.dimensions.fixed[0],a=e.dimensions.fixed[1];else{let o=[`mobile`,`tablet`,`desktop`,`largeScreen`];if(e.params.itemEmbedding){let[n]=t,r=ae(n);for(let n of o){let i=t.find(e=>e===n);i?r=ae(i):e.dimensions[n]=e.dimensions[r]}}for(let r of t)if(o.includes(r)){let t=te.find(e=>e.mode===r);n.push({...t,height:e.dimensions[r][1]||50})}if(n.map(e=>e.mode).includes(e.params.screenMode)||(e.params.screenMode=`auto`),e.params.screenMode===`auto`){n.sort((e,t)=>o.indexOf(e.mode)-o.indexOf(t.mode));for(let t of n){let[n,o]=t.width;e.params.itemEmbedding&&e.params.itemDimensions&&e.params.itemDimensions.width!==`auto`&&e.params.itemDimensions.height===`auto`?n<e.params.itemDimensions.width&&(r=t.mode,i=Number.parseInt(e.params.itemDimensions.width,10),a=e.dimensions[r][1]):n<e.containerWidth&&(r=t.mode,e.params.itemEmbedding?(i=e.params.itemDimensions?.width&&e.params.itemDimensions?.width!==`auto`?Number.parseInt(e.params.itemDimensions.width,10):Math.min(e.containerWidth,o),a=e.params.itemDimensions?.height&&e.params.itemDimensions?.height!==`auto`?Number.parseInt(e.params.itemDimensions.height,10):e.dimensions[r][1],e.params.itemDimensions&&e.params.itemDimensions.width!==`auto`&&e.params.itemDimensions.height===`auto`&&(i=Number.parseInt(e.params.itemDimensions.width,10),a=e.dimensions[r][1])):(i=Math.max(Math.min(o,e.containerWidth),n),a=t.height))}}else{let{height:t,width:[o,s]}=n.find(t=>t.mode===e.params.screenMode);r=e.params.screenMode,i=Math.max(Math.min(s,e.containerWidth),o),a=t,e.params.itemEmbedding&&(e.params.itemDimensions?.width&&e.params.itemDimensions?.width!==`auto`&&(i=Number.parseInt(e.params.itemDimensions.width,10)),e.params.itemDimensions?.height&&e.params.itemDimensions?.height!==`auto`&&(a=Number.parseInt(e.params.itemDimensions.height,10)))}if(!r&&n.length>0){let[e]=n;r=e.mode,i=e.width[0],a=e.height}}e.currentScreenMode=r;let o={height:a===0?`100%`:`${String(a)}px`,width:i===0?`100%`:`${String(i)}px`,opacity:1};[`editFull`,`editLimited`].includes(e.params.editMode)?(o.height=`100%`,o.width=`100%`):e.params.itemEmbedding&&e.params.itemDimensions?(o.height=e.params.itemDimensions.height===`auto`?o.height:`${String(e.params.itemDimensions.height).replace(`px`,``)}px`,o.width=e.params.itemDimensions.width===`auto`?o.width:`${String(e.params.itemDimensions.width).replace(`px`,``)}px`):(o.height=a===0?`100%`:`${String(a)}px`,o.width=i===0?`100%`:`${String(i)}px`),e.currentScreenMode=r,e.iframeStyle=o},Ne=e=>{let t=Object.keys(b),n=[],r=[`appServer`,`language`,`apiHost`],i=[`key`,`token`,`screenMode`,`timezoneId`,`itemId`,`container`,`loaderBackground`,`loaderFontColor`,`loaderSpinnerColor`,`loaderSpinnerBackground`],a=[`itemDimensions`],o=[`mobile`,`tablet`,`desktop`,`largeScreen`,`fixed`,`auto`];for(let n of t)e.params[n]===null&&delete e.params[n];e.params=se(e.params,b),(!e.params.dashboardId||typeof e.params.dashboardId!=`string`)&&(!e.params.dashboardSlug||typeof e.params.dashboardSlug!=`string`)&&(delete e.params.dashboardId,delete e.params.dashboardSlug);for(let t of r)typeof e.params[t]!=`string`&&(delete e.params[t],n.push(`${t} needs to be of type string.`));for(let t of i)typeof e.params[t]!=`string`&&e.params[t]!==null&&e.params[t]!==void 0&&(delete e.params[t],n.push(`${t} needs to be of type string or empty.`));if(e.params.screenMode&&!o.includes(e.params.screenMode)){let t=o.map(e=>`"${e}"`).join(`, `);n.push(`"screenMode" needs should be one of these types: ${t}`),e.params.screenMode=`auto`}e.params.itemId&&(e.params.itemEmbedding=!0);for(let t of a)typeof e.params[t]!=`object`&&e.params[t]!==null&&(delete e.params[t],n.push(`${t} needs to be of type object or empty.`));if(typeof e.params.switchScreenModeOnResize!=`boolean`&&(n.push(`switchScreenModeOnResize needs to be of type boolean.`),e.params.switchScreenModeOnResize=!0),e.params.itemDimensions)for(let t of[`width`,`height`])![`string`,`number`].includes(typeof e.params.itemDimensions[t])&&e.params.itemDimensions[t]!==null&&n.push(`itemDimensions ${t} needs to be of type string, number or empty.`);e.params=se(e.params,b),e.params.screenMode&&e.params.screenMode!==`auto`&&(e.params.switchScreenModeOnResize=!1),e.params.itemDimensions.width!==`auto`&&(e.params.itemDimensions.width=Number.parseInt(`${e.params.itemDimensions.width}`.replace(`px`,``),10)||`auto`),e.params.itemDimensions.height!==`auto`&&(e.params.itemDimensions.height=Number.parseInt(`${e.params.itemDimensions.height}`.replace(`px`,``),10)||`auto`),e.params.itemEmbedding=!!e.params.itemId,(e.params.error||n.length>0)&&y(n.join(`
20
+ require(`./chunk-i8uDWG73.cjs`);const e=require(`./decorate-BfLyr4NV.cjs`),t=require(`./localized-mixin-CxGNXOcg.cjs`),n=require(`./color-NSHups5I.cjs`),r=require(`./themes-D20ABfIw.cjs`),i=require(`./item-list.cjs`);let a=require(`@luzmo/icons`),o=require(`lit`),s=require(`lit/decorators.js`),c=require(`@lit/localize`);require(`@luzmo/lucero/icon`),require(`@luzmo/lucero/tooltip`);let l=require(`lit/directives/repeat.js`);require(`@luzmo/lucero/action-button`),require(`@luzmo/lucero/action-group`);let u=require(`lit/directives/guard.js`),d=require(`@luzmo/lucero/utils`),f=require(`lit/directives/style-map.js`);var p=[];for(let e=0;e<256;++e)p.push((e+256).toString(16).slice(1));function m(e,t=0){return(p[e[t+0]]+p[e[t+1]]+p[e[t+2]]+p[e[t+3]]+`-`+p[e[t+4]]+p[e[t+5]]+`-`+p[e[t+6]]+p[e[t+7]]+`-`+p[e[t+8]]+p[e[t+9]]+`-`+p[e[t+10]]+p[e[t+11]]+p[e[t+12]]+p[e[t+13]]+p[e[t+14]]+p[e[t+15]]).toLowerCase()}var h=new Uint8Array(16);function g(){return crypto.getRandomValues(h)}function _(e,t,n){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():v(e,t,n)}function v(e,t,n){e||={};let r=e.random??e.rng?.()??g();if(r.length<16)throw Error(`Random bytes length must be >= 16`);if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){if(n||=0,n<0||n+16>t.length)throw RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[n+e]=r[e];return t}return m(r)}var y=(e,t)=>{let n=`The dashboard component encountered an error`;typeof t?.dashboardId==`string`&&(n+=` for dashboard with id ${t.dashboardId}`),typeof t?.dashboardSlug==`string`&&(n+=` for dashboard with slug ${t.dashboardSlug}`),typeof t?.container==`string`&&(n+=` in container ${t.container}`),e&&(n+=`:\n${e}`,console.warn(n))},ee=e=>{let t=!1,n=``,r=(document.body||document.documentElement).style,i={svg:!!(`createElementNS`in document&&document.createElementNS(`http://www.w3.org/2000/svg`,`svg`).createSVGRect),flexbox:r.webkitFlexWrap===``||r.flexWrap===``,postMessage:!!window.postMessage};for(let r of[`svg`,`flexbox`,`postMessage`])i[r]||(t=!0,e.browserNotSupported=e.browserNotSupported||[],e.browserNotSupported.push(r),n+=`Your browser does not support: ${r}\n`);let a=window.navigator.userAgent,o=a.includes(`MSIE`),s=a.includes(`Trident/`);(o||s)&&(t=!0,n=`IE is not supported.`),t&&y(n)},b={appServer:`https://app.luzmo.com/`,apiHost:`https://api.luzmo.com/`,dashboardId:null,dashboardSlug:null,container:null,key:null,token:null,language:`auto`,editorLanguage:`auto`,qeVersion:null,editMode:null,screenMode:null,switchScreenModeOnResize:!0,itemId:null,theme:``,mainColor:``,accentColor:``,itemDimensions:{width:`auto`,height:`auto`},loaderBackground:`#f9f9f9`,loaderFontColor:`#5a5a5a`,loaderSpinnerColor:`rgba(255, 165, 0, 0.7)`,loaderSpinnerBackground:`rgba(169, 169, 169, 0.14)`,timezoneId:null,contextId:null},te=[{mode:`mobile`,width:[150,767]},{mode:`tablet`,width:[768,1199]},{mode:`desktop`,width:[1200,1599]},{mode:`largeScreen`,width:[1600,9999]},{mode:`fixed`,width:[]}],ne={initializing:{en:`Initializing...`,nl:`Laden...`,fr:`Chargement...`,de:`Initialisiere...`,es:`Inicializando...`},errorDashboard:{en:`Oops, we could not load this dashboard!`,nl:`Oeps, we konden het dashboard niet laden.`,fr:`Le chargement a echoué.`,de:`Hoppla, wir konnten dieses Dashboard nicht laden!`,es:`¡Ups! No pudimos cargar este tablero.`},errorItem:{en:`Oops, we could not load this item!`,nl:`Oeps, we konden de grafiek niet laden.`,fr:`Le chargement a echoué.`,de:`Hoppla, wir konnten dieses Diagramm nicht laden!`,es:`¡Ups! No pudimos cargar este elemento.`}},x=e=>e?e.endsWith(`/`)?e:`${e}/`:``,S=e=>e?e.endsWith(`/`)?e.slice(0,-1):e:``,re=(e,t,n,r)=>{let i=(e,t)=>{let n=e.users.find(e=>e.id===t.id),r=n&&n.userAccessRight?{flagRead:n.userAccessRight.flagRead,flagUse:n.userAccessRight.flagUse,flagModify:n.userAccessRight.flagModify,flagOwn:n.userAccessRight.flagOwn}:{flagRead:!1,flagUse:!1,flagModify:!1,flagOwn:!1},i=e.groups.filter(e=>t.userGroups.includes(e.id)||e.public===!0).map(e=>{if(e.groupAccessRight)return e.groupAccessRight});for(let e of i)!r.flagRead&&e.flagRead&&(r.flagRead=e.flagRead),!r.flagUse&&e.flagUse&&(r.flagUse=e.flagUse),!r.flagModify&&e.flagModify&&(r.flagModify=e.flagModify),!r.flagOwn&&e.flagOwn&&(r.flagOwn=e.flagOwn);let a=e.integrations?.length>0?e.integrations.map(e=>{if(e.integrationAccessRight)return e.integrationAccessRight}):[];for(let e of a)!r.flagRead&&e.flagRead&&(r.flagRead=e.flagRead),!r.flagUse&&e.flagUse&&(r.flagUse=e.flagUse),!r.flagModify&&e.flagModify&&(r.flagModify=e.flagModify);return r},a=(e,t)=>{if(e==null)return``;if(typeof e!=`object`||Object.keys(e).length===0)return typeof e==`object`&&Object.keys(e).length===0?``:e;let n;return n=t&&e[t]?e[t]:e[Object.keys(e)[0]],n??=``,n},o=[];for(let s of e){let e={accessibleBy:[],accessRights:i(s,n),id:s.id,modifiedAt:s.modified_at,name:a(s.name,r.language),slug:null,tags:s.tags.map(e=>e.tag).sort((e,t)=>e.localeCompare(t))},c=s.integrations.find(e=>e.id===t);c?.integrationAccessRight?.slug&&(e.slug=c.integrationAccessRight.slug);let l=s.users.map(e=>({model:`User`,id:e.id,name:a(e.name,n.locale_id)})),u=s.groups.map(e=>({model:`Group`,id:e.id,name:a(e.name,n.locale_id)||{}})),d=s.integrations.map(e=>({model:`Integration`,id:e.id,name:a(e.name,n.locale_id)||{}}));e.accessibleBy=[...l,...u,...d],o.push(e)}return o},ie=e=>{let t=/^(%20|\s)*(javascript|data)/im,n=/[^\u0020-\u007E]/gim,r=/^([^:]+):/gm,i=new Set([`.`,`/`]),a=e=>i.has(e[0]);if(!e)return`about:blank`;let o=e.replaceAll(n,``).trim();if(a(o))return o;let s=o.match(r);if(!s)return o;let c=s[0];return t.test(c)?`about:blank`:o},ae=e=>JSON.parse(JSON.stringify(e)),oe=e=>e&&typeof e==`object`,se=(e,t)=>(Object.entries(t).forEach(([t,n])=>{t in e?e[t]===void 0?e[t]=n:e[t]=oe(n)?se(e[t],n):e[t]:e[t]=n}),e),ce=()=>`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replaceAll(/[xy]/g,function(e){let t=Math.random()*16|0;return(e==`x`?t:t&3|8).toString(16)}),le=e=>{let t=[],{appServer:n,language:r,editorLanguage:i,qeVersion:a,loaderBackground:o,loaderSpinnerColor:s,loaderSpinnerBackground:c,loaderFontColor:l,screenMode:u,key:d,token:f,timezoneId:p,itemEmbedding:m,itemDimensions:h,dashboardId:g,dashboardSlug:_,itemId:v,theme:y,mainColor:ee,accentColor:b,editMode:te}=e.params;r&&r!==`auto`&&t.push(`language=${r}`),i&&i!==`auto`&&t.push(`editorLanguage=${i}`),a&&t.push(`qe_version=${a}`),o&&t.push(`ldrbg=${o}`),l&&t.push(`ldrftclr=${l}`),s&&t.push(`ldrspclr=${s}`),c&&t.push(`ldrspbg=${c}`),y&&t.push(`theme=${y}`),ee&&t.push(`mainColor=${ee}`),b&&t.push(`accentColor=${b}`),u&&u!==`auto`&&t.push(`screenMode=&{screenMode}`),p&&t.push(`timezoneId=`+p),m&&h&&h.width&&t.push(`width=`+h.width),m&&h&&h.height&&t.push(`height=`+h.height),te&&t.push(`editMode=`+te);let ne=d&&f?`#`+d+`:`+f:``;return t.push(`version=`+(e.libVersion||`0.0.0-unknown-luzmo`)),ie(m?`${n}i/${g||_}/${v}?${encodeURIComponent(t.join(`&`))}${ne}`:`${n}i/${g||_}?${encodeURIComponent(t.join(`&`))}${ne}`)},ue=e=>{let t;(e.params.error||e.browserNotSupported.length>0)&&(e.params.error=!0,e.browserNotSupported&&(t=`Browser is not supported.`));let n=ne.initializing[e.params.language]||ne.initializing.en;return e.browserNotSupported||e.params.error?{loadingMsg:n,errorMsg:t}:{loadingMsg:n,errorMsg:``}};function de(e,t,n){e.promises[t]&&(e.promises[t].resolve(n),delete e.promises[t])}function fe(e,t,n){e.promises[t]&&(e.promises[t].reject(n),delete e.promises[t])}function pe(e){let t={};return e.params.loaderBackground&&!e.iframeLoaded&&(t.background=e.params.loaderBackground),t}function me(e){let t=e.params.itemDimensions?.height||b.itemDimensions.height,n=e.params.itemEmbedding&&t!==`auto`;return{display:e.iframeLoaded?`none`:``,height:`${n?t:e.minHeight}px`}}function he(e){let t=e.params.loaderBackground||b.loaderBackground;if(e.params.itemEmbedding){e.loaderSize=24,e.borderWidth=4,e.minHeight=200;let n=e.params.itemDimensions?.width||b.itemDimensions.width,r=e.params.itemDimensions?.height||b.itemDimensions.height,i=n!==`auto`,a=r!==`auto`;return{background:t,width:i?`${n}px`:`100%`,height:`${a?r:`200`}px`,"min-height":a?``:`200px`}}return{background:t}}function ge(e){let{loaderSpinnerColor:t,loaderSpinnerBackground:n}=b,r=ye(e.borderWidth,e.params.loaderSpinnerColor||t),i=ye(e.borderWidth,e.params.loaderSpinnerBackground||n),a=`${e.loaderSize}px`;return{"border-top":r,"border-right":r,"border-bottom":i,"border-left":i,width:a,height:a}}function _e(e){let t=e.params.itemDimensions?.height||b.itemDimensions.height,n=e.params.itemEmbedding&&t!==`auto`;return{padding:`${e.params.itemId?(t=>`${(t-e.loaderSize-32)/2}px`)(n?Number.parseInt(`${t}`,10):e.minHeight):`128px`} 16px`}}function ve(e){let t=e.params.itemDimensions?.height||b.itemDimensions.height,n=e.params.itemDimensions?.width||b.itemDimensions.width;e.params.itemEmbedding&&t!==`auto`?e.iframeHeight=`${t}px`:e.params.itemEmbedding?e.iframeHeight=`200px`:[`editFull`,`editLimited`].includes(e.params.editMode)?e.iframeHeight=`100%`:e.iframeHeight=`400px`,e.iframeWidth=e.params.itemEmbedding&&n!==`auto`?`${n}px`:`100%`;let r={height:e.iframeHeight,width:e.iframeWidth};return e.iframeLoaded?r.opacity=1:e.error?(r.opacity=1,r.width=`100%`,r.height=`400px`):r.opacity=0,r}function ye(e,t){return`${e}px solid ${t}`}var be=(e,t)=>{e?.contentWindow&&e.contentWindow.location.replace(t)},xe=(e,t,n)=>{let r=ce();return t?.contentWindow?(t.contentWindow.postMessage({action:`exportDashboard`,format:n||`png`,_version:e.libVersion,requestId:r},`*`),new Promise((t,n)=>{e.promises[r]={resolve:t,reject:n},setTimeout(()=>{e.promises[r]&&(e.promises[r].reject(Error(`exportDashboard request timed out.`)),delete e.promises[r])},12e5)})):Promise.reject(Error(`Cannot retrieve contentWindow.`))},Se=async e=>{if(await e.updateComplete,(e.currentAuthKey??e.authKey)&&(e.currentAuthToken??e.authToken)){let t=new Promise((t,n)=>{(()=>{try{window.fetch(`${x(e.params.apiHost)}0.1.0/authorization`,{method:`POST`,mode:`cors`,cache:`no-cache`,headers:{"Content-Type":`application/json`},redirect:`follow`,body:JSON.stringify({action:`get`,version:`0.1.0`,key:e.currentAuthKey??e.authKey,token:e.currentAuthToken??e.authToken,find:{where:{id:e.authKey},attributes:[`id`,`integration_id`],include:[{model:`User`,attributes:[`id`,`name`,`locale_id`],include:[{model:`Group`}]}]}})}).then(e=>e.json()).then(e=>{!e||!e.rows||e.rows.length===0||!e.rows[0].user?n(`Authorization failed, please check authKey and authToken. If the problem persists, please contact support@luzmo.com.`):(e.rows[0].user.userGroups=e.rows[0].user.groups.map(e=>e.id),delete e.rows[0].user.groups,t({integrationId:e.rows[0].integration_id,user:e.rows[0].user}))})}catch(e){n(e)}})()});return new Promise((n,r)=>void(()=>{try{t.then(t=>{window.fetch(`${x(e.params.apiHost)}0.1.0/securable`,{method:`POST`,mode:`cors`,cache:`no-cache`,headers:{"Content-Type":`application/json`},redirect:`follow`,body:JSON.stringify({action:`get`,version:`0.1.0`,key:e.currentAuthKey??e.authKey,token:e.currentAuthToken??e.authToken,find:{where:{type:`dashboard`,is_variant:!1},attributes:[`id`,`name`,`modified_at`],order:[[`modified_at`,`desc`]],include:[{model:`Tag`,attributes:[`tag`]},{model:`User`,attributes:[`id`,`name`]},{model:`Group`,attributes:[`id`,`name`,`public`]},{model:`Integration`,attributes:[`id`,`name`]}]}})}).then(e=>e.json()).then(r=>{n(r.rows.length>0?re(r.rows,t.integrationId,t.user,e):[])})}).catch(e=>{r(e)})}catch(e){r(e)}})())}throw Error(`No authKey or authToken found in the luzmo-dashboard component.`)},Ce=(e,t,n)=>{if(t?.contentWindow){let r=ce();return t.contentWindow.postMessage({action:`getData`,id:n,_version:e.libVersion,requestId:r},`*`),new Promise((t,n)=>{e.promises[r]={resolve:t,reject:n},setTimeout(()=>{e.promises[r]&&(e.promises[r].reject(Error(`getData request timed out.`)),delete e.promises[r])},2e3)})}return Promise.reject(Error(`Cannot retrieve contentWindow.`))},we=(e,t)=>{if(t?.contentWindow){let n=ce();return t.contentWindow.postMessage({action:`getFilters`,_version:e.libVersion,requestId:n},`*`),new Promise((t,r)=>{e.promises[n]={resolve:t,reject:r},setTimeout(()=>{e.promises[n]&&(e.promises[n].reject(Error(`getFilters request timed out.`)),delete e.promises[n])},2e3)})}return Promise.reject(Error(`Cannot retrieve contentWindow.`))},Te=(e,t,n)=>t?(t.contentWindow.postMessage({action:`refreshData`,id:n??null,_version:e.libVersion},`*`),Promise.resolve()):Promise.reject(Error(`Cannot retrieve contentWindow.`)),Ee=(e,t)=>t?(t.contentWindow.postMessage({action:`reloadDashboard`,_version:e.libVersion},`*`),Promise.resolve()):Promise.reject(Error(`Cannot retrieve contentWindow.`)),De=(e,t,n,r,i)=>t?(t.contentWindow.postMessage({action:`sendExportEmail`,type:n||`once`,subject:r,message:i,_version:e.libVersion},`*`),Promise.resolve()):Promise.reject(Error(`Cannot retrieve contentWindow.`)),Oe=(e,t,n,r)=>t?(t.contentWindow.postMessage({action:`setAuthorization`,key:n,token:r,_version:e.libVersion},`*`),Promise.resolve()):Promise.reject(Error(`Cannot retrieve contentWindow.`)),ke=(e,t,n)=>{if(t&&t.contentWindow){let r=ce();return e.params.editMode===n?Promise.reject(Error(`editMode parameter is currently already set to `+n)):n!==`editFull`&&n!==`editLimited`&&n!==`view`?Promise.reject(Error(`The editMode parameter must be one of the following values: 'editFull', 'editLimited' or 'view'.`)):(t.contentWindow.postMessage({action:`setEditMode`,editMode:n,_version:e.libVersion,requestId:r},`*`),new Promise((t,n)=>{e.promises[r]={resolve:t,reject:n}}))}return Promise.reject(Error(`Cannot retrieve contentWindow.`))},Ae=(e,t,n)=>{if(t){let r=ce();return t.contentWindow.postMessage({action:`setPreview`,preview:n,requestId:r,_version:e.libVersion},`*`),new Promise((t,n)=>{e.promises[r]={resolve:t,reject:n},setTimeout(()=>{e.promises[r]&&(e.promises[r].reject(Error(`setPreview request timed out.`)),delete e.promises[r])},2e3)})}return Promise.reject(Error(`Cannot retrieve contentWindow.`))},je=(e,t,n,r)=>{if(t){let i=ce();return t.contentWindow.postMessage({action:`setSelectedData`,itemId:n,filters:r,_version:e.libVersion,requestId:i},`*`),new Promise((t,n)=>{e.promises[i]={resolve:t,reject:n},setTimeout(()=>{e.promises[i]&&(e.promises[i].reject(Error(`setSelectedData request timed out.`)),delete e.promises[i])},2e3)})}return Promise.reject()},Me=e=>{if(!e.dimensions){e.params.error=!0,y(`Got no valid dimensions.`,e.params);return}let t=Object.keys(e.dimensions),n=[],r,i=0,a=0;if(!e.params.switchScreenModeOnResize&&e.currentScreenMode&&(e.params.screenMode=e.currentScreenMode),e.dimensions&&t?.[0]===`fixed`)r=`fixed`,i=e.dimensions.fixed[0],a=e.dimensions.fixed[1];else{let o=[`mobile`,`tablet`,`desktop`,`largeScreen`];if(e.params.itemEmbedding){let[n]=t,r=ae(n);for(let n of o){let i=t.find(e=>e===n);i?r=ae(i):e.dimensions[n]=e.dimensions[r]}}for(let r of t)if(o.includes(r)){let t=te.find(e=>e.mode===r);n.push({...t,height:e.dimensions[r][1]||50})}if(n.map(e=>e.mode).includes(e.params.screenMode)||(e.params.screenMode=`auto`),e.params.screenMode===`auto`){n.sort((e,t)=>o.indexOf(e.mode)-o.indexOf(t.mode));for(let t of n){let[n,o]=t.width;e.params.itemEmbedding&&e.params.itemDimensions&&e.params.itemDimensions.width!==`auto`&&e.params.itemDimensions.height===`auto`?n<e.params.itemDimensions.width&&(r=t.mode,i=Number.parseInt(e.params.itemDimensions.width,10),a=e.dimensions[r][1]):n<e.containerWidth&&(r=t.mode,e.params.itemEmbedding?(i=e.params.itemDimensions?.width&&e.params.itemDimensions?.width!==`auto`?Number.parseInt(e.params.itemDimensions.width,10):Math.min(e.containerWidth,o),a=e.params.itemDimensions?.height&&e.params.itemDimensions?.height!==`auto`?Number.parseInt(e.params.itemDimensions.height,10):e.dimensions[r][1],e.params.itemDimensions&&e.params.itemDimensions.width!==`auto`&&e.params.itemDimensions.height===`auto`&&(i=Number.parseInt(e.params.itemDimensions.width,10),a=e.dimensions[r][1])):(i=Math.max(Math.min(o,e.containerWidth),n),a=t.height))}}else{let{height:t,width:[o,s]}=n.find(t=>t.mode===e.params.screenMode);r=e.params.screenMode,i=Math.max(Math.min(s,e.containerWidth),o),a=t,e.params.itemEmbedding&&(e.params.itemDimensions?.width&&e.params.itemDimensions?.width!==`auto`&&(i=Number.parseInt(e.params.itemDimensions.width,10)),e.params.itemDimensions?.height&&e.params.itemDimensions?.height!==`auto`&&(a=Number.parseInt(e.params.itemDimensions.height,10)))}if(!r&&n.length>0){let[e]=n;r=e.mode,i=e.width[0],a=e.height}}e.currentScreenMode=r;let o={height:a===0?`100%`:`${String(a)}px`,width:i===0?`100%`:`${String(i)}px`,opacity:1};[`editFull`,`editLimited`].includes(e.params.editMode)?(o.height=`100%`,o.width=`100%`):e.params.itemEmbedding&&e.params.itemDimensions?(o.height=e.params.itemDimensions.height===`auto`?o.height:`${String(e.params.itemDimensions.height).replace(`px`,``)}px`,o.width=e.params.itemDimensions.width===`auto`?o.width:`${String(e.params.itemDimensions.width).replace(`px`,``)}px`):(o.height=a===0?`100%`:`${String(a)}px`,o.width=i===0?`100%`:`${String(i)}px`),e.currentScreenMode=r,e.iframeStyle=o},Ne=e=>{let t=Object.keys(b),n=[],r=[`appServer`,`language`,`apiHost`],i=[`key`,`token`,`screenMode`,`timezoneId`,`itemId`,`container`,`loaderBackground`,`loaderFontColor`,`loaderSpinnerColor`,`loaderSpinnerBackground`],a=[`itemDimensions`],o=[`mobile`,`tablet`,`desktop`,`largeScreen`,`fixed`,`auto`];for(let n of t)e.params[n]===null&&delete e.params[n];e.params=se(e.params,b),(!e.params.dashboardId||typeof e.params.dashboardId!=`string`)&&(!e.params.dashboardSlug||typeof e.params.dashboardSlug!=`string`)&&(delete e.params.dashboardId,delete e.params.dashboardSlug);for(let t of r)typeof e.params[t]!=`string`&&(delete e.params[t],n.push(`${t} needs to be of type string.`));for(let t of i)typeof e.params[t]!=`string`&&e.params[t]!==null&&e.params[t]!==void 0&&(delete e.params[t],n.push(`${t} needs to be of type string or empty.`));if(e.params.screenMode&&!o.includes(e.params.screenMode)){let t=o.map(e=>`"${e}"`).join(`, `);n.push(`"screenMode" needs should be one of these types: ${t}`),e.params.screenMode=`auto`}e.params.itemId&&(e.params.itemEmbedding=!0);for(let t of a)typeof e.params[t]!=`object`&&e.params[t]!==null&&(delete e.params[t],n.push(`${t} needs to be of type object or empty.`));if(typeof e.params.switchScreenModeOnResize!=`boolean`&&(n.push(`switchScreenModeOnResize needs to be of type boolean.`),e.params.switchScreenModeOnResize=!0),e.params.itemDimensions)for(let t of[`width`,`height`])![`string`,`number`].includes(typeof e.params.itemDimensions[t])&&e.params.itemDimensions[t]!==null&&n.push(`itemDimensions ${t} needs to be of type string, number or empty.`);e.params=se(e.params,b),e.params.screenMode&&e.params.screenMode!==`auto`&&(e.params.switchScreenModeOnResize=!1),e.params.itemDimensions.width!==`auto`&&(e.params.itemDimensions.width=Number.parseInt(`${e.params.itemDimensions.width}`.replace(`px`,``),10)||`auto`),e.params.itemDimensions.height!==`auto`&&(e.params.itemDimensions.height=Number.parseInt(`${e.params.itemDimensions.height}`.replace(`px`,``),10)||`auto`),e.params.itemEmbedding=!!e.params.itemId,(e.params.error||n.length>0)&&y(n.join(`
21
21
  `),e.params)},Pe={type:`type`,slots:`slots`,options:`options`,appServer:`app-server`,apiHost:`api-host`,authKey:`auth-key`,authToken:`auth-token`,contextId:`context-id`,canFilter:`can-filter`,filters:`filters`,dashboardId:`dashboard-id`,itemId:`item-id`,dashboardContentsVersion:`dashboard-contents-version`,libVersion:`lib-version`},Fe=`luzmo-embed-container`,Ie=`FEDERATION_DEBUG`,C={AT:`@`,HYPHEN:`-`,SLASH:`/`},Le={[C.AT]:`scope_`,[C.HYPHEN]:`_`,[C.SLASH]:`__`};Le[C.AT],C.AT,Le[C.HYPHEN],C.HYPHEN,Le[C.SLASH],C.SLASH;var Re=function(e){return e[e.UNKNOWN=1]=`UNKNOWN`,e[e.CALCULATED=2]=`CALCULATED`,e[e.NO_USE=0]=`NO_USE`,e}({}),w=typeof ENV_TARGET<`u`?ENV_TARGET===`web`:typeof window<`u`&&window.document!==void 0;function ze(){return w}function Be(){return typeof navigator<`u`&&navigator?.product===`ReactNative`}function Ve(){try{if(ze()&&window.localStorage)return!!localStorage.getItem(Ie)}catch{return!1}return!1}function He(){return typeof process<`u`&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:typeof FEDERATION_DEBUG<`u`&&FEDERATION_DEBUG?!0:Ve()}var Ue=`[ Federation Runtime ]`,We=function(...e){return e.length?e.reduce((e,t)=>t?e?`${e}:${t}`:t:e,``):``},Ge=(e,t)=>{if(`getPublicPath`in e){let n;return n=e.getPublicPath.startsWith(`function`)?Function(`return `+e.getPublicPath)()():Function(e.getPublicPath)(),`${n}${t}`}else if(`publicPath`in e)return!ze()&&!Be()&&`ssrPublicPath`in e&&typeof e.ssrPublicPath==`string`?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`;else return console.warn(`Cannot get resource URL. If in debug mode, please ignore.`,e,t),``},Ke=e=>{console.warn(`${Ue}: ${e}`)};function qe(e){try{return JSON.stringify(e,null,2)}catch{return``}}var Je=(e,t)=>{if(!e)return t;let n=(e=>{if(e===`.`)return``;if(e.startsWith(`./`))return e.replace(`./`,``);if(e.startsWith(`/`)){let t=e.slice(1);return t.endsWith(`/`)?t.slice(0,-1):t}return e})(e);return n?n.endsWith(`/`)?`${n}${t}`:`${n}/${t}`:t};function Ye(e){return e.replace(/#.*$/,``).replace(/\?.*$/,``).replace(/\/[^\/]+$/,`/`)}function Xe(e,t={}){let{remotes:n={},overrides:r={},version:i}=t,a,o=()=>`publicPath`in e.metaData?(e.metaData.publicPath===`auto`||e.metaData.publicPath===``)&&i?Ye(i):e.metaData.publicPath:e.metaData.getPublicPath,s=Object.keys(r),c={};Object.keys(n).length||(c=e.remotes?.reduce((e,t)=>{let n,i=t.federationContainerName;return n=s.includes(i)?r[i]:`version`in t?t.version:t.entry,e[i]={matchedVersion:n},e},{})||{}),Object.keys(n).forEach(e=>c[e]={matchedVersion:s.includes(e)?r[e]:n[e]});let{remoteEntry:{path:l,name:u,type:d},types:f={path:``,name:``,zip:``,api:``},buildInfo:{buildVersion:p},globalName:m,ssrRemoteEntry:h}=e.metaData,{exposes:g}=e,_={version:i||``,buildVersion:p,globalName:m,remoteEntry:Je(l,u),remoteEntryType:d,remoteTypes:Je(f.path,f.name),remoteTypesZip:f.zip||``,remoteTypesAPI:f.api||``,remotesInfo:c,shared:e?.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:g?.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(e.metaData?.prefetchInterface){let t=e.metaData.prefetchInterface;_={..._,prefetchInterface:t}}if(e.metaData?.prefetchEntry){let{path:t,name:n,type:r}=e.metaData.prefetchEntry;_={..._,prefetchEntry:Je(t,n),prefetchEntryType:r}}if(`publicPath`in e.metaData?(a={..._,publicPath:o()},typeof e.metaData.ssrPublicPath==`string`&&(a.ssrPublicPath=e.metaData.ssrPublicPath)):a={..._,getPublicPath:o()},h){let e=Je(h.path,h.name);a.ssrRemoteEntry=e,a.ssrRemoteEntryType=h.type||`commonjs-module`}return a}function Ze(e){return!!(`remoteEntry`in e&&e.remoteEntry.includes(`.json`))}var Qe=`[ Module Federation ]`,$e=console,et=[`logger.ts`,`logger.js`,`captureStackTrace`,`Logger.emit`,`Logger.log`,`Logger.info`,`Logger.warn`,`Logger.error`,`Logger.debug`];function tt(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split(`
22
22
  `),n=t.filter(e=>!et.some(t=>e.includes(t)));return n.length?`Stack trace:\n${n.slice(0,5).join(`
23
23
  `)}`:void 0}catch{return}}var nt=class{constructor(e,t=$e){this.prefix=e,this.delegate=t??$e}setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??$e}emit(e,t){let n=this.delegate,r=He()?tt():void 0,i=r?[...t,r]:t,a=(()=>{switch(e){case`log`:return[`log`,`info`];case`info`:return[`info`,`log`];case`warn`:return[`warn`,`info`,`log`];case`error`:return[`error`,`warn`,`log`];default:return[`debug`,`log`]}})();for(let e of a){let t=n[e];if(typeof t==`function`){t.call(n,this.prefix,...i);return}}for(let e of a){let t=$e[e];if(typeof t==`function`){t.call($e,this.prefix,...i);return}}}log(...e){this.emit(`log`,e)}warn(...e){this.emit(`warn`,e)}error(...e){this.emit(`error`,e)}success(...e){this.emit(`info`,e)}info(...e){this.emit(`info`,e)}ready(...e){this.emit(`info`,e)}debug(...e){He()&&this.emit(`debug`,e)}};function rt(e){return new nt(e)}function it(e){let t=new nt(e);return Object.defineProperty(t,`__mf_infrastructure_logger__`,{value:!0,enumerable:!1,configurable:!1}),t}rt(Qe),it(Qe);async function at(e,t){try{return await e()}catch(e){!t&&Ke(e);return}}function ot(e,t){let n=/^(https?:)?\/\//i;return e.replace(n,``).replace(/\/$/,``)===t.replace(n,``).replace(/\/$/,``)}function st(e){let t=null,n=!0,r=2e4,i,a=document.getElementsByTagName(`script`);for(let r=0;r<a.length;r++){let i=a[r],o=i.getAttribute(`src`);if(o&&ot(o,e.url)){t=i,n=!1;break}}if(!t){let n=e.attrs;t=document.createElement(`script`),t.type=n?.type===`module`?`module`:`text/javascript`;let i;e.createScriptHook&&(i=e.createScriptHook(e.url,e.attrs),i instanceof HTMLScriptElement?t=i:typeof i==`object`&&(`script`in i&&i.script&&(t=i.script),`timeout`in i&&i.timeout&&(r=i.timeout))),t.src||=e.url,n&&!i&&Object.keys(n).forEach(e=>{t&&(e===`async`||e===`defer`?t[e]=n[e]:t.getAttribute(e)||t.setAttribute(e,n[e]))})}let o=null,s=typeof window<`u`?t=>{if(t.filename&&ot(t.filename,e.url)){let n=Error(`ScriptExecutionError: Script "${e.url}" loaded but threw a runtime error during execution: ${t.message} (${t.filename}:${t.lineno}:${t.colno})`);n.name=`ScriptExecutionError`,o=n}}:null;s&&window.addEventListener(`error`,s);let c=async(n,r)=>{clearTimeout(i),s&&window.removeEventListener(`error`,s);let a=()=>{if(r?.type===`error`){let t=Error(r?.isTimeout?`ScriptNetworkError: Script "${e.url}" timed out.`:`ScriptNetworkError: Failed to load script "${e.url}" - the script URL is unreachable or the server returned an error (network failure, 404, CORS, etc.)`);t.name=`ScriptNetworkError`,e?.onErrorCallback&&e?.onErrorCallback(t)}else o?e?.onErrorCallback&&e?.onErrorCallback(o):e?.cb&&e?.cb()};if(t&&(t.onerror=null,t.onload=null,at(()=>{let{needDeleteScript:n=!0}=e;n&&t?.parentNode&&t.parentNode.removeChild(t)}),n&&typeof n==`function`)){let e=n(r);if(e instanceof Promise){let t=await e;return a(),t}return a(),e}a()};return t.onerror=c.bind(null,t.onerror),t.onload=c.bind(null,t.onload),i=setTimeout(()=>{c(null,{type:`error`,isTimeout:!0})},r),{script:t,needAttach:n}}function ct(e){let t=null,n=!0,r=document.getElementsByTagName(`link`);for(let i=0;i<r.length;i++){let a=r[i],o=a.getAttribute(`href`),s=a.getAttribute(`rel`);if(o&&ot(o,e.url)&&s===e.attrs.rel){t=a,n=!1;break}}if(!t){t=document.createElement(`link`),t.setAttribute(`href`,e.url);let n,r=e.attrs;e.createLinkHook&&(n=e.createLinkHook(e.url,r),n instanceof HTMLLinkElement&&(t=n)),r&&!n&&Object.keys(r).forEach(e=>{t&&!t.getAttribute(e)&&t.setAttribute(e,r[e])})}let i=(n,r)=>{let i=()=>{r?.type===`error`?e?.onErrorCallback&&e?.onErrorCallback(r):e?.cb&&e?.cb()};if(t&&(t.onerror=null,t.onload=null,at(()=>{let{needDeleteLink:n=!0}=e;n&&t?.parentNode&&t.parentNode.removeChild(t)}),n)){let e=n(r);return i(),e}i()};return t.onerror=i.bind(null,t.onerror),t.onload=i.bind(null,t.onload),{link:t,needAttach:n}}function lt(e,t){let{attrs:n={},createScriptHook:r}=t;return new Promise((t,i)=>{let{script:a,needAttach:o}=st({url:e,cb:t,onErrorCallback:i,attrs:{fetchpriority:`high`,...n},createScriptHook:r,needDeleteScript:!0});o&&document.head.appendChild(a)})}var ut=new Map;function dt(e){if(!e)throw Error(`import specifier is required`);if(ut.has(e))return ut.get(e);let t=Function(`name`,`return import(name)`)(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),ut.delete(e),t});return ut.set(e,t),t}var ft=async()=>{let e=await dt(`node-fetch`);return e.default||e},pt=async(e,t,n)=>{let r=await((e,t)=>n.lifecycle.fetch.emit(e,t))(e,t||{});return!r||!(r instanceof Response)?(typeof fetch>`u`?await ft():fetch)(e,t||{}):r},mt=typeof ENV_TARGET>`u`||ENV_TARGET!==`web`?(e,t,n,r)=>{if(r?.createScriptHook){let t=r.createScriptHook(e);t&&typeof t==`object`&&`url`in t&&(e=t.url)}let i;try{i=new URL(e)}catch(e){console.error(`Error constructing URL:`,e),t(Error(`Invalid URL: ${e}`));return}let a=async()=>r?.fetch?(e,t)=>pt(e,t,r):typeof fetch>`u`?ft():fetch,o=async(e,r)=>{try{let i=await(await e(r.href)).text(),[a,o]=await Promise.all([dt(`path`),dt(`vm`)]),s={exports:{},module:{exports:{}}},c=r.pathname.split(`/`).slice(0,-1).join(`/`),l=a.basename(r.pathname),u=new o.Script(`(function(exports, module, require, __dirname, __filename) {${i}\n})`,{filename:l,importModuleDynamically:o.constants?.USE_MAIN_CONTEXT_DEFAULT_LOADER??dt}),d;d=(await dt(`node:module`)).createRequire(r.protocol===`file:`||r.protocol===`node:`?r.href:a.join(process.cwd(),`__mf_require_base__.js`)),u.runInThisContext()(s.exports,s.module,d,c,l);let f=s.module.exports||s.exports;if(n&&f&&n.globalName){t(void 0,f[n.globalName]||f);return}t(void 0,f)}catch(e){t(e instanceof Error?e:Error(`Script execution error: ${e}`))}};a().then(async e=>{if(n?.type===`esm`||n?.type===`module`)return _t(i.href,{fetch:e,vm:await dt(`vm`)}).then(async e=>{await e.evaluate(),t(void 0,e.namespace)}).catch(e=>{t(e instanceof Error?e:Error(`Script execution error: ${e}`))});o(e,i)}).catch(e=>{t(e)})}:(e,t,n,r)=>{t(Error(`createScriptNode is disabled in non-Node.js environment`))},ht=typeof ENV_TARGET>`u`||ENV_TARGET!==`web`?(e,t)=>new Promise((n,r)=>{mt(e,(e,i)=>{if(e)r(e);else{let e=t?.attrs?.globalName||`__FEDERATION_${t?.attrs?.name}:custom__`;n(globalThis[e]=i)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error(`loadScriptNode is disabled in non-Node.js environment`)},gt=new Map;async function _t(e,t){if(gt.has(e))return gt.get(e);let{fetch:n,vm:r}=t,i=await(await n(e)).text(),a=new r.SourceTextModule(i,{importModuleDynamically:async(n,r)=>{let i=new URL(n,e).href;return _t(i,t)}});return gt.set(e,a),await a.link(async n=>{let r=new URL(n,e).href;return await _t(r,t)}),a}var vt=e=>`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${e.split(`-`)[0].toLowerCase()}#${e.toLowerCase()}`,yt=(e,t,n,r)=>{let i=[`${[t[e]]} #${e}`];return n&&i.push(`args: ${JSON.stringify(n)}`),i.push(vt(e)),r&&i.push(`Original Error Message:\n ${r}`),i.join(`
@@ -224,17 +224,17 @@ require(`./chunk-i8uDWG73.cjs`);const e=require(`./decorate-BfLyr4NV.cjs`),t=req
224
224
  width: 100%;
225
225
  height: 100%;
226
226
  }
227
- `}createRenderRoot(){return this}async firstUpdated(e){super.firstUpdated(e),await bi(this.calculatedAppServer,`IQApp`),this.createAndAppendElement()}get calculatedAppServer(){return this.appServer.startsWith(`http://localhost`)?this.remoteEntryServer:this.appServer}createAndAppendElement(){this.chartElement||(this.chartElement=document.createElement(`luzmo-iq-answer-component`),this.chartElement.addEventListener(`addQuestion`,e=>this.dispatchEvent(new CustomEvent(`addQuestion`,e))),this.chartElement.addEventListener(`addAnswer`,e=>this.dispatchEvent(new CustomEvent(`addAnswer`,e))),this.updateVizItemProperties(),this.renderRoot.append(this.chartElement))}updateVizItemProperties(){if(this.chartElement)for(let e in Fi){let t=this[e];if(t){let n=[`appServer`,`apiHost`].includes(e)?S(t):t;this.chartElement.setAttribute(Fi[e],typeof n==`object`?JSON.stringify(n):n)}}}async updated(e){if(this.chartElement)for(let[t]of e.entries()){let e=Fi[t]??t,n=typeof this[t]==`object`?JSON.stringify(this[t]):this[t]?.toString()??this[t];this.chartElement.setAttribute(e,n)}else await bi(this.calculatedAppServer,`IQApp`),this.createAndAppendElement()}render(){return o.html` `}};F([(0,s.property)()],z.prototype,`appServer`,2),F([(0,s.property)()],z.prototype,`apiHost`,2),F([(0,s.property)({type:Object})],z.prototype,`options`,2),F([(0,s.property)()],z.prototype,`aiEndPoint`,2),F([(0,s.property)()],z.prototype,`authKey`,2),F([(0,s.property)()],z.prototype,`authToken`,2),F([(0,s.property)()],z.prototype,`messages`,2),F([(0,s.property)()],z.prototype,`version`,2),F([(0,s.property)()],z.prototype,`libVersion`,2),F([(0,s.property)()],z.prototype,`remoteEntryServer`,2),customElements.get(Ii)||customElements.define(Ii,z),o.LitElement.disableWarning?.(`change-in-update`);var Li=`.grid-stack{position:relative}.grid-stack-rtl{direction:ltr}.grid-stack-rtl>.grid-stack-item{direction:rtl}.grid-stack-placeholder>.placeholder-content{background-color:#0000001a;width:auto;margin:0;position:absolute;z-index:0!important}.grid-stack>.grid-stack-item{width:var(--gs-column-width);height:var(--gs-cell-height);padding:0;position:absolute;top:0}.grid-stack>.grid-stack-item>.grid-stack-item-content{width:auto;margin:0;position:absolute;overflow:hidden auto}.grid-stack>.grid-stack-item.size-to-content:not(.size-to-content-max)>.grid-stack-item-content{overflow-y:hidden}.grid-stack:not(.grid-stack-rtl)>.grid-stack-item{left:0}.grid-stack.grid-stack-rtl>.grid-stack-item{right:0}.grid-stack>.grid-stack-item>.grid-stack-item-content,.grid-stack>.grid-stack-placeholder>.placeholder-content{top:var(--gs-item-margin-top);right:var(--gs-item-margin-right);bottom:var(--gs-item-margin-bottom);left:var(--gs-item-margin-left)}.grid-stack-item>.ui-resizable-handle{-ms-touch-action:none;touch-action:none;font-size:.1px;display:block;position:absolute}.grid-stack-item.ui-resizable-autohide>.ui-resizable-handle,.grid-stack-item.ui-resizable-disabled>.ui-resizable-handle{display:none}.grid-stack-item>.ui-resizable-ne,.grid-stack-item>.ui-resizable-nw,.grid-stack-item>.ui-resizable-se,.grid-stack-item>.ui-resizable-sw{background-image:url("data:image/svg+xml;utf8,<svg xmlns=\\"http://www.w3.org/2000/svg\\" fill=\\"none\\" stroke=\\"%23666\\" stroke-linecap=\\"round\\" stroke-linejoin=\\"round\\" stroke-width=\\"2\\" viewBox=\\"0 0 20 20\\"><path d=\\"m10 3 2 2H8l2-2v14l-2-2h4l-2 2\\"/></svg>");background-position:50%;background-repeat:no-repeat}.grid-stack-item>.ui-resizable-ne,.grid-stack-item>.ui-resizable-sw{transform:rotate(45deg)}.grid-stack-item>.ui-resizable-nw,.grid-stack-item>.ui-resizable-se{transform:rotate(-45deg)}.grid-stack-item>.ui-resizable-nw{cursor:nw-resize;width:20px;height:20px;top:var(--gs-item-margin-top);left:var(--gs-item-margin-left)}.grid-stack-item>.ui-resizable-n{cursor:n-resize;height:10px;top:var(--gs-item-margin-top);left:25px;right:25px}.grid-stack-item>.ui-resizable-ne{cursor:ne-resize;width:20px;height:20px;top:var(--gs-item-margin-top);right:var(--gs-item-margin-right)}.grid-stack-item>.ui-resizable-e{cursor:e-resize;width:10px;top:15px;bottom:15px;right:var(--gs-item-margin-right)}.grid-stack-item>.ui-resizable-se{cursor:se-resize;width:20px;height:20px;bottom:var(--gs-item-margin-bottom);right:var(--gs-item-margin-right)}.grid-stack-item>.ui-resizable-s{cursor:s-resize;height:10px;left:25px;bottom:var(--gs-item-margin-bottom);right:25px}.grid-stack-item>.ui-resizable-sw{cursor:sw-resize;width:20px;height:20px;bottom:var(--gs-item-margin-bottom);left:var(--gs-item-margin-left)}.grid-stack-item>.ui-resizable-w{cursor:w-resize;width:10px;top:15px;bottom:15px;left:var(--gs-item-margin-left)}.grid-stack-item.ui-draggable-dragging>.ui-resizable-handle{display:none!important}.grid-stack-item.ui-draggable-dragging{will-change:left,right,top}.grid-stack-item.ui-resizable-resizing{will-change:width,height}.ui-draggable-dragging,.ui-resizable-resizing{z-index:10000}.ui-draggable-dragging>.grid-stack-item-content,.ui-resizable-resizing>.grid-stack-item-content{opacity:.8;box-shadow:1px 4px 6px #0003}.grid-stack-animate,.grid-stack-animate .grid-stack-item{transition:left .3s,right .3s,top .3s,height .3s,width .3s}.grid-stack-animate .grid-stack-item.grid-stack-placeholder,.grid-stack-animate .grid-stack-item.ui-draggable-dragging,.grid-stack-animate .grid-stack-item.ui-resizable-resizing{transition:left,right,top,height,width}.grid-stack>.grid-stack-item[gs-y="0"]{top:0}.grid-stack:not(.grid-stack-rtl)>.grid-stack-item[gs-x="0"]{left:0}.grid-stack.grid-stack-rtl>.grid-stack-item[gs-x="0"]{right:0}`,Ri=(e,t)=>{e.forEach(e=>{let n=e.querySelector(`luzmo-embed-viz-item`);n&&(n.options={...n.options,locale:t})})},zi=({action:e,actionType:t,active:n,items:r,element:i,itemId:a,item:o,deletedId:s,originalElement:c,updatedItems:l})=>({action:e,actionType:t,active:n,items:r,element:i,item:{...o,id:a,filters:o?.filters??[]},...s&&{deletedId:s},...c&&{originalElement:c},...l&&{updatedItems:l}}),Bi=({target:e,action:t,actionType:n,active:r,items:i,element:a,itemId:o,item:s,deletedId:c,originalElement:l,updatedItems:u})=>{e.dispatchEvent(new CustomEvent(`luzmo-item-grid-item-action`,{detail:zi({action:t,actionType:n,active:r,items:i,element:a,itemId:o,item:s,deletedId:c,originalElement:l,updatedItems:u}),bubbles:!0,composed:!0,cancelable:!0}))},B=({target:e,itemStates:t,updatedItemStates:n,changedItemStates:r})=>{e.dispatchEvent(new CustomEvent(`luzmo-item-grid-item-states-changed`,{detail:{itemStates:t,updatedItemStates:n,changedItemStates:r},bubbles:!0,composed:!0}))},Vi=({target:e,eventName:t,detail:n})=>{e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0}))},Hi=e=>e instanceof Element?e:void 0,Ui=e=>Hi(e)?.closest(`.grid-stack-item`),Wi=({event:e,gridItem:t})=>Hi(e.relatedTarget)?.closest(`.grid-item-actions-popover`)?!1:!t.hasAttribute(`active`),Gi=({event:e,focusedItemElement:t,removeItemActionsMenuPopover:n})=>{let r=Ui(e.target);return r?(t&&t!==r&&(t.removeAttribute(`focused`),n(t)),r.setAttribute(`focused`,`true`),r):t},Ki=({event:e,focusedItemElement:t,removeItemActionsMenuPopover:n})=>t?Hi(e.relatedTarget)?.closest(`luzmo-item-grid-item-actions-menu`)?{focusedItemElement:t,shouldFocusGrid:!1}:(t.removeAttribute(`focused`),n(t),{focusedItemElement:void 0,shouldFocusGrid:!0}):{focusedItemElement:void 0,shouldFocusGrid:!1},qi=({item:e,activeItemElement:t,gridElement:n,removeItemActionsMenuPopover:r})=>{if(e.removeAttribute(`active`),r(e),t===e){n.removeAttribute(`has-active-item`);return}return t},Ji=({event:e,gridElement:t,items:n,state:r,cleanupActiveItem:i,dispatchItemActionEvent:a,createItemActionsMenuPopover:o})=>{e.stopPropagation();let s=e.detail,c=e.target?.closest(`.grid-stack-item`);if(!c)return r;let l=c.getAttribute(`gs-id`),u=n.find(e=>e.id===l);return s.type===`toggle`&&s.action===r.activeItemActionToggle&&c===r.activeItemElement?(r.activeItemElement=void 0,r.activeItemActionToggle=void 0,t.removeAttribute(`has-active-item`),c.removeAttribute(`active`),i(c),l&&a(s.action,s.type,!1,c,l,u),r):(t.querySelectorAll(`.grid-stack-item`).forEach(e=>{e!==c&&i(e)}),s.type===`toggle`?(r.activeItemElement=c,r.activeItemActionToggle=s.action,t.setAttribute(`has-active-item`,`true`),c.setAttribute(`active`,`true`),o(c,[s.action])):r.activeItemElement&&r.activeItemElement!==c&&(r.activeItemElement=void 0,r.activeItemActionToggle=void 0),l&&a(s.action,s.type,s.active,c,l,u),r)},Yi=({event:e,gridElement:t,hostElement:n,items:r,activeItemActionToggle:i,cleanupActiveItem:a,dispatchItemActionEvent:o})=>{let s=e.composedPath();if(!s.includes(t)&&!s.includes(n))return{activeItemActionToggle:i};let c=t.querySelector(`.grid-stack-item[active]`);if(!c||s.includes(c))return{activeItemActionToggle:i};let l=c.querySelector(`.grid-item-actions-popover`);if(l&&s.includes(l))return{activeItemActionToggle:i};let u=c.getAttribute(`gs-id`),d=r.find(e=>e.id===u);return a(c),i&&u&&o(i,`toggle`,!1,c,u,d),{activeItemActionToggle:void 0}},Xi=({gridElement:e,items:t,gridItemData:n,itemId:r,action:i,options:a,state:o,cleanupActiveItem:s,dispatchItemActionEvent:c,createItemActionsMenuPopover:l})=>{if(!n?.element)return{result:void 0,state:o};let u=n.element,d=n.item,f=i===o.activeItemActionToggle&&u===o.activeItemElement,p=a?.active??!f;if(a?.active!==void 0&&p===f)return{result:f,state:o};if(!p)return o.activeItemElement=void 0,o.activeItemActionToggle=void 0,e.removeAttribute(`has-active-item`),u.removeAttribute(`active`),s(u),c(i,`toggle`,!1,u,r,d),{result:!1,state:o};if(o.activeItemElement&&o.activeItemElement!==u){let e=o.activeItemElement.getAttribute(`gs-id`),n=t.find(t=>t.id===e),r=o.activeItemActionToggle,i=o.activeItemElement;s(o.activeItemElement),o.activeItemElement=void 0,o.activeItemActionToggle=void 0,r&&e&&n&&c(r,`toggle`,!1,i,e,n)}return o.activeItemElement=u,o.activeItemActionToggle=i,e.setAttribute(`has-active-item`,`true`),u.setAttribute(`active`,`true`),l(u,[i]),c(i,`toggle`,!0,u,r,d),{result:!0,state:o}},Zi=({gridElement:e,items:t,state:n,cleanupActiveItem:r,dispatchItemActionEvent:i})=>{let a=0;if(n.activeItemElement&&n.activeItemActionToggle){let o=n.activeItemElement.getAttribute(`gs-id`),s=t.find(e=>e.id===o),c=n.activeItemActionToggle,l=n.activeItemElement;r(n.activeItemElement),n.activeItemElement=void 0,n.activeItemActionToggle=void 0,e.removeAttribute(`has-active-item`),c&&o&&s&&(i(c,`toggle`,!1,l,o,s),a++)}return{deactivatedCount:a,state:n}},Qi={sizeX:1,sizeY:1,col:0,row:0},$i=e=>{e.forEach(e=>{if(!e.id)throw Error(`Grid item id is required`)})},ea=e=>{if(!e.id)throw Error(`Grid item id is required`);return e.id},ta=(e,t)=>({id:t,x:e?.position?.col??0,y:e?.position?.row??0,w:e?.position?.sizeX??1,h:e?.position?.sizeY??1}),na=(e,t)=>({...structuredClone(e),id:t,position:{...Qi,...structuredClone(e.position)},canFilter:e.canFilter??`all`}),ra=(e,t)=>{if(t){for(let n of e)if(n.getAttribute(`luzmo-item-grid-item-id`)===t)return n}},ia=(e,t)=>e.map(e=>{let n={item:e,element:t.querySelector(`[gs-id="${e.id}"]`)},r=n.element?.querySelector(`luzmo-embed-viz-item`);return r&&(n.luzmoElement=r),n}),aa=({item:e,engine:t,existingItems:n,autoPosition:r,excludeNodeId:i})=>{let a=e.position,o=i?t.nodes.filter(e=>e.id!==i):t.nodes,s=new t.constructor({column:t.column,float:t.float,nodes:o.map(e=>({...e}))}),c={x:a.col,y:a.row,w:a.sizeX,h:a.sizeY,id:e.id,autoPosition:r};s.addNode(c);let l={...e,position:{col:c.x??a.col,row:c.y??a.row,sizeX:c.w??a.sizeX,sizeY:c.h??a.sizeY}};return{resolvedItem:l,updatedItems:[...n.map(e=>{let t=s.nodes.find(t=>t.id===e.id);return t&&t.x!=null&&t.y!=null&&t.w!=null&&t.h!=null?{...e,position:{col:t.x,row:t.y,sizeX:t.w,sizeY:t.h}}:e}),l]}},oa=({itemId:e,patch:t,engine:n,existingItems:r})=>{let i=r.find(t=>t.id===e);if(!i?.position)return r;let{resolvedItem:a,updatedItems:o}=aa({item:{...i,position:{...i.position,...t}},engine:n,existingItems:r.filter(t=>t.id!==e),autoPosition:!1,excludeNodeId:e});return r.map(t=>t.id===e?a:o.find(e=>e.id===t.id)??t)},sa=e=>na(e,e.id),ca=Math.min,la=Math.max,ua=Math.round,da=Math.floor,V=e=>({x:e,y:e}),fa={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function pa(e,t){return typeof e==`function`?e(t):e}function ma(e){return e.split(`-`)[0]}function ha(e){return e.split(`-`)[1]}function ga(e){return e===`x`?`y`:`x`}function _a(e){return e===`y`?`height`:`width`}function va(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function ya(e){return ga(va(e))}function ba(e,t,n){n===void 0&&(n=!1);let r=ha(e),i=ya(e),a=_a(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=ka(o)),[o,ka(o)]}function xa(e){let t=ka(e);return[Sa(e),t,Sa(t)]}function Sa(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var Ca=[`left`,`right`],wa=[`right`,`left`],Ta=[`top`,`bottom`],Ea=[`bottom`,`top`];function Da(e,t,n){switch(e){case`top`:case`bottom`:return n?t?wa:Ca:t?Ca:wa;case`left`:case`right`:return t?Ta:Ea;default:return[]}}function Oa(e,t,n,r){let i=ha(e),a=Da(ma(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(Sa)))),a}function ka(e){let t=ma(e);return fa[t]+e.slice(t.length)}function Aa(e){return{top:0,right:0,bottom:0,left:0,...e}}function ja(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:Aa(e)}function Ma(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function Na(e,t,n){let{reference:r,floating:i}=e,a=va(t),o=ya(t),s=_a(o),c=ma(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(ha(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function Pa(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=pa(t,e),p=ja(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=Ma(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=Ma(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var Fa=50,Ia=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:Pa},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=Na(l,r,c),f=r,p=0,m={};for(let n=0;n<a.length;n++){let h=a[n];if(!h)continue;let{name:g,fn:_}=h,{x:v,y,data:ee,reset:b}=await _({x:u,y:d,initialPlacement:r,placement:f,strategy:i,middlewareData:m,rects:l,platform:s,elements:{reference:e,floating:t}});u=v??u,d=y??d,m[g]={...m[g],...ee},b&&p<Fa&&(p++,typeof b==`object`&&(b.placement&&(f=b.placement),b.rects&&(l=b.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):b.rects),{x:u,y:d}=Na(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},La=function(e){return e===void 0&&(e={}),{name:`flip`,options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:a,initialPlacement:o,platform:s,elements:c}=t,{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f=`bestFit`,fallbackAxisSideDirection:p=`none`,flipAlignment:m=!0,...h}=pa(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let g=ma(r),_=va(o),v=ma(o)===o,y=await(s.isRTL==null?void 0:s.isRTL(c.floating)),ee=d||(v||!m?[ka(o)]:xa(o)),b=p!==`none`;!d&&b&&ee.push(...Oa(o,m,p,y));let te=[o,...ee],ne=await s.detectOverflow(t,h),x=[],S=i.flip?.overflows||[];if(l&&x.push(ne[g]),u){let e=ba(r,a,y);x.push(ne[e[0]],ne[e[1]])}if(S=[...S,{placement:r,overflows:x}],!x.every(e=>e<=0)){let e=(i.flip?.index||0)+1,t=te[e];if(t&&(!(u===`alignment`&&_!==va(t))||S.every(e=>va(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:S},reset:{placement:t}};let n=S.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=S.filter(e=>{if(b){let t=va(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}},Ra=new Set([`left`,`top`]);async function za(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=ma(n),s=ha(n),c=va(n)===`y`,l=Ra.has(o)?-1:1,u=a&&c?-1:1,d=pa(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var Ba=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await za(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}};function Va(){return typeof window<`u`}function Ha(e){return Ua(e)?(e.nodeName||``).toLowerCase():`#document`}function H(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function U(e){return((Ua(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Ua(e){return Va()?e instanceof Node||e instanceof H(e).Node:!1}function W(e){return Va()?e instanceof Element||e instanceof H(e).Element:!1}function G(e){return Va()?e instanceof HTMLElement||e instanceof H(e).HTMLElement:!1}function Wa(e){return!Va()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof H(e).ShadowRoot}function Ga(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=K(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function Ka(e){return/^(table|td|th)$/.test(Ha(e))}function qa(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var Ja=/transform|translate|scale|rotate|perspective|filter/,Ya=/paint|layout|strict|content/,Xa=e=>!!e&&e!==`none`,Za;function Qa(e){let t=W(e)?K(e):e;return Xa(t.transform)||Xa(t.translate)||Xa(t.scale)||Xa(t.rotate)||Xa(t.perspective)||!eo()&&(Xa(t.backdropFilter)||Xa(t.filter))||Ja.test(t.willChange||``)||Ya.test(t.contain||``)}function $a(e){let t=ro(e);for(;G(t)&&!to(t);){if(Qa(t))return t;if(qa(t))return null;t=ro(t)}return null}function eo(){return Za??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Za}function to(e){return/^(html|body|#document)$/.test(Ha(e))}function K(e){return H(e).getComputedStyle(e)}function no(e){return W(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ro(e){if(Ha(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Wa(e)&&e.host||U(e);return Wa(t)?t.host:t}function io(e){let t=ro(e);return to(t)?e.ownerDocument?e.ownerDocument.body:e.body:G(t)&&Ga(t)?t:io(t)}function ao(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=io(e),i=r===e.ownerDocument?.body,a=H(r);if(i){let e=oo(a);return t.concat(a,a.visualViewport||[],Ga(r)?r:[],e&&n?ao(e):[])}else return t.concat(r,ao(r,[],n))}function oo(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function so(e){let t=K(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=G(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=ua(n)!==a||ua(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function co(e){return W(e)?e:e.contextElement}function lo(e){let t=co(e);if(!G(t))return V(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=so(t),o=(a?ua(n.width):n.width)/r,s=(a?ua(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var uo=V(0);function fo(e){let t=H(e);return!eo()||!t.visualViewport?uo:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function po(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==H(e)?!1:t}function mo(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=co(e),o=V(1);t&&(r?W(r)&&(o=lo(r)):o=lo(e));let s=po(a,n,r)?fo(a):V(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=H(a),t=r&&W(r)?H(r):r,n=e,i=oo(n);for(;i&&r&&t!==n;){let e=lo(i),t=i.getBoundingClientRect(),r=K(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=H(i),i=oo(n)}}return Ma({width:u,height:d,x:c,y:l})}function ho(e,t){let n=no(e).scrollLeft;return t?t.left+n:mo(U(e)).left+n}function go(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-ho(e,n),y:n.top+t.scrollTop}}function _o(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=U(r),s=t?qa(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=V(1),u=V(0),d=G(r);if((d||!d&&!a)&&((Ha(r)!==`body`||Ga(o))&&(c=no(r)),d)){let e=mo(r);l=lo(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?go(o,c):V(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function vo(e){return Array.from(e.getClientRects())}function yo(e){let t=U(e),n=no(e),r=e.ownerDocument.body,i=la(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=la(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+ho(e),s=-n.scrollTop;return K(r).direction===`rtl`&&(o+=la(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var bo=25;function xo(e,t){let n=H(e),r=U(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=eo();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=ho(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=bo&&(a-=o)}else l<=bo&&(a+=l);return{width:a,height:o,x:s,y:c}}function So(e,t){let n=mo(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=G(e)?lo(e):V(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function Co(e,t,n){let r;if(t===`viewport`)r=xo(e,n);else if(t===`document`)r=yo(U(e));else if(W(t))r=So(t,n);else{let n=fo(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return Ma(r)}function wo(e,t){let n=ro(e);return n===t||!W(n)||to(n)?!1:K(n).position===`fixed`||wo(n,t)}function To(e,t){let n=t.get(e);if(n)return n;let r=ao(e,[],!1).filter(e=>W(e)&&Ha(e)!==`body`),i=null,a=K(e).position===`fixed`,o=a?ro(e):e;for(;W(o)&&!to(o);){let t=K(o),n=Qa(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||Ga(o)&&!n&&wo(e,o))?r=r.filter(e=>e!==o):i=t,o=ro(o)}return t.set(e,r),r}function Eo(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?qa(t)?[]:To(t,this._c):[].concat(n),r],o=Co(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e<a.length;e++){let n=Co(t,a[e],i);s=la(n.top,s),c=ca(n.right,c),l=ca(n.bottom,l),u=la(n.left,u)}return{width:c-u,height:l-s,x:u,y:s}}function Do(e){let{width:t,height:n}=so(e);return{width:t,height:n}}function Oo(e,t,n){let r=G(t),i=U(t),a=n===`fixed`,o=mo(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=V(0);function l(){c.x=ho(i)}if(r||!r&&!a)if((Ha(t)!==`body`||Ga(i))&&(s=no(t)),r){let e=mo(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else i&&l();a&&!r&&i&&l();let u=i&&!r&&!a?go(i,s):V(0);return{x:o.left+s.scrollLeft-c.x-u.x,y:o.top+s.scrollTop-c.y-u.y,width:o.width,height:o.height}}function ko(e){return K(e).position===`static`}function Ao(e,t){if(!G(e)||K(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return U(e)===n&&(n=n.ownerDocument.body),n}function jo(e,t){let n=H(e);if(qa(e))return n;if(!G(e)){let t=ro(e);for(;t&&!to(t);){if(W(t)&&!ko(t))return t;t=ro(t)}return n}let r=Ao(e,t);for(;r&&Ka(r)&&ko(r);)r=Ao(r,t);return r&&to(r)&&ko(r)&&!Qa(r)?n:r||$a(e)||n}var Mo=async function(e){let t=this.getOffsetParent||jo,n=this.getDimensions,r=await n(e.floating);return{reference:Oo(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function No(e){return K(e).direction===`rtl`}var Po={convertOffsetParentRelativeRectToViewportRelativeRect:_o,getDocumentElement:U,getClippingRect:Eo,getOffsetParent:jo,getElementRects:Mo,getClientRects:vo,getDimensions:Do,getScale:lo,isElement:W,isRTL:No};function Fo(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Io(e,t){let n=null,r,i=U(e);function a(){var e;clearTimeout(r),(e=n)==null||e.disconnect(),n=null}function o(s,c){s===void 0&&(s=!1),c===void 0&&(c=1),a();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(s||t(),!f||!p)return;let m=da(d),h=da(i.clientWidth-(u+f)),g=da(i.clientHeight-(d+p)),_=da(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:la(0,ca(1,c))||1},y=!0;function ee(t){let n=t[0].intersectionRatio;if(n!==c){if(!y)return o();n?o(!1,n):r=setTimeout(()=>{o(!1,1e-7)},1e3)}n===1&&!Fo(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(ee,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(ee,v)}n.observe(e)}return o(!0),a}function Lo(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=co(e),u=i||a?[...l?ao(l):[],...t?ao(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Io(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?mo(e):null;c&&g();function g(){let t=mo(e);h&&!Fo(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Ro=Ba,zo=La,Bo=(e,t,n)=>{let r=new Map,i={platform:Po,...n},a={...i.platform,_c:r};return Ia(e,t,{...i,platform:a})},Vo=new WeakMap,Ho=(e,t)=>{Uo(e),Vo.set(e,t)},Uo=e=>{let t=Vo.get(e);t&&(t(),Vo.delete(e))},Wo=({element:e,activeActions:t,getGridItemById:n,placementItemActionsMenu:r,renderOverlayContent:i,removeItemActionsMenuPopover:a})=>{let s=e.querySelector(`.grid-item-actions-popover`),c=e.querySelector(`.grid-stack-item-content`),l=n(e.getAttribute(`gs-id`)??``);if(t&&t.length>0&&s&&(a(e),s=null),!s){let n=document.createDocumentFragment();(0,o.render)(i(l?.item,t),n),s=n.querySelector(`.grid-item-actions-popover`),e.append(s)}let u=Lo(c,s,async()=>{let{x:e,y:t}=await Bo(c,s,{placement:l?.item?.placementActionsMenu??r??`right-start`,middleware:[Ro(0),zo({crossAxis:!1})]});s.style.left=`${e}px`,s.style.top=`${t}px`});Ho(s,u),s.isConnected&&!s.matches(`:popover-open`)&&s.showPopover()},Go=e=>{let t=e.querySelector(`.grid-item-actions-popover`);t&&(Uo(t),t.matches(`:popover-open`)&&t.hidePopover(),t.remove())},Ko=e=>e===`ArrowLeft`||e===`ArrowRight`||e===`ArrowUp`||e===`ArrowDown`,qo=({key:e,node:t,maxColumns:n,shiftKey:r,ctrlKey:i,metaKey:a})=>{let o={ArrowLeft:{move:{x:t.x-1},resize:{x:t.x-1,w:t.w+1},shrink:{w:t.w-1},canMove:t.x>0,canResize:t.x>0,canShrink:t.w>1},ArrowRight:{move:{x:t.x+1},resize:{w:t.w+1},shrink:{x:t.x+1,w:t.w-1},canMove:t.x<n-t.w,canResize:t.x+t.w<n,canShrink:t.w>1},ArrowUp:{move:{y:t.y-1},resize:{y:t.y-1,h:t.h+1},shrink:{h:t.h-1},canMove:t.y>0,canResize:t.y>0,canShrink:t.h>1},ArrowDown:{move:{y:t.y+1},resize:{h:t.h+1},shrink:{y:t.y+1,h:t.h-1},canMove:!0,canResize:!0,canShrink:t.h>1}}[e];if(r&&o.canResize)return o.resize;if((i||a)&&o.canShrink)return o.shrink;if(o.canMove)return o.move},Jo=({event:e,viewMode:t,focusedItemElement:n,activeItemElement:r,gridElement:i,grid:a,columns:o,onDeleteRequest:s,removeItemActionsMenuPopover:c,createItemActionsMenuPopover:l})=>{if(t)return{focusedItemElement:n,activeItemElement:r};let u=n,d=r;if(e.key===`Delete`&&n){let e=n.nextElementSibling??n.previousElementSibling;s(n),u=e??void 0,u?requestAnimationFrame(()=>u?.focus()):i.focus(),r===n&&(d=void 0)}else if(e.key===`Escape`&&n)n.removeAttribute(`focused`),c(n),u=void 0,i.focus();else if(e.key===`Enter`&&n)e.preventDefault(),e.stopPropagation(),r&&(r.removeAttribute(`active`),i.removeAttribute(`has-active-item`),c(r),d=void 0),i.querySelectorAll(`.grid-stack-item`).forEach(e=>{e!==n&&c(e)}),l(n),requestAnimationFrame(()=>{let e=n.querySelector(`luzmo-item-grid-item-actions-menu`);e&&e.focus()});else if(n&&a&&Ko(e.key)){e.preventDefault(),e.stopPropagation();let t=n.gridstackNode;if(!t)return{focusedItemElement:u,activeItemElement:d};let r=qo({key:e.key,node:t,maxColumns:o,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey});r&&a.update(n,r)}return{focusedItemElement:u,activeItemElement:d}},Yo={lock:{icon:a.luzmoLockOutline,label:`Lock`,tooltip:`Lock`,action:`lock`,type:`toggle`},edit:{icon:a.luzmoPencil,label:`Edit`,tooltip:`Edit`,action:`edit`,type:`toggle`},"edit-data":{icon:a.luzmoTable,label:`Edit data`,tooltip:`Data`,action:`edit-data`,type:`toggle`},"item-options":{icon:a.luzmoCog,label:`Item options`,tooltip:`Options`,action:`item-options`,type:`toggle`},filters:{icon:a.luzmoFilterOutline,label:`Filters`,tooltip:`Filters`,action:`filters`,type:`toggle`},clone:{icon:a.luzmoClone,label:`Clone`,tooltip:`Clone`,action:`clone`,type:`button`},delete:{icon:a.luzmoTrashOutline,label:`Delete`,tooltip:`Delete`,action:`delete`,type:`button`}},Xo=e=>{if(e)return structuredClone(e).map(e=>{if(e.type===`group`)return e.actions=e.actions??[],e.actions=e.actions.map(e=>{if(typeof e==`string`&&Object.hasOwn(Yo,e))return{...Yo[e]};if(typeof e==`object`)return e.icon=e.icon??a.luzmoCircle,e.label=e.label??e.action,e.tooltip=e.tooltip??e.label??e.action,e.type=[`toggle`,`button`].includes(e.type??``)?e.type:`button`,e}).filter(Boolean),e}).filter(Boolean)},Zo=()=>[{type:`group`,actions:[{...Yo[`edit-data`]},{...Yo[`item-options`]},{...Yo.clone}]},{type:`group`,actions:[{...Yo.delete}]}],Qo=16,$o=10,es=(e,t)=>t>=1?`rgba(${e.r},${e.g},${e.b},1)`:t<=0?`rgba(${e.r},${e.g},${e.b},0)`:`rgba(${e.r},${e.g},${e.b},${t})`,ts=async({theme:e,currentTheme:t})=>e?.type===`custom`?structuredClone(e):e?.id&&r.n.includes(e.id)&&t?.id!==e.id?{...await r.t(e.id),id:e.id}:e?.id&&t?.id!==e.id||!e&&t?t:await r.t(`default`),ns=e=>[(e?.margins?.[0]??Qo)/2,(e?.margins?.[1]??Qo)/2],rs=e=>$o-(e?.margins?.[0]??$o),is=e=>{let t=e?.boxShadow;if(!t)return``;let r=new n.t(t.color),i={r:Math.round(r.srgb.r*255),g:Math.round(r.srgb.g*255),b:Math.round(r.srgb.b*255)},a=e?.margins?.[0]??Qo,o=Math.min(a/10,2);return t.size===`none`?`none`:t.size===`S`?`0 ${o*2}px ${o*4}px ${es(i,.16)}, 0 ${o*2}px ${o*4}px ${es(i,.23)}`:t.size===`M`?`0 ${o*8}px ${o*16}px ${es(i,.19)}, 0 ${o*4}px ${o*4}px ${es(i,.23)}`:t.size===`L`?`0 ${o*12}px ${o*24}px ${es(i,.25)}, 0 ${o*8}px ${o*8}px ${es(i,.22)}`:``},as=e=>{let t=is(e);return new Map([[`--grid-font-family`,e?.font?.fontFamily],[`--grid-background`,e?.background],[`--grid-item-box-shadow`,t],[`--grid-item-background`,e?.itemsBackground],[`--grid-item-border-color`,e?.borders?.[`border-color`]],[`--grid-item-border-style`,e?.borders?.[`border-style`]],[`--grid-item-border-radius`,e?.borders?.[`border-radius`]],[`--grid-item-border-width`,`${e?.borders?.[`border-top-width`]}`],[`--grid-item-border-top-width`,e?.borders?.[`border-top-width`]],[`--grid-item-border-right-width`,e?.borders?.[`border-right-width`]],[`--grid-item-border-bottom-width`,e?.borders?.[`border-bottom-width`]],[`--grid-item-border-left-width`,e?.borders?.[`border-left-width`]]])},os=e=>{let t=e?.itemsBackground??e?.background;return t?new n.t(t).luminance<.5:!1},ss=(e,t)=>{t&&as(t).forEach((t,n)=>{t?e.setProperty(n,t):e.removeProperty(n)})},cs=({item:e,defaultItemActionsMenu:t,activeActions:n})=>{let r=Xo(e?.actionsMenu)??Xo(t)??Zo();if(!i.itemTypes.find(t=>t.type===e?.type)?.containsData&&!e?.actionsMenu&&!t&&(r=r.map(e=>({...e,actions:e.actions?.filter(e=>e.action!==`edit-data`)}))),n&&n.length>0){let e=new Set(n);r=r.map(t=>({...t,actions:t.actions?.map(t=>({...t,active:t.action&&e.has(t.action)?!0:t.active}))}))}return r},ls=({item:e,activeActions:t,defaultItemActionsMenu:n,placementItemActionsMenu:r,language:i,handleAction:a})=>o.html`
228
- <div class="grid-item-actions-popover" popover="manual">
227
+ `}createRenderRoot(){return this}async firstUpdated(e){super.firstUpdated(e),await bi(this.calculatedAppServer,`IQApp`),this.createAndAppendElement()}get calculatedAppServer(){return this.appServer.startsWith(`http://localhost`)?this.remoteEntryServer:this.appServer}createAndAppendElement(){this.chartElement||(this.chartElement=document.createElement(`luzmo-iq-answer-component`),this.chartElement.addEventListener(`addQuestion`,e=>this.dispatchEvent(new CustomEvent(`addQuestion`,e))),this.chartElement.addEventListener(`addAnswer`,e=>this.dispatchEvent(new CustomEvent(`addAnswer`,e))),this.updateVizItemProperties(),this.renderRoot.append(this.chartElement))}updateVizItemProperties(){if(this.chartElement)for(let e in Fi){let t=this[e];if(t){let n=[`appServer`,`apiHost`].includes(e)?S(t):t;this.chartElement.setAttribute(Fi[e],typeof n==`object`?JSON.stringify(n):n)}}}async updated(e){if(this.chartElement)for(let[t]of e.entries()){let e=Fi[t]??t,n=typeof this[t]==`object`?JSON.stringify(this[t]):this[t]?.toString()??this[t];this.chartElement.setAttribute(e,n)}else await bi(this.calculatedAppServer,`IQApp`),this.createAndAppendElement()}render(){return o.html` `}};F([(0,s.property)()],z.prototype,`appServer`,2),F([(0,s.property)()],z.prototype,`apiHost`,2),F([(0,s.property)({type:Object})],z.prototype,`options`,2),F([(0,s.property)()],z.prototype,`aiEndPoint`,2),F([(0,s.property)()],z.prototype,`authKey`,2),F([(0,s.property)()],z.prototype,`authToken`,2),F([(0,s.property)()],z.prototype,`messages`,2),F([(0,s.property)()],z.prototype,`version`,2),F([(0,s.property)()],z.prototype,`libVersion`,2),F([(0,s.property)()],z.prototype,`remoteEntryServer`,2),customElements.get(Ii)||customElements.define(Ii,z),o.LitElement.disableWarning?.(`change-in-update`);var Li=`.grid-stack{position:relative}.grid-stack-rtl{direction:ltr}.grid-stack-rtl>.grid-stack-item{direction:rtl}.grid-stack-placeholder>.placeholder-content{background-color:#0000001a;width:auto;margin:0;position:absolute;z-index:0!important}.grid-stack>.grid-stack-item{width:var(--gs-column-width);height:var(--gs-cell-height);padding:0;position:absolute;top:0}.grid-stack>.grid-stack-item>.grid-stack-item-content{width:auto;margin:0;position:absolute;overflow:hidden auto}.grid-stack>.grid-stack-item.size-to-content:not(.size-to-content-max)>.grid-stack-item-content{overflow-y:hidden}.grid-stack:not(.grid-stack-rtl)>.grid-stack-item{left:0}.grid-stack.grid-stack-rtl>.grid-stack-item{right:0}.grid-stack>.grid-stack-item>.grid-stack-item-content,.grid-stack>.grid-stack-placeholder>.placeholder-content{top:var(--gs-item-margin-top);right:var(--gs-item-margin-right);bottom:var(--gs-item-margin-bottom);left:var(--gs-item-margin-left)}.grid-stack-item>.ui-resizable-handle{-ms-touch-action:none;touch-action:none;font-size:.1px;display:block;position:absolute}.grid-stack-item.ui-resizable-autohide>.ui-resizable-handle,.grid-stack-item.ui-resizable-disabled>.ui-resizable-handle{display:none}.grid-stack-item>.ui-resizable-ne,.grid-stack-item>.ui-resizable-nw,.grid-stack-item>.ui-resizable-se,.grid-stack-item>.ui-resizable-sw{background-image:url("data:image/svg+xml;utf8,<svg xmlns=\\"http://www.w3.org/2000/svg\\" fill=\\"none\\" stroke=\\"%23666\\" stroke-linecap=\\"round\\" stroke-linejoin=\\"round\\" stroke-width=\\"2\\" viewBox=\\"0 0 20 20\\"><path d=\\"m10 3 2 2H8l2-2v14l-2-2h4l-2 2\\"/></svg>");background-position:50%;background-repeat:no-repeat}.grid-stack-item>.ui-resizable-ne,.grid-stack-item>.ui-resizable-sw{transform:rotate(45deg)}.grid-stack-item>.ui-resizable-nw,.grid-stack-item>.ui-resizable-se{transform:rotate(-45deg)}.grid-stack-item>.ui-resizable-nw{cursor:nw-resize;width:20px;height:20px;top:var(--gs-item-margin-top);left:var(--gs-item-margin-left)}.grid-stack-item>.ui-resizable-n{cursor:n-resize;height:10px;top:var(--gs-item-margin-top);left:25px;right:25px}.grid-stack-item>.ui-resizable-ne{cursor:ne-resize;width:20px;height:20px;top:var(--gs-item-margin-top);right:var(--gs-item-margin-right)}.grid-stack-item>.ui-resizable-e{cursor:e-resize;width:10px;top:15px;bottom:15px;right:var(--gs-item-margin-right)}.grid-stack-item>.ui-resizable-se{cursor:se-resize;width:20px;height:20px;bottom:var(--gs-item-margin-bottom);right:var(--gs-item-margin-right)}.grid-stack-item>.ui-resizable-s{cursor:s-resize;height:10px;left:25px;bottom:var(--gs-item-margin-bottom);right:25px}.grid-stack-item>.ui-resizable-sw{cursor:sw-resize;width:20px;height:20px;bottom:var(--gs-item-margin-bottom);left:var(--gs-item-margin-left)}.grid-stack-item>.ui-resizable-w{cursor:w-resize;width:10px;top:15px;bottom:15px;left:var(--gs-item-margin-left)}.grid-stack-item.ui-draggable-dragging>.ui-resizable-handle{display:none!important}.grid-stack-item.ui-draggable-dragging{will-change:left,right,top}.grid-stack-item.ui-resizable-resizing{will-change:width,height}.ui-draggable-dragging,.ui-resizable-resizing{z-index:10000}.ui-draggable-dragging>.grid-stack-item-content,.ui-resizable-resizing>.grid-stack-item-content{opacity:.8;box-shadow:1px 4px 6px #0003}.grid-stack-animate,.grid-stack-animate .grid-stack-item{transition:left .3s,right .3s,top .3s,height .3s,width .3s}.grid-stack-animate .grid-stack-item.grid-stack-placeholder,.grid-stack-animate .grid-stack-item.ui-draggable-dragging,.grid-stack-animate .grid-stack-item.ui-resizable-resizing{transition:left,right,top,height,width}.grid-stack>.grid-stack-item[gs-y="0"]{top:0}.grid-stack:not(.grid-stack-rtl)>.grid-stack-item[gs-x="0"]{left:0}.grid-stack.grid-stack-rtl>.grid-stack-item[gs-x="0"]{right:0}`,Ri=(e,t)=>{e.forEach(e=>{let n=e.querySelector(`luzmo-embed-viz-item`);n&&(n.options={...n.options,locale:t})})},zi=({action:e,actionType:t,active:n,items:r,element:i,itemId:a,item:o,deletedId:s,originalElement:c,updatedItems:l})=>({action:e,actionType:t,active:n,items:r,element:i,item:{...o,id:a,filters:o?.filters??[]},...s&&{deletedId:s},...c&&{originalElement:c},...l&&{updatedItems:l}}),Bi=({target:e,action:t,actionType:n,active:r,items:i,element:a,itemId:o,item:s,deletedId:c,originalElement:l,updatedItems:u})=>{e.dispatchEvent(new CustomEvent(`luzmo-item-grid-item-action`,{detail:zi({action:t,actionType:n,active:r,items:i,element:a,itemId:o,item:s,deletedId:c,originalElement:l,updatedItems:u}),bubbles:!0,composed:!0,cancelable:!0}))},B=({target:e,itemStates:t,updatedItemStates:n,changedItemStates:r})=>{e.dispatchEvent(new CustomEvent(`luzmo-item-grid-item-states-changed`,{detail:{itemStates:t,updatedItemStates:n,changedItemStates:r},bubbles:!0,composed:!0}))},Vi=({target:e,eventName:t,detail:n})=>{e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0}))},Hi=e=>e instanceof Element?e:void 0,Ui=e=>Hi(e)?.closest(`.grid-stack-item`),Wi=({event:e,gridItem:t})=>Hi(e.relatedTarget)?.closest(`.grid-item-actions-popover`)?!1:!t.hasAttribute(`active`),Gi=({event:e,focusedItemElement:t,removeItemActionsMenuPopover:n})=>{let r=Ui(e.target);return r?(t&&t!==r&&(t.removeAttribute(`focused`),n(t)),r.setAttribute(`focused`,`true`),r):t},Ki=({event:e,focusedItemElement:t,removeItemActionsMenuPopover:n})=>t?Hi(e.relatedTarget)?.closest(`luzmo-item-grid-item-actions-menu`)?{focusedItemElement:t,shouldFocusGrid:!1}:(t.removeAttribute(`focused`),n(t),{focusedItemElement:void 0,shouldFocusGrid:!0}):{focusedItemElement:void 0,shouldFocusGrid:!1},qi=({item:e,activeItemElement:t,gridElement:n,removeItemActionsMenuPopover:r})=>{if(e.removeAttribute(`active`),r(e),t===e){n.removeAttribute(`has-active-item`);return}return t},Ji=({event:e,gridElement:t,items:n,state:r,cleanupActiveItem:i,dispatchItemActionEvent:a,createItemActionsMenuPopover:o})=>{e.stopPropagation();let s=e.detail,c=e.target?.closest(`.grid-stack-item`);if(!c)return r;let l=c.getAttribute(`gs-id`),u=n.find(e=>e.id===l);return s.type===`toggle`&&s.action===r.activeItemActionToggle&&c===r.activeItemElement?(r.activeItemElement=void 0,r.activeItemActionToggle=void 0,t.removeAttribute(`has-active-item`),c.removeAttribute(`active`),i(c),l&&a(s.action,s.type,!1,c,l,u),r):(t.querySelectorAll(`.grid-stack-item`).forEach(e=>{e!==c&&i(e)}),s.type===`toggle`?(r.activeItemElement=c,r.activeItemActionToggle=s.action,t.setAttribute(`has-active-item`,`true`),c.setAttribute(`active`,`true`),o(c,[s.action])):r.activeItemElement&&r.activeItemElement!==c&&(r.activeItemElement=void 0,r.activeItemActionToggle=void 0),l&&a(s.action,s.type,s.active,c,l,u),r)},Yi=({event:e,gridElement:t,hostElement:n,items:r,activeItemActionToggle:i,cleanupActiveItem:a,dispatchItemActionEvent:o})=>{let s=e.composedPath();if(!s.includes(t)&&!s.includes(n))return{activeItemActionToggle:i};let c=t.querySelector(`.grid-stack-item[active]`);if(!c||s.includes(c))return{activeItemActionToggle:i};let l=c.querySelector(`.grid-item-actions-popover`);if(l&&s.includes(l))return{activeItemActionToggle:i};let u=c.getAttribute(`gs-id`),d=r.find(e=>e.id===u);return a(c),i&&u&&o(i,`toggle`,!1,c,u,d),{activeItemActionToggle:void 0}},Xi=({gridElement:e,items:t,gridItemData:n,itemId:r,action:i,options:a,state:o,cleanupActiveItem:s,dispatchItemActionEvent:c,createItemActionsMenuPopover:l})=>{if(!n?.element)return{result:void 0,state:o};let u=n.element,d=n.item,f=i===o.activeItemActionToggle&&u===o.activeItemElement,p=a?.active??!f;if(a?.active!==void 0&&p===f)return{result:f,state:o};if(!p)return o.activeItemElement=void 0,o.activeItemActionToggle=void 0,e.removeAttribute(`has-active-item`),u.removeAttribute(`active`),s(u),c(i,`toggle`,!1,u,r,d),{result:!1,state:o};if(o.activeItemElement&&o.activeItemElement!==u){let e=o.activeItemElement.getAttribute(`gs-id`),n=t.find(t=>t.id===e),r=o.activeItemActionToggle,i=o.activeItemElement;s(o.activeItemElement),o.activeItemElement=void 0,o.activeItemActionToggle=void 0,r&&e&&n&&c(r,`toggle`,!1,i,e,n)}return o.activeItemElement=u,o.activeItemActionToggle=i,e.setAttribute(`has-active-item`,`true`),u.setAttribute(`active`,`true`),l(u,[i]),c(i,`toggle`,!0,u,r,d),{result:!0,state:o}},Zi=({gridElement:e,items:t,state:n,cleanupActiveItem:r,dispatchItemActionEvent:i})=>{let a=0;if(n.activeItemElement&&n.activeItemActionToggle){let o=n.activeItemElement.getAttribute(`gs-id`),s=t.find(e=>e.id===o),c=n.activeItemActionToggle,l=n.activeItemElement;r(n.activeItemElement),n.activeItemElement=void 0,n.activeItemActionToggle=void 0,e.removeAttribute(`has-active-item`),c&&o&&s&&(i(c,`toggle`,!1,l,o,s),a++)}return{deactivatedCount:a,state:n}},Qi={sizeX:1,sizeY:1,col:0,row:0},$i=e=>{e.forEach(e=>{if(!e.id)throw Error(`Grid item id is required`)})},ea=e=>{if(!e.id)throw Error(`Grid item id is required`);return e.id},ta=(e,t)=>({id:t,x:e?.position?.col??0,y:e?.position?.row??0,w:e?.position?.sizeX??1,h:e?.position?.sizeY??1}),na=(e,t)=>({...structuredClone(e),id:t,position:{...Qi,...structuredClone(e.position)},canFilter:e.canFilter??`all`}),ra=(e,t)=>{if(t){for(let n of e)if(n.getAttribute(`luzmo-item-grid-item-id`)===t)return n}},ia=(e,t)=>e.map(e=>{let n={item:e,element:t.querySelector(`[gs-id="${e.id}"]`)},r=n.element?.querySelector(`luzmo-embed-viz-item`);return r&&(n.luzmoElement=r),n}),aa=({item:e,engine:t,existingItems:n,autoPosition:r,excludeNodeId:i})=>{let a=e.position,o=i?t.nodes.filter(e=>e.id!==i):t.nodes,s=new t.constructor({column:t.column,float:t.float,nodes:o.map(e=>({...e}))}),c={x:a.col,y:a.row,w:a.sizeX,h:a.sizeY,id:e.id,autoPosition:r};s.addNode(c);let l={...e,position:{col:c.x??a.col,row:c.y??a.row,sizeX:c.w??a.sizeX,sizeY:c.h??a.sizeY}};return{resolvedItem:l,updatedItems:[...n.map(e=>{let t=s.nodes.find(t=>t.id===e.id);return t&&t.x!=null&&t.y!=null&&t.w!=null&&t.h!=null?{...e,position:{col:t.x,row:t.y,sizeX:t.w,sizeY:t.h}}:e}),l]}},oa=({itemId:e,patch:t,engine:n,existingItems:r})=>{let i=r.find(t=>t.id===e);if(!i?.position)return r;let{resolvedItem:a,updatedItems:o}=aa({item:{...i,position:{...i.position,...t}},engine:n,existingItems:r.filter(t=>t.id!==e),autoPosition:!1,excludeNodeId:e});return r.map(t=>t.id===e?a:o.find(e=>e.id===t.id)??t)},sa=e=>na(e,e.id),ca=Math.min,la=Math.max,ua=Math.round,da=Math.floor,V=e=>({x:e,y:e}),fa={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function pa(e,t){return typeof e==`function`?e(t):e}function ma(e){return e.split(`-`)[0]}function ha(e){return e.split(`-`)[1]}function ga(e){return e===`x`?`y`:`x`}function _a(e){return e===`y`?`height`:`width`}function va(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function ya(e){return ga(va(e))}function ba(e,t,n){n===void 0&&(n=!1);let r=ha(e),i=ya(e),a=_a(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=ka(o)),[o,ka(o)]}function xa(e){let t=ka(e);return[Sa(e),t,Sa(t)]}function Sa(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var Ca=[`left`,`right`],wa=[`right`,`left`],Ta=[`top`,`bottom`],Ea=[`bottom`,`top`];function Da(e,t,n){switch(e){case`top`:case`bottom`:return n?t?wa:Ca:t?Ca:wa;case`left`:case`right`:return t?Ta:Ea;default:return[]}}function Oa(e,t,n,r){let i=ha(e),a=Da(ma(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(Sa)))),a}function ka(e){let t=ma(e);return fa[t]+e.slice(t.length)}function Aa(e){return{top:0,right:0,bottom:0,left:0,...e}}function ja(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:Aa(e)}function Ma(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function Na(e,t,n){let{reference:r,floating:i}=e,a=va(t),o=ya(t),s=_a(o),c=ma(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(ha(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function Pa(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=pa(t,e),p=ja(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=Ma(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=Ma(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var Fa=50,Ia=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:Pa},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=Na(l,r,c),f=r,p=0,m={};for(let n=0;n<a.length;n++){let h=a[n];if(!h)continue;let{name:g,fn:_}=h,{x:v,y,data:ee,reset:b}=await _({x:u,y:d,initialPlacement:r,placement:f,strategy:i,middlewareData:m,rects:l,platform:s,elements:{reference:e,floating:t}});u=v??u,d=y??d,m[g]={...m[g],...ee},b&&p<Fa&&(p++,typeof b==`object`&&(b.placement&&(f=b.placement),b.rects&&(l=b.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):b.rects),{x:u,y:d}=Na(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},La=function(e){return e===void 0&&(e={}),{name:`flip`,options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:a,initialPlacement:o,platform:s,elements:c}=t,{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f=`bestFit`,fallbackAxisSideDirection:p=`none`,flipAlignment:m=!0,...h}=pa(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let g=ma(r),_=va(o),v=ma(o)===o,y=await(s.isRTL==null?void 0:s.isRTL(c.floating)),ee=d||(v||!m?[ka(o)]:xa(o)),b=p!==`none`;!d&&b&&ee.push(...Oa(o,m,p,y));let te=[o,...ee],ne=await s.detectOverflow(t,h),x=[],S=i.flip?.overflows||[];if(l&&x.push(ne[g]),u){let e=ba(r,a,y);x.push(ne[e[0]],ne[e[1]])}if(S=[...S,{placement:r,overflows:x}],!x.every(e=>e<=0)){let e=(i.flip?.index||0)+1,t=te[e];if(t&&(!(u===`alignment`&&_!==va(t))||S.every(e=>va(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:S},reset:{placement:t}};let n=S.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=S.filter(e=>{if(b){let t=va(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}},Ra=new Set([`left`,`top`]);async function za(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=ma(n),s=ha(n),c=va(n)===`y`,l=Ra.has(o)?-1:1,u=a&&c?-1:1,d=pa(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var Ba=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await za(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}};function Va(){return typeof window<`u`}function Ha(e){return Ua(e)?(e.nodeName||``).toLowerCase():`#document`}function H(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function U(e){return((Ua(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Ua(e){return Va()?e instanceof Node||e instanceof H(e).Node:!1}function W(e){return Va()?e instanceof Element||e instanceof H(e).Element:!1}function G(e){return Va()?e instanceof HTMLElement||e instanceof H(e).HTMLElement:!1}function Wa(e){return!Va()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof H(e).ShadowRoot}function Ga(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=K(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function Ka(e){return/^(table|td|th)$/.test(Ha(e))}function qa(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var Ja=/transform|translate|scale|rotate|perspective|filter/,Ya=/paint|layout|strict|content/,Xa=e=>!!e&&e!==`none`,Za;function Qa(e){let t=W(e)?K(e):e;return Xa(t.transform)||Xa(t.translate)||Xa(t.scale)||Xa(t.rotate)||Xa(t.perspective)||!eo()&&(Xa(t.backdropFilter)||Xa(t.filter))||Ja.test(t.willChange||``)||Ya.test(t.contain||``)}function $a(e){let t=ro(e);for(;G(t)&&!to(t);){if(Qa(t))return t;if(qa(t))return null;t=ro(t)}return null}function eo(){return Za??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Za}function to(e){return/^(html|body|#document)$/.test(Ha(e))}function K(e){return H(e).getComputedStyle(e)}function no(e){return W(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ro(e){if(Ha(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Wa(e)&&e.host||U(e);return Wa(t)?t.host:t}function io(e){let t=ro(e);return to(t)?e.ownerDocument?e.ownerDocument.body:e.body:G(t)&&Ga(t)?t:io(t)}function ao(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=io(e),i=r===e.ownerDocument?.body,a=H(r);if(i){let e=oo(a);return t.concat(a,a.visualViewport||[],Ga(r)?r:[],e&&n?ao(e):[])}else return t.concat(r,ao(r,[],n))}function oo(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function so(e){let t=K(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=G(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=ua(n)!==a||ua(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function co(e){return W(e)?e:e.contextElement}function lo(e){let t=co(e);if(!G(t))return V(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=so(t),o=(a?ua(n.width):n.width)/r,s=(a?ua(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var uo=V(0);function fo(e){let t=H(e);return!eo()||!t.visualViewport?uo:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function po(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==H(e)?!1:t}function mo(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=co(e),o=V(1);t&&(r?W(r)&&(o=lo(r)):o=lo(e));let s=po(a,n,r)?fo(a):V(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=H(a),t=r&&W(r)?H(r):r,n=e,i=oo(n);for(;i&&r&&t!==n;){let e=lo(i),t=i.getBoundingClientRect(),r=K(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=H(i),i=oo(n)}}return Ma({width:u,height:d,x:c,y:l})}function ho(e,t){let n=no(e).scrollLeft;return t?t.left+n:mo(U(e)).left+n}function go(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-ho(e,n),y:n.top+t.scrollTop}}function _o(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=U(r),s=t?qa(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=V(1),u=V(0),d=G(r);if((d||!d&&!a)&&((Ha(r)!==`body`||Ga(o))&&(c=no(r)),d)){let e=mo(r);l=lo(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?go(o,c):V(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function vo(e){return Array.from(e.getClientRects())}function yo(e){let t=U(e),n=no(e),r=e.ownerDocument.body,i=la(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=la(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+ho(e),s=-n.scrollTop;return K(r).direction===`rtl`&&(o+=la(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var bo=25;function xo(e,t){let n=H(e),r=U(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=eo();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=ho(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=bo&&(a-=o)}else l<=bo&&(a+=l);return{width:a,height:o,x:s,y:c}}function So(e,t){let n=mo(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=G(e)?lo(e):V(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function Co(e,t,n){let r;if(t===`viewport`)r=xo(e,n);else if(t===`document`)r=yo(U(e));else if(W(t))r=So(t,n);else{let n=fo(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return Ma(r)}function wo(e,t){let n=ro(e);return n===t||!W(n)||to(n)?!1:K(n).position===`fixed`||wo(n,t)}function To(e,t){let n=t.get(e);if(n)return n;let r=ao(e,[],!1).filter(e=>W(e)&&Ha(e)!==`body`),i=null,a=K(e).position===`fixed`,o=a?ro(e):e;for(;W(o)&&!to(o);){let t=K(o),n=Qa(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||Ga(o)&&!n&&wo(e,o))?r=r.filter(e=>e!==o):i=t,o=ro(o)}return t.set(e,r),r}function Eo(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?qa(t)?[]:To(t,this._c):[].concat(n),r],o=Co(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e<a.length;e++){let n=Co(t,a[e],i);s=la(n.top,s),c=ca(n.right,c),l=ca(n.bottom,l),u=la(n.left,u)}return{width:c-u,height:l-s,x:u,y:s}}function Do(e){let{width:t,height:n}=so(e);return{width:t,height:n}}function Oo(e,t,n){let r=G(t),i=U(t),a=n===`fixed`,o=mo(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=V(0);function l(){c.x=ho(i)}if(r||!r&&!a)if((Ha(t)!==`body`||Ga(i))&&(s=no(t)),r){let e=mo(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else i&&l();a&&!r&&i&&l();let u=i&&!r&&!a?go(i,s):V(0);return{x:o.left+s.scrollLeft-c.x-u.x,y:o.top+s.scrollTop-c.y-u.y,width:o.width,height:o.height}}function ko(e){return K(e).position===`static`}function Ao(e,t){if(!G(e)||K(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return U(e)===n&&(n=n.ownerDocument.body),n}function jo(e,t){let n=H(e);if(qa(e))return n;if(!G(e)){let t=ro(e);for(;t&&!to(t);){if(W(t)&&!ko(t))return t;t=ro(t)}return n}let r=Ao(e,t);for(;r&&Ka(r)&&ko(r);)r=Ao(r,t);return r&&to(r)&&ko(r)&&!Qa(r)?n:r||$a(e)||n}var Mo=async function(e){let t=this.getOffsetParent||jo,n=this.getDimensions,r=await n(e.floating);return{reference:Oo(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function No(e){return K(e).direction===`rtl`}var Po={convertOffsetParentRelativeRectToViewportRelativeRect:_o,getDocumentElement:U,getClippingRect:Eo,getOffsetParent:jo,getElementRects:Mo,getClientRects:vo,getDimensions:Do,getScale:lo,isElement:W,isRTL:No};function Fo(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Io(e,t){let n=null,r,i=U(e);function a(){var e;clearTimeout(r),(e=n)==null||e.disconnect(),n=null}function o(s,c){s===void 0&&(s=!1),c===void 0&&(c=1),a();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(s||t(),!f||!p)return;let m=da(d),h=da(i.clientWidth-(u+f)),g=da(i.clientHeight-(d+p)),_=da(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:la(0,ca(1,c))||1},y=!0;function ee(t){let n=t[0].intersectionRatio;if(n!==c){if(!y)return o();n?o(!1,n):r=setTimeout(()=>{o(!1,1e-7)},1e3)}n===1&&!Fo(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(ee,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(ee,v)}n.observe(e)}return o(!0),a}function Lo(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=co(e),u=i||a?[...l?ao(l):[],...t?ao(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Io(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?mo(e):null;c&&g();function g(){let t=mo(e);h&&!Fo(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Ro=Ba,zo=La,Bo=(e,t,n)=>{let r=new Map,i={platform:Po,...n},a={...i.platform,_c:r};return Ia(e,t,{...i,platform:a})},Vo=new WeakMap,Ho=(e,t)=>{Uo(e),Vo.set(e,t)},Uo=e=>{let t=Vo.get(e);t&&(t(),Vo.delete(e))},Wo=({element:e,activeActions:t,getGridItemById:n,placementItemActionsMenu:r,renderOverlayContent:i,removeItemActionsMenuPopover:a,itemActionsDocumentPopover:s=!0})=>{let c=e.querySelector(`.grid-item-actions-popover`),l=e.querySelector(`.grid-stack-item-content`),u=n(e.getAttribute(`gs-id`)??``);if(t&&t.length>0&&c&&(a(e),c=null),!c){let n=document.createDocumentFragment();(0,o.render)(i(u?.item,t),n),c=n.querySelector(`.grid-item-actions-popover`),e.append(c)}let d=s?`absolute`:`fixed`,f=Lo(l,c,async()=>{let{x:e,y:t}=await Bo(l,c,{placement:u?.item?.placementActionsMenu??r??`right-start`,strategy:d,middleware:[Ro(0),zo({crossAxis:!1})]});c.style.left=`${e}px`,c.style.top=`${t}px`,s||(c.style.position=`fixed`,c.style.right=`auto`,c.style.bottom=`auto`,c.style.margin=`0`)});Ho(c,f),s&&c.isConnected&&!c.matches(`:popover-open`)&&c.showPopover()},Go=e=>{let t=e.querySelector(`.grid-item-actions-popover`);t&&(Uo(t),t.hasAttribute(`popover`)&&t.matches(`:popover-open`)&&t.hidePopover(),t.remove())},Ko=e=>e===`ArrowLeft`||e===`ArrowRight`||e===`ArrowUp`||e===`ArrowDown`,qo=({key:e,node:t,maxColumns:n,shiftKey:r,ctrlKey:i,metaKey:a})=>{let o={ArrowLeft:{move:{x:t.x-1},resize:{x:t.x-1,w:t.w+1},shrink:{w:t.w-1},canMove:t.x>0,canResize:t.x>0,canShrink:t.w>1},ArrowRight:{move:{x:t.x+1},resize:{w:t.w+1},shrink:{x:t.x+1,w:t.w-1},canMove:t.x<n-t.w,canResize:t.x+t.w<n,canShrink:t.w>1},ArrowUp:{move:{y:t.y-1},resize:{y:t.y-1,h:t.h+1},shrink:{h:t.h-1},canMove:t.y>0,canResize:t.y>0,canShrink:t.h>1},ArrowDown:{move:{y:t.y+1},resize:{h:t.h+1},shrink:{y:t.y+1,h:t.h-1},canMove:!0,canResize:!0,canShrink:t.h>1}}[e];if(r&&o.canResize)return o.resize;if((i||a)&&o.canShrink)return o.shrink;if(o.canMove)return o.move},Jo=({event:e,viewMode:t,focusedItemElement:n,activeItemElement:r,gridElement:i,grid:a,columns:o,onDeleteRequest:s,removeItemActionsMenuPopover:c,createItemActionsMenuPopover:l})=>{if(t)return{focusedItemElement:n,activeItemElement:r};let u=n,d=r;if(e.key===`Delete`&&n){let e=n.nextElementSibling??n.previousElementSibling;s(n),u=e??void 0,u?requestAnimationFrame(()=>u?.focus()):i.focus(),r===n&&(d=void 0)}else if(e.key===`Escape`&&n)n.removeAttribute(`focused`),c(n),u=void 0,i.focus();else if(e.key===`Enter`&&n)e.preventDefault(),e.stopPropagation(),r&&(r.removeAttribute(`active`),i.removeAttribute(`has-active-item`),c(r),d=void 0),i.querySelectorAll(`.grid-stack-item`).forEach(e=>{e!==n&&c(e)}),l(n),requestAnimationFrame(()=>{let e=n.querySelector(`luzmo-item-grid-item-actions-menu`);e&&e.focus()});else if(n&&a&&Ko(e.key)){e.preventDefault(),e.stopPropagation();let t=n.gridstackNode;if(!t)return{focusedItemElement:u,activeItemElement:d};let r=qo({key:e.key,node:t,maxColumns:o,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey});r&&a.update(n,r)}return{focusedItemElement:u,activeItemElement:d}},Yo={lock:{icon:a.luzmoLockOutline,label:`Lock`,tooltip:`Lock`,action:`lock`,type:`toggle`},edit:{icon:a.luzmoPencil,label:`Edit`,tooltip:`Edit`,action:`edit`,type:`toggle`},"edit-data":{icon:a.luzmoTable,label:`Edit data`,tooltip:`Data`,action:`edit-data`,type:`toggle`},"item-options":{icon:a.luzmoCog,label:`Item options`,tooltip:`Options`,action:`item-options`,type:`toggle`},filters:{icon:a.luzmoFilterOutline,label:`Filters`,tooltip:`Filters`,action:`filters`,type:`toggle`},clone:{icon:a.luzmoClone,label:`Clone`,tooltip:`Clone`,action:`clone`,type:`button`},delete:{icon:a.luzmoTrashOutline,label:`Delete`,tooltip:`Delete`,action:`delete`,type:`button`}},Xo=e=>{if(e)return structuredClone(e).map(e=>{if(e.type===`group`)return e.actions=e.actions??[],e.actions=e.actions.map(e=>{if(typeof e==`string`&&Object.hasOwn(Yo,e))return{...Yo[e]};if(typeof e==`object`)return e.icon=e.icon??a.luzmoCircle,e.label=e.label??e.action,e.tooltip=e.tooltip??e.label??e.action,e.type=[`toggle`,`button`].includes(e.type??``)?e.type:`button`,e}).filter(Boolean),e}).filter(Boolean)},Zo=()=>[{type:`group`,actions:[{...Yo[`edit-data`]},{...Yo[`item-options`]},{...Yo.clone}]},{type:`group`,actions:[{...Yo.delete}]}],Qo=16,$o=10,es=(e,t)=>t>=1?`rgba(${e.r},${e.g},${e.b},1)`:t<=0?`rgba(${e.r},${e.g},${e.b},0)`:`rgba(${e.r},${e.g},${e.b},${t})`,ts=async({theme:e,currentTheme:t})=>e?.type===`custom`?structuredClone(e):e?.id&&r.n.includes(e.id)&&t?.id!==e.id?{...await r.t(e.id),id:e.id}:e?.id&&t?.id!==e.id||!e&&t?t:await r.t(`default`),ns=e=>[(e?.margins?.[0]??Qo)/2,(e?.margins?.[1]??Qo)/2],rs=e=>$o-(e?.margins?.[0]??$o),is=e=>{let t=e?.boxShadow;if(!t)return``;let r=new n.t(t.color),i={r:Math.round(r.srgb.r*255),g:Math.round(r.srgb.g*255),b:Math.round(r.srgb.b*255)},a=e?.margins?.[0]??Qo,o=Math.min(a/10,2);return t.size===`none`?`none`:t.size===`S`?`0 ${o*2}px ${o*4}px ${es(i,.16)}, 0 ${o*2}px ${o*4}px ${es(i,.23)}`:t.size===`M`?`0 ${o*8}px ${o*16}px ${es(i,.19)}, 0 ${o*4}px ${o*4}px ${es(i,.23)}`:t.size===`L`?`0 ${o*12}px ${o*24}px ${es(i,.25)}, 0 ${o*8}px ${o*8}px ${es(i,.22)}`:``},as=e=>{let t=is(e);return new Map([[`--grid-font-family`,e?.font?.fontFamily],[`--grid-background`,e?.background],[`--grid-item-box-shadow`,t],[`--grid-item-background`,e?.itemsBackground],[`--grid-item-border-color`,e?.borders?.[`border-color`]],[`--grid-item-border-style`,e?.borders?.[`border-style`]],[`--grid-item-border-radius`,e?.borders?.[`border-radius`]],[`--grid-item-border-width`,`${e?.borders?.[`border-top-width`]}`],[`--grid-item-border-top-width`,e?.borders?.[`border-top-width`]],[`--grid-item-border-right-width`,e?.borders?.[`border-right-width`]],[`--grid-item-border-bottom-width`,e?.borders?.[`border-bottom-width`]],[`--grid-item-border-left-width`,e?.borders?.[`border-left-width`]]])},os=e=>{let t=e?.itemsBackground??e?.background;return t?new n.t(t).luminance<.5:!1},ss=(e,t)=>{t&&as(t).forEach((t,n)=>{t?e.setProperty(n,t):e.removeProperty(n)})},cs=({item:e,defaultItemActionsMenu:t,activeActions:n})=>{let r=Xo(e?.actionsMenu)??Xo(t)??Zo();if(!i.itemTypes.find(t=>t.type===e?.type)?.containsData&&!e?.actionsMenu&&!t&&(r=r.map(e=>({...e,actions:e.actions?.filter(e=>e.action!==`edit-data`)}))),n&&n.length>0){let e=new Set(n);r=r.map(t=>({...t,actions:t.actions?.map(t=>({...t,active:t.action&&e.has(t.action)?!0:t.active}))}))}return r},ls=({item:e,activeActions:t,defaultItemActionsMenu:n,placementItemActionsMenu:r,language:i,handleAction:a,itemActionsDocumentPopover:s=!0})=>{let c=cs({item:e,defaultItemActionsMenu:n,activeActions:t});return o.html`
228
+ <div class="grid-item-actions-popover" popover=${s?`manual`:o.nothing}>
229
229
  <luzmo-item-grid-item-actions-menu
230
- .actions=${cs({item:e,defaultItemActionsMenu:n,activeActions:t})}
230
+ .actions=${c}
231
231
  placement=${e?.placementActionsMenu??r??`right-start`}
232
232
  .language=${i}
233
233
  @luzmo-item-grid-item-action=${a}
234
234
  >
235
235
  </luzmo-item-grid-item-actions-menu>
236
236
  </div>
237
- `,us=({item:e,index:t,initialized:n,viewMode:r,contentLanguage:i,fullTheme:s,appServer:l,apiHost:u,authKey:d,authToken:f,handleMouseover:p,handleMouseout:m,handleFocus:h,handleBlur:g})=>{let _={...e.options,locale:i};_.theme||=s?.id?{id:s.id}:structuredClone(s);let v=!r;return o.html`
237
+ `},us=({item:e,index:t,initialized:n,viewMode:r,contentLanguage:i,fullTheme:s,appServer:l,apiHost:u,authKey:d,authToken:f,handleMouseover:p,handleMouseout:m,handleFocus:h,handleBlur:g})=>{let _={...e.options,locale:i};_.theme||=s?.id?{id:s.id}:structuredClone(s);let v=!r;return o.html`
238
238
  <div
239
239
  class="luzmo-item-grid-item has-luzmo-viz-item"
240
240
  luzmo-item-grid-item-id=${e.id??``}
@@ -313,8 +313,8 @@ Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the
313
313
 
314
314
  `}render(){let e=this.actions.map(e=>this._generateActionGroup(e));return o.html`
315
315
  <div class="action-buttons" tabindex="0" role="toolbar" aria-label=${(0,c.msg)(`Item actions`,{desc:`Item actions toolbar label`})}>${e}</div>
316
- `}};e.t([(0,s.property)({type:String,reflect:!0})],Ls.prototype,`placement`,void 0),e.t([(0,s.property)({type:Array})],Ls.prototype,`actions`,void 0),Ls=e.t([(0,c.localized)()],Ls);var Rs=`:host{width:100%;display:block}.grid-stack{width:100%;min-height:var(--luzmo-item-grid-min-height);background:var(--luzmo-item-grid-background,var(--grid-background,var(--luzmo-background-color)));position:relative}.grid-stack[has-active-item] .grid-stack-item:not([active])>.grid-stack-item-content,.grid-stack[has-active-item] .grid-stack-item:not([active])>.grid-item-actions-popover{opacity:.5}.grid-stack .grid-stack-item[active]>.ui-resizable-handle,.grid-stack .grid-stack-item[active].ui-resizable-autohide>.ui-resizable-handle{display:block}.grid-stack .grid-stack-item.ui-resizable-resizing,.grid-stack .grid-stack-item.ui-resizable-resizing>.grid-stack-item-content{opacity:var(--luzmo-item-grid-item-resizing-opacity,.8)!important}.grid-item-drag-handle{color:var(--luzmo-item-grid-item-drag-handle-color,#000);top:var(--luzmo-item-grid-item-drag-handle-position-top,0);left:var(--luzmo-item-grid-item-drag-handle-position-left,0);right:var(--luzmo-item-grid-item-drag-handle-position-right,auto);bottom:var(--luzmo-item-grid-item-drag-handle-position-bottom,auto);padding:var(--luzmo-item-grid-item-drag-handle-padding,.5rem);z-index:var(--luzmo-item-grid-item-drag-handle-z-index,3);cursor:var(--luzmo-item-grid-item-drag-handle-cursor,move);position:absolute}.grid-stack[dark-background] .grid-item-drag-handle{color:var(--luzmo-item-grid-item-drag-handle-color,#fff)}.grid-stack .grid-stack-item .grid-stack-item-content{border-radius:var(--luzmo-item-grid-item-border-radius,var(--grid-item-border-radius,4px));background:var(--luzmo-item-grid-item-background,var(--grid-item-background,transparent));box-shadow:var(--luzmo-item-grid-item-box-shadow,var(--grid-item-box-shadow,none));border-style:var(--luzmo-item-grid-item-border-style,none);border-color:var(--luzmo-item-grid-item-border-color,transparent);-webkit-backdrop-filter:var(--luzmo-item-grid-item-backdrop-filter,none);backdrop-filter:var(--luzmo-item-grid-item-backdrop-filter,none);overflow:hidden}.grid-stack .grid-stack-item:not(.has-luzmo-viz-item) .grid-stack-item-content{border-style:var(--luzmo-item-grid-item-border-style,var(--grid-item-border-style,none));border-color:var(--luzmo-item-grid-item-border-color,var(--grid-item-border-color,transparent));border-width:var(--luzmo-item-grid-item-border-width,var(--grid-item-border-width,0));border-top-width:var(--luzmo-item-grid-item-border-top-width,var(--grid-item-border-top-width,0));border-right-width:var(--luzmo-item-grid-item-border-right-width,var(--grid-item-border-right-width,0));border-bottom-width:var(--luzmo-item-grid-item-border-bottom-width,var(--grid-item-border-bottom-width,0));border-left-width:var(--luzmo-item-grid-item-border-left-width,var(--grid-item-border-left-width,0))}.grid-stack .grid-stack-placeholder>.placeholder-content{border-radius:var(--grid-item-border-radius,4px)}:host .grid-stack-item[active]>.ui-resizable-handle,:host .grid-stack-item:hover>.ui-resizable-handle{z-index:var(--luzmo-item-grid-resize-handle-z-index,100);background:var(--luzmo-item-grid-resize-handle-background,#fff);border-radius:var(--luzmo-item-grid-resize-handle-border-radius,3px);opacity:var(--luzmo-item-grid-resize-handle-opacity,0);transition:var(--luzmo-item-grid-resize-handle-transition,opacity .2s ease);box-shadow:0 0 6px #0000001a,0 0 2px #000000bf;display:block!important;position:absolute!important}:host .grid-stack[dark-background]>.grid-stack-item[active]>.ui-resizable-handle,:host .grid-stack[dark-background]>.grid-stack-item:hover>.ui-resizable-handle{background:var(--luzmo-item-grid-resize-handle-background,#333);box-shadow:0 0 6px #ffffff1a,0 0 2px #ffffffbf}:host .grid-stack-item[active]>.ui-resizable-handle,:host .grid-stack-item:hover>.ui-resizable-handle{opacity:var(--luzmo-item-grid-resize-handle-opacity-hover,1)}:host .grid-stack-item>.ui-resizable-handle:hover{opacity:var(--luzmo-item-grid-resize-handle-opacity-active,1);background:var(--luzmo-item-grid-resize-handle-background-hover,var(--luzmo-background-color-highlight))}:host .grid-stack-item>.ui-resizable-n,:host .grid-stack-item>.ui-resizable-s{height:var(--luzmo-item-grid-resize-handle-edge-size,8px);width:var(--luzmo-item-grid-resize-handle-side-size,18px);left:calc(50% - var(--luzmo-item-grid-resize-handle-side-size,18px) / 2)}:host .grid-stack-item>.ui-resizable-n{cursor:n-resize;top:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-4px) + var(--gs-item-margin-top,0px))}:host .grid-stack-item>.ui-resizable-s{cursor:s-resize;bottom:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-4px) + var(--gs-item-margin-bottom,0px))}:host .grid-stack-item>.ui-resizable-e,:host .grid-stack-item>.ui-resizable-w{width:var(--luzmo-item-grid-resize-handle-edge-size,8px);height:var(--luzmo-item-grid-resize-handle-side-size,18px);top:calc(50% - var(--luzmo-item-grid-resize-handle-side-size,18px) / 2)}:host .grid-stack-item>.ui-resizable-e{cursor:e-resize;right:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-4px) + var(--gs-item-margin-right,0px))}:host .grid-stack-item>.ui-resizable-w{cursor:w-resize;left:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-4px) + var(--gs-item-margin-left,0px))}:host .grid-stack-item>.ui-resizable-ne,:host .grid-stack-item>.ui-resizable-nw,:host .grid-stack-item>.ui-resizable-se,:host .grid-stack-item>.ui-resizable-sw{width:var(--luzmo-item-grid-resize-handle-corner-size,12px);height:var(--luzmo-item-grid-resize-handle-corner-size,12px);background-image:none;transform:none}:host .grid-stack-item>.ui-resizable-ne{cursor:ne-resize;top:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-6px) + var(--gs-item-margin-top,0px));right:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-6px) + var(--gs-item-margin-right,0px))}:host .grid-stack-item>.ui-resizable-nw{cursor:nw-resize;top:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-6px) + var(--gs-item-margin-top,0px));left:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-6px) + var(--gs-item-margin-left,0px))}:host .grid-stack-item>.ui-resizable-se{cursor:se-resize;right:calc(var(--luzmo-item-grid-resize-handle-corner-offset,-4px) + var(--gs-item-margin-right,0px));bottom:calc(var(--luzmo-item-grid-resize-handle-corner-offset,-4px) + var(--gs-item-margin-bottom,0px))}:host .grid-stack-item>.ui-resizable-sw{cursor:sw-resize;left:calc(var(--luzmo-item-grid-resize-handle-corner-offset,-4px) + var(--gs-item-margin-left,0px));bottom:calc(var(--luzmo-item-grid-resize-handle-corner-offset,-4px) + var(--gs-item-margin-bottom,0px))}:host .grid-stack-item>.ui-resizable-resizing .ui-resizable-handle{background:var(--luzmo-item-grid-resize-handle-background-active,var(--luzmo-background-color-highlight));opacity:1!important}.grid-item-actions-popover{z-index:2;background:0 0;border:none;outline:none;margin:0;padding:0;position:absolute;overflow:visible}luzmo-item-grid-item-actions-menu{padding:var(--luzmo-item-grid-item-actions-padding,var(--grid-item-actions-padding))}.dimensions-hint-popover{font-size:var(--luzmo-item-grid-item-dimensions-hint-font-size,var(--luzmo-font-size-xs,10px));font-family:var(--luzmo-item-grid-item-dimensions-hint-font-family,var(--luzmo-font-family,inherit));border-width:var(--luzmo-item-grid-item-dimensions-hint-border-width,var(--luzmo-border-width));border-style:solid;border-color:var(--luzmo-item-grid-item-dimensions-hint-border-color,var(--luzmo-border-color));border-radius:var(--luzmo-item-grid-item-dimensions-hint-border-radius,var(--luzmo-border-radius));padding:var(--luzmo-item-grid-item-dimensions-hint-padding,var(--luzmo-spacing-1) var(--luzmo-spacing-2));z-index:3;background:var(--luzmo-item-grid-item-dimensions-hint-background,var(--luzmo-background-color));color:var(--luzmo-item-grid-item-dimensions-hint-color,var(--luzmo-font-color));pointer-events:none;outline:none;margin:0;position:absolute;overflow:visible}luzmo-item-grid-item-actions-menu{--grid-item-actions-padding:0 .75rem}luzmo-item-grid-item-actions-menu[placement=top-start],luzmo-item-grid-item-actions-menu[placement=top],luzmo-item-grid-item-actions-menu[placement=top-end],luzmo-item-grid-item-actions-menu[placement=bottom-start],luzmo-item-grid-item-actions-menu[placement=bottom],luzmo-item-grid-item-actions-menu[placement=bottom-end]{--grid-item-actions-padding:.75rem 0}.grid-stack-item:focus-visible{outline:none}.grid-stack-item:focus-visible .grid-stack-item-content:after{content:"";border:var(--luzmo-indicator-width) solid var(--luzmo-indicator-color,var(--luzmo-primary));box-sizing:border-box;border-radius:var(--luzmo-item-grid-item-border-radius,var(--grid-item-border-radius,4px));z-index:2;width:100%;height:100%;position:absolute;top:0;left:0}`,$=class extends d.LuzmoElement{constructor(...e){super(...e),this.appServer=`https://app.luzmo.com/`,this.apiHost=`https://api.luzmo.com`,this.language=`en`,this.contentLanguage=`en`,this.columns=48,this.rowHeight=16,this.viewMode=!1,this.placementItemActionsMenu=`right-start`,this.clonedItemPositioning=`below-item`,this._items=[],this._hasControlledItems=!1,this._initialItems=[],this.renderers={},this._initialized=!1,this.defaultRenderer=e=>o.html`
316
+ `}};e.t([(0,s.property)({type:String,reflect:!0})],Ls.prototype,`placement`,void 0),e.t([(0,s.property)({type:Array})],Ls.prototype,`actions`,void 0),Ls=e.t([(0,c.localized)()],Ls);var Rs=`:host{width:100%;display:block}.grid-stack{width:100%;min-height:var(--luzmo-item-grid-min-height);background:var(--luzmo-item-grid-background,var(--grid-background,var(--luzmo-background-color)));position:relative}.grid-stack[has-active-item] .grid-stack-item:not([active])>.grid-stack-item-content,.grid-stack[has-active-item] .grid-stack-item:not([active])>.grid-item-actions-popover{opacity:.5}.grid-stack .grid-stack-item[active]>.ui-resizable-handle,.grid-stack .grid-stack-item[active].ui-resizable-autohide>.ui-resizable-handle{display:block}.grid-stack .grid-stack-item.ui-resizable-resizing,.grid-stack .grid-stack-item.ui-resizable-resizing>.grid-stack-item-content{opacity:var(--luzmo-item-grid-item-resizing-opacity,.8)!important}.grid-item-drag-handle{color:var(--luzmo-item-grid-item-drag-handle-color,#000);top:var(--luzmo-item-grid-item-drag-handle-position-top,0);left:var(--luzmo-item-grid-item-drag-handle-position-left,0);right:var(--luzmo-item-grid-item-drag-handle-position-right,auto);bottom:var(--luzmo-item-grid-item-drag-handle-position-bottom,auto);padding:var(--luzmo-item-grid-item-drag-handle-padding,.5rem);z-index:var(--luzmo-item-grid-item-drag-handle-z-index,3);cursor:var(--luzmo-item-grid-item-drag-handle-cursor,move);position:absolute}.grid-stack[dark-background] .grid-item-drag-handle{color:var(--luzmo-item-grid-item-drag-handle-color,#fff)}.grid-stack .grid-stack-item .grid-stack-item-content{border-radius:var(--luzmo-item-grid-item-border-radius,var(--grid-item-border-radius,4px));background:var(--luzmo-item-grid-item-background,var(--grid-item-background,transparent));box-shadow:var(--luzmo-item-grid-item-box-shadow,var(--grid-item-box-shadow,none));border-style:var(--luzmo-item-grid-item-border-style,none);border-color:var(--luzmo-item-grid-item-border-color,transparent);-webkit-backdrop-filter:var(--luzmo-item-grid-item-backdrop-filter,none);backdrop-filter:var(--luzmo-item-grid-item-backdrop-filter,none);overflow:hidden}.grid-stack .grid-stack-item:not(.has-luzmo-viz-item) .grid-stack-item-content{border-style:var(--luzmo-item-grid-item-border-style,var(--grid-item-border-style,none));border-color:var(--luzmo-item-grid-item-border-color,var(--grid-item-border-color,transparent));border-width:var(--luzmo-item-grid-item-border-width,var(--grid-item-border-width,0));border-top-width:var(--luzmo-item-grid-item-border-top-width,var(--grid-item-border-top-width,0));border-right-width:var(--luzmo-item-grid-item-border-right-width,var(--grid-item-border-right-width,0));border-bottom-width:var(--luzmo-item-grid-item-border-bottom-width,var(--grid-item-border-bottom-width,0));border-left-width:var(--luzmo-item-grid-item-border-left-width,var(--grid-item-border-left-width,0))}.grid-stack .grid-stack-placeholder>.placeholder-content{border-radius:var(--grid-item-border-radius,4px)}:host .grid-stack-item[active]>.ui-resizable-handle,:host .grid-stack-item:hover>.ui-resizable-handle{z-index:var(--luzmo-item-grid-resize-handle-z-index,100);background:var(--luzmo-item-grid-resize-handle-background,#fff);border-radius:var(--luzmo-item-grid-resize-handle-border-radius,3px);opacity:var(--luzmo-item-grid-resize-handle-opacity,0);transition:var(--luzmo-item-grid-resize-handle-transition,opacity .2s ease);box-shadow:0 0 6px #0000001a,0 0 2px #000000bf;display:block!important;position:absolute!important}:host .grid-stack[dark-background]>.grid-stack-item[active]>.ui-resizable-handle,:host .grid-stack[dark-background]>.grid-stack-item:hover>.ui-resizable-handle{background:var(--luzmo-item-grid-resize-handle-background,#333);box-shadow:0 0 6px #ffffff1a,0 0 2px #ffffffbf}:host .grid-stack-item[active]>.ui-resizable-handle,:host .grid-stack-item:hover>.ui-resizable-handle{opacity:var(--luzmo-item-grid-resize-handle-opacity-hover,1)}:host .grid-stack-item>.ui-resizable-handle:hover{opacity:var(--luzmo-item-grid-resize-handle-opacity-active,1);background:var(--luzmo-item-grid-resize-handle-background-hover,var(--luzmo-background-color-highlight))}:host .grid-stack-item>.ui-resizable-n,:host .grid-stack-item>.ui-resizable-s{height:var(--luzmo-item-grid-resize-handle-edge-size,8px);width:var(--luzmo-item-grid-resize-handle-side-size,18px);left:calc(50% - var(--luzmo-item-grid-resize-handle-side-size,18px) / 2)}:host .grid-stack-item>.ui-resizable-n{cursor:n-resize;top:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-4px) + var(--gs-item-margin-top,0px))}:host .grid-stack-item>.ui-resizable-s{cursor:s-resize;bottom:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-4px) + var(--gs-item-margin-bottom,0px))}:host .grid-stack-item>.ui-resizable-e,:host .grid-stack-item>.ui-resizable-w{width:var(--luzmo-item-grid-resize-handle-edge-size,8px);height:var(--luzmo-item-grid-resize-handle-side-size,18px);top:calc(50% - var(--luzmo-item-grid-resize-handle-side-size,18px) / 2)}:host .grid-stack-item>.ui-resizable-e{cursor:e-resize;right:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-4px) + var(--gs-item-margin-right,0px))}:host .grid-stack-item>.ui-resizable-w{cursor:w-resize;left:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-4px) + var(--gs-item-margin-left,0px))}:host .grid-stack-item>.ui-resizable-ne,:host .grid-stack-item>.ui-resizable-nw,:host .grid-stack-item>.ui-resizable-se,:host .grid-stack-item>.ui-resizable-sw{width:var(--luzmo-item-grid-resize-handle-corner-size,12px);height:var(--luzmo-item-grid-resize-handle-corner-size,12px);background-image:none;transform:none}:host .grid-stack-item>.ui-resizable-ne{cursor:ne-resize;top:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-6px) + var(--gs-item-margin-top,0px));right:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-6px) + var(--gs-item-margin-right,0px))}:host .grid-stack-item>.ui-resizable-nw{cursor:nw-resize;top:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-6px) + var(--gs-item-margin-top,0px));left:calc(var(--luzmo-item-grid-resize-handle-edge-offset,-6px) + var(--gs-item-margin-left,0px))}:host .grid-stack-item>.ui-resizable-se{cursor:se-resize;right:calc(var(--luzmo-item-grid-resize-handle-corner-offset,-4px) + var(--gs-item-margin-right,0px));bottom:calc(var(--luzmo-item-grid-resize-handle-corner-offset,-4px) + var(--gs-item-margin-bottom,0px))}:host .grid-stack-item>.ui-resizable-sw{cursor:sw-resize;left:calc(var(--luzmo-item-grid-resize-handle-corner-offset,-4px) + var(--gs-item-margin-left,0px));bottom:calc(var(--luzmo-item-grid-resize-handle-corner-offset,-4px) + var(--gs-item-margin-bottom,0px))}:host .grid-stack-item>.ui-resizable-resizing .ui-resizable-handle{background:var(--luzmo-item-grid-resize-handle-background-active,var(--luzmo-background-color-highlight));opacity:1!important}.grid-item-actions-popover{z-index:2;background:0 0;border:none;outline:none;margin:0;padding:0;position:absolute;overflow:visible}.grid-item-actions-popover:not([popover]){z-index:var(--luzmo-item-grid-item-actions-in-tree-z-index,50);position:fixed}luzmo-item-grid-item-actions-menu{padding:var(--luzmo-item-grid-item-actions-padding,var(--grid-item-actions-padding))}.dimensions-hint-popover{font-size:var(--luzmo-item-grid-item-dimensions-hint-font-size,var(--luzmo-font-size-xs,10px));font-family:var(--luzmo-item-grid-item-dimensions-hint-font-family,var(--luzmo-font-family,inherit));border-width:var(--luzmo-item-grid-item-dimensions-hint-border-width,var(--luzmo-border-width));border-style:solid;border-color:var(--luzmo-item-grid-item-dimensions-hint-border-color,var(--luzmo-border-color));border-radius:var(--luzmo-item-grid-item-dimensions-hint-border-radius,var(--luzmo-border-radius));padding:var(--luzmo-item-grid-item-dimensions-hint-padding,var(--luzmo-spacing-1) var(--luzmo-spacing-2));z-index:3;background:var(--luzmo-item-grid-item-dimensions-hint-background,var(--luzmo-background-color));color:var(--luzmo-item-grid-item-dimensions-hint-color,var(--luzmo-font-color));pointer-events:none;outline:none;margin:0;position:absolute;overflow:visible}luzmo-item-grid-item-actions-menu{--grid-item-actions-padding:0 .75rem}luzmo-item-grid-item-actions-menu[placement=top-start],luzmo-item-grid-item-actions-menu[placement=top],luzmo-item-grid-item-actions-menu[placement=top-end],luzmo-item-grid-item-actions-menu[placement=bottom-start],luzmo-item-grid-item-actions-menu[placement=bottom],luzmo-item-grid-item-actions-menu[placement=bottom-end]{--grid-item-actions-padding:.75rem 0}.grid-stack-item:focus-visible{outline:none}.grid-stack-item:focus-visible .grid-stack-item-content:after{content:"";border:var(--luzmo-indicator-width) solid var(--luzmo-indicator-color,var(--luzmo-primary));box-sizing:border-box;border-radius:var(--luzmo-item-grid-item-border-radius,var(--grid-item-border-radius,4px));z-index:2;width:100%;height:100%;position:absolute;top:0;left:0}`,$=class extends d.LuzmoElement{constructor(...e){super(...e),this.appServer=`https://app.luzmo.com/`,this.apiHost=`https://api.luzmo.com`,this.language=`en`,this.contentLanguage=`en`,this.columns=48,this.rowHeight=16,this.viewMode=!1,this.itemActionsDocumentPopover=!0,this.placementItemActionsMenu=`right-start`,this.clonedItemPositioning=`below-item`,this._items=[],this._hasControlledItems=!1,this._initialItems=[],this.renderers={},this._initialized=!1,this.defaultRenderer=e=>o.html`
317
317
  <div class="grid-item-content">
318
318
  <div class="grid-item-type">${e.type}</div>
319
319
  </div>
320
- `,this._internalItemStates={},this._initialItemStatesApplied=!1,this._internalItems=[],this._initialItemsApplied=!1,this._hasWarnedControlledAndInitialItems=!1,this._hasWarnedIgnoredInitialItems=!1,this._suppressItemStatesEvent=!1,this._suppressNextLayoutChangedEvent=!1,this._hasWarnedControlledAndInitialStates=!1,this._internalItemsVersion=0,this._handleMouseout=e=>{if(this.viewMode)return;let t=Ui(e.target);t&&Wi({event:e,gridItem:t})&&this._removeItemActionsMenuPopover(t)},this._handleKeyDown=e=>{let t=Jo({event:e,viewMode:this.viewMode,focusedItemElement:this._focusedItemElement,activeItemElement:this._activeItemElement,gridElement:this._gridElement,grid:this._grid,columns:this.columns??48,onDeleteRequest:e=>{let t=e.getAttribute(`gs-id`);if(!t)return;let n=this._effectiveItems,r=n.find(e=>e.id===t);if(!r)return;this._isControlled||this._clearGridItemUiStateForDelete(e);let i=n.filter(e=>e.id!==t);Bi({target:this,action:`delete`,actionType:`button`,active:!1,items:n,element:e,itemId:t,item:r,updatedItems:i}),this._isItemsControlled||this._setInternalItems(i,{reconcileStates:!0})},removeItemActionsMenuPopover:this._removeItemActionsMenuPopover.bind(this),createItemActionsMenuPopover:this._createItemActionsMenuPopover.bind(this)});this._focusedItemElement=t.focusedItemElement,this._activeItemElement=t.activeItemElement},this._handleFocus=e=>{this._focusedItemElement=Gi({event:e,focusedItemElement:this._focusedItemElement,removeItemActionsMenuPopover:this._removeItemActionsMenuPopover.bind(this)})},this._handleBlur=e=>{let t=Ki({event:e,focusedItemElement:this._focusedItemElement,removeItemActionsMenuPopover:this._removeItemActionsMenuPopover.bind(this)});this._focusedItemElement=t.focusedItemElement,t.shouldFocusGrid&&this._gridElement.focus()},this._handleGridClick=e=>{if(this._isControlled){this._emitControlledClickAwayDeactivation(e);return}let t=Yi({event:e,gridElement:this._gridElement,hostElement:this,items:this.items,activeItemActionToggle:this._activeItemActionToggle,cleanupActiveItem:this._cleanupActiveItem.bind(this),dispatchItemActionEvent:this._dispatchItemActionEvent.bind(this)});this._activeItemActionToggle=t.activeItemActionToggle},this._handleAction=e=>{let t=e.detail,n=e.target?.closest(`.grid-stack-item`),r=n?.getAttribute(`gs-id`);if([`delete`,`clone`].includes(t.action)){if(e.stopPropagation(),!r)return;let i=this._effectiveItems,a=i.find(e=>e.id===r);if(!a)return;let o=this._gridElement.querySelector(`.grid-stack-item[active]`)??this._activeItemElement;if(!this._isControlled&&o&&o!==n){let e=o.getAttribute(`gs-id`),t=i.find(t=>t.id===e),n=this._activeItemActionToggle,r=o;this._cleanupActiveItem(o),n&&e&&t&&this._dispatchItemActionEvent(n,`toggle`,!1,r,e,t),this._activeItemElement=void 0,this._activeItemActionToggle=void 0,this._internalItemStates={}}if(t.action===`delete`){this._isControlled||this._clearGridItemUiStateForDelete(n);let e=i.filter(e=>e.id!==r);Bi({target:this,action:`delete`,actionType:t.type,active:t.active,items:i,element:n,itemId:r,item:a,updatedItems:e}),this._isItemsControlled||this._setInternalItems(e,{reconcileStates:!0})}else{let e={...structuredClone(a),id:_()},r=this._simulateCloneLayout(e,a),o=r.find(t=>t.id===e.id)??e;Bi({target:this,action:`clone`,actionType:t.type,active:t.active,items:i,element:n,itemId:e.id,item:o,originalElement:n,updatedItems:r}),this._isItemsControlled||this._setInternalItems(r,{reconcileStates:!0})}return}if(this._isControlled){if(e.stopPropagation(),!r)return;let i=this.items.find(e=>e.id===r);if(t.type===`toggle`){let e=this._effectiveItemStates,n=t.active,i=this._computeNextItemStates(r,t.action,n);B({target:this,itemStates:e,updatedItemStates:i,changedItemStates:{[r]:[t.action]}})}else Bi({target:this,action:t.action,actionType:t.type,active:t.active,items:this.items,element:n,itemId:r,item:i});n&&!n.hasAttribute(`active`)&&this._removeItemActionsMenuPopover(n);return}this._suppressItemStatesEvent=!0;let i=Ji({event:e,gridElement:this._gridElement,items:this.items,state:{activeItemElement:this._activeItemElement,activeItemActionToggle:this._activeItemActionToggle},cleanupActiveItem:this._cleanupActiveItem.bind(this),dispatchItemActionEvent:this._dispatchItemActionEvent.bind(this),createItemActionsMenuPopover:this._createItemActionsMenuPopover.bind(this)});if(this._suppressItemStatesEvent=!1,this._activeItemElement=i.activeItemElement,this._activeItemActionToggle=i.activeItemActionToggle,t.type===`toggle`&&r){let e=this._effectiveItemStates,a=i.activeItemElement===n&&i.activeItemActionToggle===t.action,o=this._computeNextItemStates(r,t.action,a);this._internalItemStates=o,B({target:this,itemStates:e,updatedItemStates:o,changedItemStates:this._diffItemStates(e,o)})}}}static get styles(){return[(0,o.unsafeCSS)(Li),(0,o.unsafeCSS)(Rs)]}set items(e){let t=this._items,n=structuredClone(e??[]);this._validateItemsHaveIds(n,`items`),this._items=n,this._hasControlledItems=e!==void 0,this._isItemsControlled&&!this._hasControlledItems&&(this._setInternalItems(t,{reconcileStates:!0}),this._initialItemsApplied=!0),this.requestUpdate(`items`,t)}get items(){return this._effectiveItems}set initialItems(e){let t=this._initialItems,n=structuredClone(e??[]);this._validateItemsHaveIds(n,`initialItems`),!(!this._isItemsControlled&&this._initialItemsApplied)&&(this._initialItems=n,this._isItemsControlled||(this._initialItemsApplied=!1),this.requestUpdate(`initialItems`,t))}get initialItems(){return this._initialItems}set itemStates(e){let t=this._itemStates;this._itemStates=e??void 0,this.requestUpdate(`itemStates`,t)}get itemStates(){return this._itemStates}get _isControlled(){return this.itemStates!==void 0}get _isItemsControlled(){return this._hasControlledItems}get _effectiveItems(){return this._isItemsControlled?this._items:this._internalItems}get _effectiveItemStates(){return this._isControlled?this.itemStates:this._internalItemStates}_validateItemsHaveIds(e,t){for(let n=0;n<e.length;n+=1)if(!e[n]?.id)throw Error(`luzmo-item-grid: ${t}[${n}] is missing required id`)}async _loadTheme(e){let t=this._initialized;if(this._fullTheme=await ts({theme:e,currentTheme:this._fullTheme}),this._initialized&&ss(this.style,this._fullTheme),!this._initialized&&this._gridElement&&await new Promise(e=>{requestAnimationFrame(()=>{this._initializeGrid(),e()})}),this._grid){let[e,t]=ns(this.theme);this._grid.margin([e,t].join(` `))}t&&this.requestUpdate()}firstUpdated(){document.addEventListener(`click`,this._handleGridClick),this.addEventListener(`keydown`,this._handleKeyDown)}disconnectedCallback(){super.disconnectedCallback(),this._cleanup(),document.removeEventListener(`click`,this._handleGridClick),this.removeEventListener(`keydown`,this._handleKeyDown)}willUpdate(e){if(super.willUpdate(e),e.has(`_initialized`)&&(ss(this.style,this._fullTheme),this._initialized&&this._grid&&this._fullTheme?.margins)){let[e,t]=ns(this._fullTheme);this._grid.margin([e,t].join(` `))}}updated(e){super.updated(e);let t=e.has(`contentLanguage`),n=e.has(`viewMode`),r=e.has(`items`),i=e.has(`initialItems`),a=r||e.has(`_internalItemsVersion`),o=e.has(`theme`),s=e.has(`itemStates`);this._isItemsControlled&&this.initialItems&&this.initialItems.length>0?this._hasWarnedControlledAndInitialItems||=(console.warn(`luzmo-item-grid: Both items and initialItems are set. The component will be treated as controlled (initialItems is ignored).`),!0):this._hasWarnedControlledAndInitialItems=!1,!this._initialItemsApplied&&!this._isItemsControlled&&this._initialItems.length>0?(this._setInternalItems(this._initialItems,{reconcileStates:!0}),this._initialItemsApplied=!0):i&&!this._isItemsControlled&&this._initialItems.length===0&&!this._initialItemsApplied&&(this._setInternalItems([],{reconcileStates:!0}),this._initialItemsApplied=!0),this.itemStates!==void 0&&this.initialItemStates!==void 0?this._hasWarnedControlledAndInitialStates||=(console.warn(`luzmo-item-grid: Both itemStates and initialItemStates are set. The component will be treated as controlled (initialItemStates is ignored).`),!0):this._hasWarnedControlledAndInitialStates=!1,!this._initialItemStatesApplied&&this.initialItemStates&&!this._isControlled&&(this._internalItemStates=this._sanitizeInitialItemStates(this.initialItemStates),this._initialItemStatesApplied=!0),$i(this._effectiveItems),Ps({initialized:this._initialized,grid:this._grid,hasItemsChanged:a,gridItemElements:this._gridItemElements,items:this._effectiveItems}),r&&this._reconcileStaleItemStates(),t&&Ri(this._gridItemElements,this.contentLanguage),this._activeItemElement=Fs({initialized:this._initialized,grid:this._grid,hasViewModeChanged:n,viewMode:this.viewMode,previousViewMode:e.get(`viewMode`),activeItemElement:this._activeItemElement,gridElement:this._gridElement,cleanupActiveItem:this._cleanupActiveItem.bind(this)}),(o||!this._fullTheme&&!this._initialized)&&this._loadTheme(this.theme),(a||s)&&this._initialized&&this._applyItemStates()}_setInternalItems(e,t={}){let n=structuredClone(e);this._validateItemsHaveIds(n,`internalItems`),this._internalItems=n,$i(this._internalItems),this._internalItemsVersion+=1,t.reconcileStates&&this._reconcileStaleItemStates()}_handleMouseover(e){if(this.viewMode)return;let t=Ui(e.target);t&&this._createItemActionsMenuPopover(t)}_emitControlledClickAwayDeactivation(e){let t=this._effectiveItemStates,n=Object.entries(t).filter(([,e])=>e.length>0);if(!this._gridElement||n.length===0)return;let r=e.composedPath();if(n.some(([e])=>{let t=Array.from(this._gridElement.querySelectorAll(`.grid-stack-item`)).find(t=>t.getAttribute(`gs-id`)===e);if(!t)return!1;if(r.includes(t))return!0;let n=t.querySelector(`.grid-item-actions-popover`);return n?r.includes(n):!1}))return;let i={},a={...t};for(let[e,t]of n){for(let n of t)a=this._computeNextItemStates(e,n,!1,a);i[e]=[...t]}B({target:this,itemStates:t,updatedItemStates:a,changedItemStates:i})}_cleanupActiveItem(e){this._activeItemElement=qi({item:e,activeItemElement:this._activeItemElement,gridElement:this._gridElement,removeItemActionsMenuPopover:this._removeItemActionsMenuPopover.bind(this)})}_clearGridItemUiStateForDelete(e){e.hasAttribute(`focused`)&&e.removeAttribute(`focused`),e.hasAttribute(`active`)&&e.removeAttribute(`active`),this._removeItemActionsMenuPopover(e),this._focusedItemElement===e&&(this._focusedItemElement=void 0),this._activeItemElement===e&&(this._activeItemElement=void 0,this._activeItemActionToggle=void 0),this._gridElement.querySelector(`.grid-stack-item[active]`)||this._gridElement.removeAttribute(`has-active-item`)}_dispatchItemActionEvent(e,t,n,r,i,a,o,s){if(Bi({target:this,action:e,actionType:t,active:n,items:this.items,element:r,itemId:i,item:a,deletedId:o,originalElement:s}),t===`toggle`&&!this._suppressItemStatesEvent){let t=this._effectiveItemStates,r=this._computeNextItemStates(i,e,n);this._isControlled||(this._internalItemStates=r),B({target:this,itemStates:t,updatedItemStates:r,changedItemStates:{[i]:[e]}})}}_sanitizeInitialItemStates(e){let t=Object.entries(e).filter(([,e])=>e.length>0),n=t.length,r=t.reduce((e,[,t])=>e+t.length,0);if(n>1||r>1){console.warn(`luzmo-item-grid: initialItemStates contains multiple items or actions. In uncontrolled mode, only one item with one active action is supported at a time. Only the first item and its first action will be applied. Use controlled mode (itemStates) for multiple simultaneous active items.`);let[e,n]=t[0];return{[e]:[n[0]]}}return{...e}}_diffItemStates(e,t){let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let i of r){let r=e[i]??[],a=t[i]??[],o=a.filter(e=>!r.includes(e)),s=r.filter(e=>!a.includes(e)),c=[...o,...s];c.length>0&&(n[i]=c)}return n}_computeNextItemStates(e,t,n,r){if(!this._isControlled)return n?{[e]:[t]}:{};let i={...r??this._effectiveItemStates};if(n){let n=i[e]??[];n.includes(t)||(i[e]=[...n,t])}else{let n=i[e];if(n){let r=n.filter(e=>e!==t);r.length===0?delete i[e]:i[e]=r}}return i}_filterItemStatesToExistingItems(e){let t=new Set(this.items.map(e=>e.id).filter(e=>!!e)),n={};for(let[r,i]of Object.entries(e))!t.has(r)||i.length===0||(n[r]=[...i]);return n}_reconcileStaleItemStates(){let e=this._isControlled?this._effectiveItemStates:this._internalItemStates,t=this._filterItemStatesToExistingItems(e),n={};for(let[r,i]of Object.entries(e))!t[r]&&i.length>0&&(n[r]=[...i]);Object.keys(n).length>0&&B({target:this,itemStates:e,updatedItemStates:t,changedItemStates:n}),this._isControlled||(this._internalItemStates=t)}_simulateCloneLayout(e,t){let n=this._effectiveItems;if(!this._grid)return[...n,e];let r=e.position??this._resolvePositionFromEngine(t.id);if(!r)return[...n,e];e={...e,position:{...r}};let i=t.position??this._resolvePositionFromEngine(t.id);this.clonedItemPositioning===`below-item`&&i&&(e.position={...e.position,col:i.col,row:i.row+i.sizeY});let a=this.clonedItemPositioning!==`below-item`||!i,{updatedItems:o}=aa({item:e,engine:this._grid.engine,existingItems:this._enrichItemsWithEnginePositions(n),autoPosition:a});return o}_cleanup(){for(let e of this._gridItemElements)this._cleanupActiveItem(e);this._grid&&=(this._grid.destroy(),void 0),this._initialized=!1}_restoreItemsLayout(e){if(!this._grid||!this._gridElement||e.length===0||!this._isItemsControlled)return;let t=[];for(let n of e){if(!n.id)continue;let e=this._effectiveItems.find(e=>e.id===n.id);if(!e)continue;let r=e.position??this._resolvePositionFromEngine(e.id);if(!r)continue;let i=this._gridElement.querySelector(`.grid-stack-item[gs-id="${e.id}"]`);i&&(n.x!==r.col||n.y!==r.row||n.w!==r.sizeX||n.h!==r.sizeY)&&t.push({element:i,position:r})}if(t.length!==0){this._suppressNextLayoutChangedEvent=!0,this._grid.batchUpdate();for(let e of t)this._grid.update(e.element,{x:e.position.col,y:e.position.row,w:e.position.sizeX,h:e.position.sizeY});this._grid.batchUpdate(!1),setTimeout(()=>{this._suppressNextLayoutChangedEvent&&=!1},0)}}_initializeGrid(){this._initialized||!this._gridElement||(this._grid=As({gridElement:this._gridElement,gridItemElements:this._gridItemElements,items:this._effectiveItems,columns:this.columns??48,rowHeight:this.rowHeight??16,viewMode:this.viewMode,fullTheme:this._fullTheme,onCreateOrUpdateDimensionsHint:this._createOrUpdateDimensionsHint.bind(this),onRemoveDimensionsHint:this._removeDimensionsHint.bind(this),onChange:e=>{if(this._suppressNextLayoutChangedEvent){this._suppressNextLayoutChangedEvent=!1;return}let t=this._effectiveItems,n=js(t,e);this._isItemsControlled||this._setInternalItems(n,{reconcileStates:!0}),Vi({target:this,eventName:`luzmo-item-grid-layout-changed`,detail:{element:this._gridElement,grid:this._grid,items:t,updatedItems:n}}),this._restoreItemsLayout(e)}}),this._initialized=!0,Vi({target:this,eventName:`luzmo-item-grid-ready`,detail:{element:this._gridElement,grid:this._grid,items:this._effectiveItems}}),this._applyItemStates())}_applyItemStates(){let e=this._filterItemStatesToExistingItems(this._effectiveItemStates),t=new Set(Object.entries(e).filter(([,e])=>e.length>0).map(([e])=>e)),n=[],r=this._gridElement?.querySelectorAll(`.grid-stack-item[active]`);if(r)for(let e of r){let n=e.getAttribute(`gs-id`);(!n||!t.has(n))&&(e.removeAttribute(`active`),this._removeItemActionsMenuPopover(e))}if(this._activeItemElement=void 0,this._activeItemActionToggle=void 0,t.size===0){this._gridElement?.removeAttribute(`has-active-item`);return}for(let[t,r]of Object.entries(e)){if(r.length===0)continue;let e=this.getGridItemById(t);if(!e?.element)continue;let i=e.element;i.setAttribute(`active`,`true`),this._gridElement?.setAttribute(`has-active-item`,`true`),this._createItemActionsMenuPopover(i,r);for(let e of r)n.push({element:i,action:e})}if(n.length===0){this._gridElement?.removeAttribute(`has-active-item`),this._activeItemElement=void 0,this._activeItemActionToggle=void 0;return}n.length===1?(this._activeItemElement=n[0].element,this._activeItemActionToggle=n[0].action):(this._activeItemElement=void 0,this._activeItemActionToggle=void 0)}_createOrUpdateDimensionsHint(e,t,n){Ms({element:e,numberOfColumns:t,numberOfRows:n,offsetHint:rs(this.theme)})}_removeDimensionsHint(e){Ns(e)}get grid(){return this._grid}get gridItems(){return ia(this.items,this._gridElement)}registerRenderer(e,t){this.renderers={...this.renderers,[e]:t}}_renderOverlayContent(e,t){return ls({item:e,activeActions:t,defaultItemActionsMenu:this.defaultItemActionsMenu,placementItemActionsMenu:this.placementItemActionsMenu,language:this.language,handleAction:this._handleAction})}_createItemActionsMenuPopover(e,t){Wo({element:e,activeActions:t,getGridItemById:this.getGridItemById.bind(this),placementItemActionsMenu:this.placementItemActionsMenu,renderOverlayContent:this._renderOverlayContent.bind(this),removeItemActionsMenuPopover:this._removeItemActionsMenuPopover.bind(this)})}_removeItemActionsMenuPopover(e){Go(e)}getGridItemById(e){return this.gridItems.find(t=>t.item.id===e)}scrollToItem(e){let t=this.getGridItemById(e);if(!t?.element)return;let n=t.element.getBoundingClientRect();(n.bottom>window.innerHeight||n.top<0)&&t.element.scrollIntoView({behavior:`smooth`,block:`center`})}_createMissingItemError(e){return Error(`Grid item with id "${e}" not found`)}_requireGridItem(e){let t=this._effectiveItems.find(t=>t.id===e);if(!t)throw this._createMissingItemError(e);return t}_resolvePositionFromEngine(e){let t=this._grid?.engine.nodes.find(t=>t.id===e);if(!(!t||t.x==null||t.y==null||t.w==null||t.h==null))return{col:t.x,row:t.y,sizeX:t.w,sizeY:t.h}}_requireGridItemWithPosition(e){let t=this._requireGridItem(e);if(!t.position){let n=this._resolvePositionFromEngine(e);if(!n)throw Error(`Grid item with id "${e}" does not have a position`);return{...t,position:n}}return t}_assertAddItemHasId(e){if(!e.id)throw Error(`addGridItem requires newItem.id`)}addGridItem(e){if(this._assertAddItemHasId(e),this._effectiveItems.some(t=>t.id===e.id))throw Error(`addGridItem rejected: an item with id "${e.id}" already exists`);let t=sa(e),n=this._effectiveItems;if(!this._grid){let r=e.position?.col==null||e.position?.row==null?{...t,position:void 0}:t,i=[...n,r];return this._isItemsControlled||this._setInternalItems(i,{reconcileStates:!0}),i}if(!t.position){let e=[...n,t];return this._isItemsControlled||this._setInternalItems(e,{reconcileStates:!0}),e}let r=e.position?.col==null||e.position?.row==null,{updatedItems:i}=aa({item:t,engine:this._grid.engine,existingItems:n,autoPosition:r});return this._isItemsControlled||this._setInternalItems(i,{reconcileStates:!0}),i}_enrichItemsWithEnginePositions(e){return this._grid?e.map(e=>{if(e.position)return e;let t=this._resolvePositionFromEngine(e.id);return t?{...e,position:t}:e}):e}_updateGridItemPosition(e,t){let n=this._effectiveItems,r=this._requireGridItemWithPosition(e);return n.map(n=>{if(n.id!==e)return n;let i=n.position??r.position;return{...n,position:{...i,...t}}})}_dispatchLayoutChangedEvent(e,t){Vi({target:this,eventName:`luzmo-item-grid-layout-changed`,detail:{element:this._gridElement,grid:this._grid,items:e,updatedItems:t}})}_updateItemField(e,t){let n=this._effectiveItems;this._requireGridItem(e);let r=n.map(n=>n.id===e?{...n,...t}:n);return this._isItemsControlled||this._setInternalItems(r,{reconcileStates:!0}),r}removeGridItem(e){let t=this._effectiveItems,n=this._requireGridItem(e),r=t.filter(t=>t.id!==e);return Bi({target:this,action:`delete`,actionType:`button`,active:!1,items:t,element:this.getGridItemById(e)?.element??this,itemId:e,item:n,updatedItems:r}),this._isItemsControlled||this._setInternalItems(r,{reconcileStates:!0}),r}cloneGridItem(e){let t=this._effectiveItems,n=this._requireGridItem(e),r={...structuredClone(n),id:_()},i=this._simulateCloneLayout(r,n),a=i.find(e=>e.id===r.id)??r;return Bi({target:this,action:`clone`,actionType:`button`,active:!1,items:t,element:this.getGridItemById(e)?.element??this,itemId:r.id,item:a,originalElement:this.getGridItemById(e)?.element,updatedItems:i}),this._isItemsControlled||this._setInternalItems(i,{reconcileStates:!0}),i}updateGridItemPosition(e,t){let n=this._updateGridItemPosition(e,t);return this._dispatchLayoutChangedEvent(this._effectiveItems,n),this._isItemsControlled||this._setInternalItems(n,{reconcileStates:!0}),n}updateGridItemSize(e,t){let n=this._updateGridItemPosition(e,t);return this._dispatchLayoutChangedEvent(this._effectiveItems,n),this._isItemsControlled||this._setInternalItems(n,{reconcileStates:!0}),n}updateGridItemSlots(e,t){return this._updateItemField(e,{slots:t})}updateGridItemOptions(e,t){return this._updateItemField(e,{options:t})}updateGridItemFilters(e,t){return this._updateItemField(e,{filters:t})}updateGridItemType(e,t){return this._updateItemField(e,{type:t})}updateGridItem(e,t){let n=this._effectiveItems;this._requireGridItem(e);let{position:r,...i}=t,a;return r&&this._grid?(a=oa({itemId:e,patch:r,engine:this._grid.engine,existingItems:this._enrichItemsWithEnginePositions(n)}),a=a.map(t=>t.id===e?{...t,...i}:t)):a=n.map(t=>t.id===e?{...t,...i,...r&&t.position?{position:{...t.position,...r}}:r?{position:r}:{}}:t),t.position&&this._dispatchLayoutChangedEvent(n,a),this._isItemsControlled||this._setInternalItems(a,{reconcileStates:!0}),a}async triggerItemAction(e,t,n){await this.updateComplete;let r=this.getGridItemById(e);if(!r?.element){console.warn(`Grid item with id "${e}" not found`);return}if(this._isControlled)return this._triggerControlledItemAction(e,t,n);this._suppressItemStatesEvent=!0;let i=Xi({gridElement:this._gridElement,items:this.items,gridItemData:r,itemId:e,action:t,options:n,state:{activeItemElement:this._activeItemElement,activeItemActionToggle:this._activeItemActionToggle},cleanupActiveItem:this._cleanupActiveItem.bind(this),dispatchItemActionEvent:this._dispatchItemActionEvent.bind(this),createItemActionsMenuPopover:this._createItemActionsMenuPopover.bind(this)});if(this._suppressItemStatesEvent=!1,this._activeItemElement=i.state.activeItemElement,this._activeItemActionToggle=i.state.activeItemActionToggle,i.result!==void 0){let n=this._effectiveItemStates,r=this._computeNextItemStates(e,t,i.result);this._internalItemStates=r,B({target:this,itemStates:n,updatedItemStates:r,changedItemStates:this._diffItemStates(n,r)})}return i.result}activateItemAction(e,t,n){return this.triggerItemAction(e,t,n)}_triggerControlledItemAction(e,t,n){let r=(this._effectiveItemStates[e]??[]).includes(t),i=n?.active??!r;if(n?.active!==void 0&&i===r)return r;let a=this._effectiveItemStates,o=this._computeNextItemStates(e,t,i);return B({target:this,itemStates:a,updatedItemStates:o,changedItemStates:{[e]:[t]}}),i}deactivateItems(){if(this._isControlled){let e=this._effectiveItemStates,t=Object.entries(e).flatMap(([e,t])=>t.map(t=>({itemId:e,action:t})));if(t.length===0)return 0;let n={},r={...e};for(let e of t)r=this._computeNextItemStates(e.itemId,e.action,!1,r),n[e.itemId]=[...n[e.itemId]??[],e.action];return B({target:this,itemStates:e,updatedItemStates:r,changedItemStates:n}),new Set(t.map(e=>e.itemId)).size}let e=this._effectiveItemStates,t=Object.entries(e).flatMap(([e,t])=>t.map(t=>({itemId:e,action:t})));this._suppressItemStatesEvent=!0;let n=Zi({gridElement:this._gridElement,items:this.items,state:{activeItemElement:this._activeItemElement,activeItemActionToggle:this._activeItemActionToggle},cleanupActiveItem:this._cleanupActiveItem.bind(this),dispatchItemActionEvent:this._dispatchItemActionEvent.bind(this)});if(this._suppressItemStatesEvent=!1,this._activeItemElement=n.state.activeItemElement,this._activeItemActionToggle=n.state.activeItemActionToggle,this._isControlled||(this._internalItemStates={}),t.length>0){let n={};for(let e of t)n[e.itemId]=[...n[e.itemId]??[],e.action];B({target:this,itemStates:e,updatedItemStates:{},changedItemStates:n})}return n.deactivatedCount}_renderGrid(){return fs({items:this.items,initialized:this._initialized,viewMode:this.viewMode,contentLanguage:this.contentLanguage,fullTheme:this._fullTheme,appServer:this.appServer,apiHost:this.apiHost,authKey:this.authKey,authToken:this.authToken,columns:this.columns??48,ensureGridItemId:e=>ea(e),handleMouseover:this._handleMouseover.bind(this),handleMouseout:this._handleMouseout,handleFocus:this._handleFocus,handleBlur:this._handleBlur})}render(){return this._renderGrid()}};e.t([(0,s.property)({type:String,attribute:`app-server`,reflect:!0})],$.prototype,`appServer`,void 0),e.t([(0,s.property)({type:String,attribute:`api-host`,reflect:!0})],$.prototype,`apiHost`,void 0),e.t([(0,s.property)({type:String,attribute:`auth-key`,reflect:!0})],$.prototype,`authKey`,void 0),e.t([(0,s.property)({type:String,attribute:`auth-token`,reflect:!0})],$.prototype,`authToken`,void 0),e.t([(0,s.property)({type:Number,attribute:`cache-time`,reflect:!0})],$.prototype,`cacheTime`,void 0),e.t([(0,s.property)({type:String,reflect:!0})],$.prototype,`language`,void 0),e.t([(0,s.property)({type:String,attribute:`content-language`,reflect:!0})],$.prototype,`contentLanguage`,void 0),e.t([(0,s.property)({type:Number,reflect:!0})],$.prototype,`columns`,void 0),e.t([(0,s.property)({type:Number,reflect:!0,attribute:`row-height`})],$.prototype,`rowHeight`,void 0),e.t([(0,s.property)({type:Boolean,reflect:!0,attribute:`view-mode`})],$.prototype,`viewMode`,void 0),e.t([(0,s.property)({type:String,reflect:!0,attribute:`placement-item-actions-menu`})],$.prototype,`placementItemActionsMenu`,void 0),e.t([(0,s.property)({type:Array,reflect:!0,attribute:`default-item-actions-menu`})],$.prototype,`defaultItemActionsMenu`,void 0),e.t([(0,s.property)({type:String,reflect:!0,attribute:`cloned-item-positioning`})],$.prototype,`clonedItemPositioning`,void 0),e.t([(0,s.property)({type:Object,reflect:!0})],$.prototype,`theme`,void 0),e.t([(0,s.property)({type:Array,reflect:!1})],$.prototype,`items`,null),e.t([(0,s.property)({type:Array,reflect:!1,attribute:`initial-items`})],$.prototype,`initialItems`,null),e.t([(0,s.property)({type:Object,reflect:!1})],$.prototype,`renderers`,void 0),e.t([(0,s.property)({type:Object,reflect:!1,attribute:`item-states`})],$.prototype,`itemStates`,null),e.t([(0,s.property)({type:Object,reflect:!1,attribute:`initial-item-states`})],$.prototype,`initialItemStates`,void 0),e.t([(0,s.state)()],$.prototype,`_initialized`,void 0),e.t([(0,s.query)(`.grid-stack`)],$.prototype,`_gridElement`,void 0),e.t([(0,s.queryAll)(`.luzmo-item-grid-item`)],$.prototype,`_gridItemElements`,void 0),e.t([(0,s.state)()],$.prototype,`_internalItemsVersion`,void 0),customElements.get(`luzmo-item-grid`)||customElements.define(`luzmo-item-grid`,$),customElements.get(`luzmo-item-grid-item-actions-menu`)||customElements.define(`luzmo-item-grid-item-actions-menu`,Ls),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Ls}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return $}});
320
+ `,this._internalItemStates={},this._initialItemStatesApplied=!1,this._internalItems=[],this._initialItemsApplied=!1,this._hasWarnedControlledAndInitialItems=!1,this._hasWarnedIgnoredInitialItems=!1,this._suppressItemStatesEvent=!1,this._suppressNextLayoutChangedEvent=!1,this._hasWarnedControlledAndInitialStates=!1,this._internalItemsVersion=0,this._handleMouseout=e=>{if(this.viewMode)return;let t=Ui(e.target);t&&Wi({event:e,gridItem:t})&&this._removeItemActionsMenuPopover(t)},this._handleKeyDown=e=>{let t=Jo({event:e,viewMode:this.viewMode,focusedItemElement:this._focusedItemElement,activeItemElement:this._activeItemElement,gridElement:this._gridElement,grid:this._grid,columns:this.columns??48,onDeleteRequest:e=>{let t=e.getAttribute(`gs-id`);if(!t)return;let n=this._effectiveItems,r=n.find(e=>e.id===t);if(!r)return;this._isControlled||this._clearGridItemUiStateForDelete(e);let i=n.filter(e=>e.id!==t);Bi({target:this,action:`delete`,actionType:`button`,active:!1,items:n,element:e,itemId:t,item:r,updatedItems:i}),this._isItemsControlled||this._setInternalItems(i,{reconcileStates:!0})},removeItemActionsMenuPopover:this._removeItemActionsMenuPopover.bind(this),createItemActionsMenuPopover:this._createItemActionsMenuPopover.bind(this)});this._focusedItemElement=t.focusedItemElement,this._activeItemElement=t.activeItemElement},this._handleFocus=e=>{this._focusedItemElement=Gi({event:e,focusedItemElement:this._focusedItemElement,removeItemActionsMenuPopover:this._removeItemActionsMenuPopover.bind(this)})},this._handleBlur=e=>{let t=Ki({event:e,focusedItemElement:this._focusedItemElement,removeItemActionsMenuPopover:this._removeItemActionsMenuPopover.bind(this)});this._focusedItemElement=t.focusedItemElement,t.shouldFocusGrid&&this._gridElement.focus()},this._handleGridClick=e=>{if(this._isControlled){this._emitControlledClickAwayDeactivation(e);return}let t=Yi({event:e,gridElement:this._gridElement,hostElement:this,items:this.items,activeItemActionToggle:this._activeItemActionToggle,cleanupActiveItem:this._cleanupActiveItem.bind(this),dispatchItemActionEvent:this._dispatchItemActionEvent.bind(this)});this._activeItemActionToggle=t.activeItemActionToggle},this._handleAction=e=>{let t=e.detail,n=e.target?.closest(`.grid-stack-item`),r=n?.getAttribute(`gs-id`);if([`delete`,`clone`].includes(t.action)){if(e.stopPropagation(),!r)return;let i=this._effectiveItems,a=i.find(e=>e.id===r);if(!a)return;let o=this._gridElement.querySelector(`.grid-stack-item[active]`)??this._activeItemElement;if(!this._isControlled&&o&&o!==n){let e=o.getAttribute(`gs-id`),t=i.find(t=>t.id===e),n=this._activeItemActionToggle,r=o;this._cleanupActiveItem(o),n&&e&&t&&this._dispatchItemActionEvent(n,`toggle`,!1,r,e,t),this._activeItemElement=void 0,this._activeItemActionToggle=void 0,this._internalItemStates={}}if(t.action===`delete`){this._isControlled||this._clearGridItemUiStateForDelete(n);let e=i.filter(e=>e.id!==r);Bi({target:this,action:`delete`,actionType:t.type,active:t.active,items:i,element:n,itemId:r,item:a,updatedItems:e}),this._isItemsControlled||this._setInternalItems(e,{reconcileStates:!0})}else{let e={...structuredClone(a),id:_()},r=this._simulateCloneLayout(e,a),o=r.find(t=>t.id===e.id)??e;Bi({target:this,action:`clone`,actionType:t.type,active:t.active,items:i,element:n,itemId:e.id,item:o,originalElement:n,updatedItems:r}),this._isItemsControlled||this._setInternalItems(r,{reconcileStates:!0})}return}if(this._isControlled){if(e.stopPropagation(),!r)return;let i=this.items.find(e=>e.id===r);if(t.type===`toggle`){let e=this._effectiveItemStates,n=t.active,i=this._computeNextItemStates(r,t.action,n);B({target:this,itemStates:e,updatedItemStates:i,changedItemStates:{[r]:[t.action]}})}else Bi({target:this,action:t.action,actionType:t.type,active:t.active,items:this.items,element:n,itemId:r,item:i});n&&!n.hasAttribute(`active`)&&this._removeItemActionsMenuPopover(n);return}this._suppressItemStatesEvent=!0;let i=Ji({event:e,gridElement:this._gridElement,items:this.items,state:{activeItemElement:this._activeItemElement,activeItemActionToggle:this._activeItemActionToggle},cleanupActiveItem:this._cleanupActiveItem.bind(this),dispatchItemActionEvent:this._dispatchItemActionEvent.bind(this),createItemActionsMenuPopover:this._createItemActionsMenuPopover.bind(this)});if(this._suppressItemStatesEvent=!1,this._activeItemElement=i.activeItemElement,this._activeItemActionToggle=i.activeItemActionToggle,t.type===`toggle`&&r){let e=this._effectiveItemStates,a=i.activeItemElement===n&&i.activeItemActionToggle===t.action,o=this._computeNextItemStates(r,t.action,a);this._internalItemStates=o,B({target:this,itemStates:e,updatedItemStates:o,changedItemStates:this._diffItemStates(e,o)})}}}static get styles(){return[(0,o.unsafeCSS)(Li),(0,o.unsafeCSS)(Rs)]}set items(e){let t=this._items,n=structuredClone(e??[]);this._validateItemsHaveIds(n,`items`),this._items=n,this._hasControlledItems=e!==void 0,this._isItemsControlled&&!this._hasControlledItems&&(this._setInternalItems(t,{reconcileStates:!0}),this._initialItemsApplied=!0),this.requestUpdate(`items`,t)}get items(){return this._effectiveItems}set initialItems(e){let t=this._initialItems,n=structuredClone(e??[]);this._validateItemsHaveIds(n,`initialItems`),!(!this._isItemsControlled&&this._initialItemsApplied)&&(this._initialItems=n,this._isItemsControlled||(this._initialItemsApplied=!1),this.requestUpdate(`initialItems`,t))}get initialItems(){return this._initialItems}set itemStates(e){let t=this._itemStates;this._itemStates=e??void 0,this.requestUpdate(`itemStates`,t)}get itemStates(){return this._itemStates}get _isControlled(){return this.itemStates!==void 0}get _isItemsControlled(){return this._hasControlledItems}get _effectiveItems(){return this._isItemsControlled?this._items:this._internalItems}get _effectiveItemStates(){return this._isControlled?this.itemStates:this._internalItemStates}_validateItemsHaveIds(e,t){for(let n=0;n<e.length;n+=1)if(!e[n]?.id)throw Error(`luzmo-item-grid: ${t}[${n}] is missing required id`)}async _loadTheme(e){let t=this._initialized;if(this._fullTheme=await ts({theme:e,currentTheme:this._fullTheme}),this._initialized&&ss(this.style,this._fullTheme),!this._initialized&&this._gridElement&&await new Promise(e=>{requestAnimationFrame(()=>{this._initializeGrid(),e()})}),this._grid){let[e,t]=ns(this.theme);this._grid.margin([e,t].join(` `))}t&&this.requestUpdate()}firstUpdated(){document.addEventListener(`click`,this._handleGridClick),this.addEventListener(`keydown`,this._handleKeyDown)}disconnectedCallback(){super.disconnectedCallback(),this._cleanup(),document.removeEventListener(`click`,this._handleGridClick),this.removeEventListener(`keydown`,this._handleKeyDown)}willUpdate(e){if(super.willUpdate(e),e.has(`_initialized`)&&(ss(this.style,this._fullTheme),this._initialized&&this._grid&&this._fullTheme?.margins)){let[e,t]=ns(this._fullTheme);this._grid.margin([e,t].join(` `))}}updated(e){super.updated(e);let t=e.has(`contentLanguage`),n=e.has(`viewMode`),r=e.has(`items`),i=e.has(`initialItems`),a=r||e.has(`_internalItemsVersion`),o=e.has(`theme`),s=e.has(`itemStates`);this._isItemsControlled&&this.initialItems&&this.initialItems.length>0?this._hasWarnedControlledAndInitialItems||=(console.warn(`luzmo-item-grid: Both items and initialItems are set. The component will be treated as controlled (initialItems is ignored).`),!0):this._hasWarnedControlledAndInitialItems=!1,!this._initialItemsApplied&&!this._isItemsControlled&&this._initialItems.length>0?(this._setInternalItems(this._initialItems,{reconcileStates:!0}),this._initialItemsApplied=!0):i&&!this._isItemsControlled&&this._initialItems.length===0&&!this._initialItemsApplied&&(this._setInternalItems([],{reconcileStates:!0}),this._initialItemsApplied=!0),this.itemStates!==void 0&&this.initialItemStates!==void 0?this._hasWarnedControlledAndInitialStates||=(console.warn(`luzmo-item-grid: Both itemStates and initialItemStates are set. The component will be treated as controlled (initialItemStates is ignored).`),!0):this._hasWarnedControlledAndInitialStates=!1,!this._initialItemStatesApplied&&this.initialItemStates&&!this._isControlled&&(this._internalItemStates=this._sanitizeInitialItemStates(this.initialItemStates),this._initialItemStatesApplied=!0),$i(this._effectiveItems),Ps({initialized:this._initialized,grid:this._grid,hasItemsChanged:a,gridItemElements:this._gridItemElements,items:this._effectiveItems}),r&&this._reconcileStaleItemStates(),t&&Ri(this._gridItemElements,this.contentLanguage),this._activeItemElement=Fs({initialized:this._initialized,grid:this._grid,hasViewModeChanged:n,viewMode:this.viewMode,previousViewMode:e.get(`viewMode`),activeItemElement:this._activeItemElement,gridElement:this._gridElement,cleanupActiveItem:this._cleanupActiveItem.bind(this)}),(o||!this._fullTheme&&!this._initialized)&&this._loadTheme(this.theme),(a||s)&&this._initialized&&this._applyItemStates()}_setInternalItems(e,t={}){let n=structuredClone(e);this._validateItemsHaveIds(n,`internalItems`),this._internalItems=n,$i(this._internalItems),this._internalItemsVersion+=1,t.reconcileStates&&this._reconcileStaleItemStates()}_handleMouseover(e){if(this.viewMode)return;let t=Ui(e.target);t&&this._createItemActionsMenuPopover(t)}_emitControlledClickAwayDeactivation(e){let t=this._effectiveItemStates,n=Object.entries(t).filter(([,e])=>e.length>0);if(!this._gridElement||n.length===0)return;let r=e.composedPath();if(n.some(([e])=>{let t=Array.from(this._gridElement.querySelectorAll(`.grid-stack-item`)).find(t=>t.getAttribute(`gs-id`)===e);if(!t)return!1;if(r.includes(t))return!0;let n=t.querySelector(`.grid-item-actions-popover`);return n?r.includes(n):!1}))return;let i={},a={...t};for(let[e,t]of n){for(let n of t)a=this._computeNextItemStates(e,n,!1,a);i[e]=[...t]}B({target:this,itemStates:t,updatedItemStates:a,changedItemStates:i})}_cleanupActiveItem(e){this._activeItemElement=qi({item:e,activeItemElement:this._activeItemElement,gridElement:this._gridElement,removeItemActionsMenuPopover:this._removeItemActionsMenuPopover.bind(this)})}_clearGridItemUiStateForDelete(e){e.hasAttribute(`focused`)&&e.removeAttribute(`focused`),e.hasAttribute(`active`)&&e.removeAttribute(`active`),this._removeItemActionsMenuPopover(e),this._focusedItemElement===e&&(this._focusedItemElement=void 0),this._activeItemElement===e&&(this._activeItemElement=void 0,this._activeItemActionToggle=void 0),this._gridElement.querySelector(`.grid-stack-item[active]`)||this._gridElement.removeAttribute(`has-active-item`)}_dispatchItemActionEvent(e,t,n,r,i,a,o,s){if(Bi({target:this,action:e,actionType:t,active:n,items:this.items,element:r,itemId:i,item:a,deletedId:o,originalElement:s}),t===`toggle`&&!this._suppressItemStatesEvent){let t=this._effectiveItemStates,r=this._computeNextItemStates(i,e,n);this._isControlled||(this._internalItemStates=r),B({target:this,itemStates:t,updatedItemStates:r,changedItemStates:{[i]:[e]}})}}_sanitizeInitialItemStates(e){let t=Object.entries(e).filter(([,e])=>e.length>0),n=t.length,r=t.reduce((e,[,t])=>e+t.length,0);if(n>1||r>1){console.warn(`luzmo-item-grid: initialItemStates contains multiple items or actions. In uncontrolled mode, only one item with one active action is supported at a time. Only the first item and its first action will be applied. Use controlled mode (itemStates) for multiple simultaneous active items.`);let[e,n]=t[0];return{[e]:[n[0]]}}return{...e}}_diffItemStates(e,t){let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let i of r){let r=e[i]??[],a=t[i]??[],o=a.filter(e=>!r.includes(e)),s=r.filter(e=>!a.includes(e)),c=[...o,...s];c.length>0&&(n[i]=c)}return n}_computeNextItemStates(e,t,n,r){if(!this._isControlled)return n?{[e]:[t]}:{};let i={...r??this._effectiveItemStates};if(n){let n=i[e]??[];n.includes(t)||(i[e]=[...n,t])}else{let n=i[e];if(n){let r=n.filter(e=>e!==t);r.length===0?delete i[e]:i[e]=r}}return i}_filterItemStatesToExistingItems(e){let t=new Set(this.items.map(e=>e.id).filter(e=>!!e)),n={};for(let[r,i]of Object.entries(e))!t.has(r)||i.length===0||(n[r]=[...i]);return n}_reconcileStaleItemStates(){let e=this._isControlled?this._effectiveItemStates:this._internalItemStates,t=this._filterItemStatesToExistingItems(e),n={};for(let[r,i]of Object.entries(e))!t[r]&&i.length>0&&(n[r]=[...i]);Object.keys(n).length>0&&B({target:this,itemStates:e,updatedItemStates:t,changedItemStates:n}),this._isControlled||(this._internalItemStates=t)}_simulateCloneLayout(e,t){let n=this._effectiveItems;if(!this._grid)return[...n,e];let r=e.position??this._resolvePositionFromEngine(t.id);if(!r)return[...n,e];e={...e,position:{...r}};let i=t.position??this._resolvePositionFromEngine(t.id);this.clonedItemPositioning===`below-item`&&i&&(e.position={...e.position,col:i.col,row:i.row+i.sizeY});let a=this.clonedItemPositioning!==`below-item`||!i,{updatedItems:o}=aa({item:e,engine:this._grid.engine,existingItems:this._enrichItemsWithEnginePositions(n),autoPosition:a});return o}_cleanup(){for(let e of this._gridItemElements)this._cleanupActiveItem(e);this._grid&&=(this._grid.destroy(),void 0),this._initialized=!1}_restoreItemsLayout(e){if(!this._grid||!this._gridElement||e.length===0||!this._isItemsControlled)return;let t=[];for(let n of e){if(!n.id)continue;let e=this._effectiveItems.find(e=>e.id===n.id);if(!e)continue;let r=e.position??this._resolvePositionFromEngine(e.id);if(!r)continue;let i=this._gridElement.querySelector(`.grid-stack-item[gs-id="${e.id}"]`);i&&(n.x!==r.col||n.y!==r.row||n.w!==r.sizeX||n.h!==r.sizeY)&&t.push({element:i,position:r})}if(t.length!==0){this._suppressNextLayoutChangedEvent=!0,this._grid.batchUpdate();for(let e of t)this._grid.update(e.element,{x:e.position.col,y:e.position.row,w:e.position.sizeX,h:e.position.sizeY});this._grid.batchUpdate(!1),setTimeout(()=>{this._suppressNextLayoutChangedEvent&&=!1},0)}}_initializeGrid(){this._initialized||!this._gridElement||(this._grid=As({gridElement:this._gridElement,gridItemElements:this._gridItemElements,items:this._effectiveItems,columns:this.columns??48,rowHeight:this.rowHeight??16,viewMode:this.viewMode,fullTheme:this._fullTheme,onCreateOrUpdateDimensionsHint:this._createOrUpdateDimensionsHint.bind(this),onRemoveDimensionsHint:this._removeDimensionsHint.bind(this),onChange:e=>{if(this._suppressNextLayoutChangedEvent){this._suppressNextLayoutChangedEvent=!1;return}let t=this._effectiveItems,n=js(t,e);this._isItemsControlled||this._setInternalItems(n,{reconcileStates:!0}),Vi({target:this,eventName:`luzmo-item-grid-layout-changed`,detail:{element:this._gridElement,grid:this._grid,items:t,updatedItems:n}}),this._restoreItemsLayout(e)}}),this._initialized=!0,Vi({target:this,eventName:`luzmo-item-grid-ready`,detail:{element:this._gridElement,grid:this._grid,items:this._effectiveItems}}),this._applyItemStates())}_applyItemStates(){let e=this._filterItemStatesToExistingItems(this._effectiveItemStates),t=new Set(Object.entries(e).filter(([,e])=>e.length>0).map(([e])=>e)),n=[],r=this._gridElement?.querySelectorAll(`.grid-stack-item[active]`);if(r)for(let e of r){let n=e.getAttribute(`gs-id`);(!n||!t.has(n))&&(e.removeAttribute(`active`),this._removeItemActionsMenuPopover(e))}if(this._activeItemElement=void 0,this._activeItemActionToggle=void 0,t.size===0){this._gridElement?.removeAttribute(`has-active-item`);return}for(let[t,r]of Object.entries(e)){if(r.length===0)continue;let e=this.getGridItemById(t);if(!e?.element)continue;let i=e.element;i.setAttribute(`active`,`true`),this._gridElement?.setAttribute(`has-active-item`,`true`),this._createItemActionsMenuPopover(i,r);for(let e of r)n.push({element:i,action:e})}if(n.length===0){this._gridElement?.removeAttribute(`has-active-item`),this._activeItemElement=void 0,this._activeItemActionToggle=void 0;return}n.length===1?(this._activeItemElement=n[0].element,this._activeItemActionToggle=n[0].action):(this._activeItemElement=void 0,this._activeItemActionToggle=void 0)}_createOrUpdateDimensionsHint(e,t,n){Ms({element:e,numberOfColumns:t,numberOfRows:n,offsetHint:rs(this.theme)})}_removeDimensionsHint(e){Ns(e)}get grid(){return this._grid}get gridItems(){return ia(this.items,this._gridElement)}registerRenderer(e,t){this.renderers={...this.renderers,[e]:t}}_renderOverlayContent(e,t){return ls({item:e,activeActions:t,defaultItemActionsMenu:this.defaultItemActionsMenu,placementItemActionsMenu:this.placementItemActionsMenu,language:this.language,handleAction:this._handleAction,itemActionsDocumentPopover:this.itemActionsDocumentPopover})}_createItemActionsMenuPopover(e,t){Wo({element:e,activeActions:t,getGridItemById:this.getGridItemById.bind(this),placementItemActionsMenu:this.placementItemActionsMenu,renderOverlayContent:this._renderOverlayContent.bind(this),removeItemActionsMenuPopover:this._removeItemActionsMenuPopover.bind(this),itemActionsDocumentPopover:this.itemActionsDocumentPopover})}_removeItemActionsMenuPopover(e){Go(e)}getGridItemById(e){return this.gridItems.find(t=>t.item.id===e)}scrollToItem(e){let t=this.getGridItemById(e);if(!t?.element)return;let n=t.element.getBoundingClientRect();(n.bottom>window.innerHeight||n.top<0)&&t.element.scrollIntoView({behavior:`smooth`,block:`center`})}_createMissingItemError(e){return Error(`Grid item with id "${e}" not found`)}_requireGridItem(e){let t=this._effectiveItems.find(t=>t.id===e);if(!t)throw this._createMissingItemError(e);return t}_resolvePositionFromEngine(e){let t=this._grid?.engine.nodes.find(t=>t.id===e);if(!(!t||t.x==null||t.y==null||t.w==null||t.h==null))return{col:t.x,row:t.y,sizeX:t.w,sizeY:t.h}}_requireGridItemWithPosition(e){let t=this._requireGridItem(e);if(!t.position){let n=this._resolvePositionFromEngine(e);if(!n)throw Error(`Grid item with id "${e}" does not have a position`);return{...t,position:n}}return t}_assertAddItemHasId(e){if(!e.id)throw Error(`addGridItem requires newItem.id`)}addGridItem(e){if(this._assertAddItemHasId(e),this._effectiveItems.some(t=>t.id===e.id))throw Error(`addGridItem rejected: an item with id "${e.id}" already exists`);let t=sa(e),n=this._effectiveItems;if(!this._grid){let r=e.position?.col==null||e.position?.row==null?{...t,position:void 0}:t,i=[...n,r];return this._isItemsControlled||this._setInternalItems(i,{reconcileStates:!0}),i}if(!t.position){let e=[...n,t];return this._isItemsControlled||this._setInternalItems(e,{reconcileStates:!0}),e}let r=e.position?.col==null||e.position?.row==null,{updatedItems:i}=aa({item:t,engine:this._grid.engine,existingItems:n,autoPosition:r});return this._isItemsControlled||this._setInternalItems(i,{reconcileStates:!0}),i}_enrichItemsWithEnginePositions(e){return this._grid?e.map(e=>{if(e.position)return e;let t=this._resolvePositionFromEngine(e.id);return t?{...e,position:t}:e}):e}_updateGridItemPosition(e,t){let n=this._effectiveItems,r=this._requireGridItemWithPosition(e);return n.map(n=>{if(n.id!==e)return n;let i=n.position??r.position;return{...n,position:{...i,...t}}})}_dispatchLayoutChangedEvent(e,t){Vi({target:this,eventName:`luzmo-item-grid-layout-changed`,detail:{element:this._gridElement,grid:this._grid,items:e,updatedItems:t}})}_updateItemField(e,t){let n=this._effectiveItems;this._requireGridItem(e);let r=n.map(n=>n.id===e?{...n,...t}:n);return this._isItemsControlled||this._setInternalItems(r,{reconcileStates:!0}),r}removeGridItem(e){let t=this._effectiveItems,n=this._requireGridItem(e),r=t.filter(t=>t.id!==e);return Bi({target:this,action:`delete`,actionType:`button`,active:!1,items:t,element:this.getGridItemById(e)?.element??this,itemId:e,item:n,updatedItems:r}),this._isItemsControlled||this._setInternalItems(r,{reconcileStates:!0}),r}cloneGridItem(e){let t=this._effectiveItems,n=this._requireGridItem(e),r={...structuredClone(n),id:_()},i=this._simulateCloneLayout(r,n),a=i.find(e=>e.id===r.id)??r;return Bi({target:this,action:`clone`,actionType:`button`,active:!1,items:t,element:this.getGridItemById(e)?.element??this,itemId:r.id,item:a,originalElement:this.getGridItemById(e)?.element,updatedItems:i}),this._isItemsControlled||this._setInternalItems(i,{reconcileStates:!0}),i}updateGridItemPosition(e,t){let n=this._updateGridItemPosition(e,t);return this._dispatchLayoutChangedEvent(this._effectiveItems,n),this._isItemsControlled||this._setInternalItems(n,{reconcileStates:!0}),n}updateGridItemSize(e,t){let n=this._updateGridItemPosition(e,t);return this._dispatchLayoutChangedEvent(this._effectiveItems,n),this._isItemsControlled||this._setInternalItems(n,{reconcileStates:!0}),n}updateGridItemSlots(e,t){return this._updateItemField(e,{slots:t})}updateGridItemOptions(e,t){return this._updateItemField(e,{options:t})}updateGridItemFilters(e,t){return this._updateItemField(e,{filters:t})}updateGridItemType(e,t){return this._updateItemField(e,{type:t})}updateGridItem(e,t){let n=this._effectiveItems;this._requireGridItem(e);let{position:r,...i}=t,a;return r&&this._grid?(a=oa({itemId:e,patch:r,engine:this._grid.engine,existingItems:this._enrichItemsWithEnginePositions(n)}),a=a.map(t=>t.id===e?{...t,...i}:t)):a=n.map(t=>t.id===e?{...t,...i,...r&&t.position?{position:{...t.position,...r}}:r?{position:r}:{}}:t),t.position&&this._dispatchLayoutChangedEvent(n,a),this._isItemsControlled||this._setInternalItems(a,{reconcileStates:!0}),a}async triggerItemAction(e,t,n){await this.updateComplete;let r=this.getGridItemById(e);if(!r?.element){console.warn(`Grid item with id "${e}" not found`);return}if(this._isControlled)return this._triggerControlledItemAction(e,t,n);this._suppressItemStatesEvent=!0;let i=Xi({gridElement:this._gridElement,items:this.items,gridItemData:r,itemId:e,action:t,options:n,state:{activeItemElement:this._activeItemElement,activeItemActionToggle:this._activeItemActionToggle},cleanupActiveItem:this._cleanupActiveItem.bind(this),dispatchItemActionEvent:this._dispatchItemActionEvent.bind(this),createItemActionsMenuPopover:this._createItemActionsMenuPopover.bind(this)});if(this._suppressItemStatesEvent=!1,this._activeItemElement=i.state.activeItemElement,this._activeItemActionToggle=i.state.activeItemActionToggle,i.result!==void 0){let n=this._effectiveItemStates,r=this._computeNextItemStates(e,t,i.result);this._internalItemStates=r,B({target:this,itemStates:n,updatedItemStates:r,changedItemStates:this._diffItemStates(n,r)})}return i.result}activateItemAction(e,t,n){return this.triggerItemAction(e,t,n)}_triggerControlledItemAction(e,t,n){let r=(this._effectiveItemStates[e]??[]).includes(t),i=n?.active??!r;if(n?.active!==void 0&&i===r)return r;let a=this._effectiveItemStates,o=this._computeNextItemStates(e,t,i);return B({target:this,itemStates:a,updatedItemStates:o,changedItemStates:{[e]:[t]}}),i}deactivateItems(){if(this._isControlled){let e=this._effectiveItemStates,t=Object.entries(e).flatMap(([e,t])=>t.map(t=>({itemId:e,action:t})));if(t.length===0)return 0;let n={},r={...e};for(let e of t)r=this._computeNextItemStates(e.itemId,e.action,!1,r),n[e.itemId]=[...n[e.itemId]??[],e.action];return B({target:this,itemStates:e,updatedItemStates:r,changedItemStates:n}),new Set(t.map(e=>e.itemId)).size}let e=this._effectiveItemStates,t=Object.entries(e).flatMap(([e,t])=>t.map(t=>({itemId:e,action:t})));this._suppressItemStatesEvent=!0;let n=Zi({gridElement:this._gridElement,items:this.items,state:{activeItemElement:this._activeItemElement,activeItemActionToggle:this._activeItemActionToggle},cleanupActiveItem:this._cleanupActiveItem.bind(this),dispatchItemActionEvent:this._dispatchItemActionEvent.bind(this)});if(this._suppressItemStatesEvent=!1,this._activeItemElement=n.state.activeItemElement,this._activeItemActionToggle=n.state.activeItemActionToggle,this._isControlled||(this._internalItemStates={}),t.length>0){let n={};for(let e of t)n[e.itemId]=[...n[e.itemId]??[],e.action];B({target:this,itemStates:e,updatedItemStates:{},changedItemStates:n})}return n.deactivatedCount}_renderGrid(){return fs({items:this.items,initialized:this._initialized,viewMode:this.viewMode,contentLanguage:this.contentLanguage,fullTheme:this._fullTheme,appServer:this.appServer,apiHost:this.apiHost,authKey:this.authKey,authToken:this.authToken,columns:this.columns??48,ensureGridItemId:e=>ea(e),handleMouseover:this._handleMouseover.bind(this),handleMouseout:this._handleMouseout,handleFocus:this._handleFocus,handleBlur:this._handleBlur})}render(){return this._renderGrid()}};e.t([(0,s.property)({type:String,attribute:`app-server`,reflect:!0})],$.prototype,`appServer`,void 0),e.t([(0,s.property)({type:String,attribute:`api-host`,reflect:!0})],$.prototype,`apiHost`,void 0),e.t([(0,s.property)({type:String,attribute:`auth-key`,reflect:!0})],$.prototype,`authKey`,void 0),e.t([(0,s.property)({type:String,attribute:`auth-token`,reflect:!0})],$.prototype,`authToken`,void 0),e.t([(0,s.property)({type:Number,attribute:`cache-time`,reflect:!0})],$.prototype,`cacheTime`,void 0),e.t([(0,s.property)({type:String,reflect:!0})],$.prototype,`language`,void 0),e.t([(0,s.property)({type:String,attribute:`content-language`,reflect:!0})],$.prototype,`contentLanguage`,void 0),e.t([(0,s.property)({type:Number,reflect:!0})],$.prototype,`columns`,void 0),e.t([(0,s.property)({type:Number,reflect:!0,attribute:`row-height`})],$.prototype,`rowHeight`,void 0),e.t([(0,s.property)({type:Boolean,reflect:!0,attribute:`view-mode`})],$.prototype,`viewMode`,void 0),e.t([(0,s.property)({type:Boolean,reflect:!0,attribute:`item-actions-document-popover`})],$.prototype,`itemActionsDocumentPopover`,void 0),e.t([(0,s.property)({type:String,reflect:!0,attribute:`placement-item-actions-menu`})],$.prototype,`placementItemActionsMenu`,void 0),e.t([(0,s.property)({type:Array,reflect:!0,attribute:`default-item-actions-menu`})],$.prototype,`defaultItemActionsMenu`,void 0),e.t([(0,s.property)({type:String,reflect:!0,attribute:`cloned-item-positioning`})],$.prototype,`clonedItemPositioning`,void 0),e.t([(0,s.property)({type:Object,reflect:!0})],$.prototype,`theme`,void 0),e.t([(0,s.property)({type:Array,reflect:!1})],$.prototype,`items`,null),e.t([(0,s.property)({type:Array,reflect:!1,attribute:`initial-items`})],$.prototype,`initialItems`,null),e.t([(0,s.property)({type:Object,reflect:!1})],$.prototype,`renderers`,void 0),e.t([(0,s.property)({type:Object,reflect:!1,attribute:`item-states`})],$.prototype,`itemStates`,null),e.t([(0,s.property)({type:Object,reflect:!1,attribute:`initial-item-states`})],$.prototype,`initialItemStates`,void 0),e.t([(0,s.state)()],$.prototype,`_initialized`,void 0),e.t([(0,s.query)(`.grid-stack`)],$.prototype,`_gridElement`,void 0),e.t([(0,s.queryAll)(`.luzmo-item-grid-item`)],$.prototype,`_gridItemElements`,void 0),e.t([(0,s.state)()],$.prototype,`_internalItemsVersion`,void 0),customElements.get(`luzmo-item-grid`)||customElements.define(`luzmo-item-grid`,$),customElements.get(`luzmo-item-grid-item-actions-menu`)||customElements.define(`luzmo-item-grid-item-actions-menu`,Ls),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Ls}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return $}});