@luzmo/analytics-components-kit 1.0.3-beta.10 → 1.0.3-beta.12

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 (240) hide show
  1. package/README.md +320 -11
  2. package/components/ai-chat/ai-chat.d.ts +8 -4
  3. package/components/ai-chat/empty-state/ai-chat-empty-state.d.ts +1 -1
  4. package/components/ai-chat/index.cjs +1 -1
  5. package/components/ai-chat/index.d.ts +1 -1
  6. package/components/ai-chat/index.js +1 -1
  7. package/components/{ai-chat-Du1gOCyo.cjs → ai-chat-8O_eA0_D.cjs} +6 -5
  8. package/components/{ai-chat-BUiqA_bv.js → ai-chat-BYlVFmdP.js} +11 -7
  9. package/components/ai-interaction-textarea/ai-interaction-textarea.d.ts +7 -2
  10. package/components/ai-interaction-textarea/index.cjs +1 -1
  11. package/components/ai-interaction-textarea/index.d.ts +1 -0
  12. package/components/ai-interaction-textarea/index.js +1 -1
  13. package/components/ai-interaction-textarea/types.d.ts +5 -0
  14. package/components/{ai-interaction-textarea-DnM5PwjW.cjs → ai-interaction-textarea-BK25Gh9y.cjs} +3 -3
  15. package/components/{ai-interaction-textarea-Cei62Fen.js → ai-interaction-textarea-KVfak9dJ.js} +6 -3
  16. package/components/data-field/data-field.d.ts +2 -2
  17. package/components/data-field/index.d.ts +1 -0
  18. package/components/data-field-level/data-field-level.d.ts +2 -2
  19. package/components/data-field-panel/data-field-panel.d.ts +3 -3
  20. package/components/data-fields-select/data-fields-select.d.ts +1 -1
  21. package/components/data-fields-select/index.d.ts +1 -0
  22. package/components/data-fields-select/types.d.ts +4 -0
  23. package/components/dataset-selector-list/dataset-selector-list.d.ts +1 -1
  24. package/components/dataset-selector-list/index.d.ts +1 -0
  25. package/components/dataset-selector-row/dataset-selector-row.d.ts +2 -2
  26. package/components/dataset-selector-row/index.d.ts +1 -0
  27. package/components/display-settings/display-settings.d.ts +3 -3
  28. package/components/display-settings/index.d.ts +1 -1
  29. package/components/display-settings/types.d.ts +5 -1
  30. package/components/display-settings-binning/display-settings-binning.d.ts +1 -1
  31. package/components/display-settings-binning/index.d.ts +1 -0
  32. package/components/display-settings-datetime/display-settings-datetime.d.ts +1 -1
  33. package/components/display-settings-datetime/index.d.ts +1 -0
  34. package/components/display-settings-grand-totals/display-settings-grand-totals.d.ts +1 -1
  35. package/components/display-settings-grand-totals/index.d.ts +1 -0
  36. package/components/display-settings-numeric/display-settings-numeric.d.ts +1 -1
  37. package/components/display-settings-numeric/index.d.ts +1 -0
  38. package/components/display-settings-period-over-period/display-settings-period-over-period.d.ts +1 -1
  39. package/components/display-settings-period-over-period/index.d.ts +1 -0
  40. package/components/filters/filters.d.ts +1 -1
  41. package/components/filters/index.d.ts +1 -1
  42. package/components/filters/types.d.ts +4 -0
  43. package/components/formula/index.cjs +1 -1
  44. package/components/formula/index.js +1 -1
  45. package/components/{formula-CB0-0Hfu.js → formula-BZuUMeUb.js} +8 -4
  46. package/components/{formula-codemirror-PraolCXa.js → formula-codemirror-CYBD_5bC.js} +3 -3
  47. package/components/{formula-codemirror-CHAgmjDb.cjs → formula-codemirror-p7ssM_dZ.cjs} +2 -2
  48. package/components/{formula-display-store-lENPCY-p.js → formula-display-store-BtD83k2x.js} +1 -1
  49. package/components/{formula-display-store-ianfhYAz.cjs → formula-display-store-_432SuSV.cjs} +1 -1
  50. package/components/formula-editor/index.cjs +1 -1
  51. package/components/formula-editor/index.js +3 -3
  52. package/components/{formula-editor-BTy_o9zr.js → formula-editor-C1zz5pEL.js} +5 -5
  53. package/components/{formula-editor-CCPiES8u.cjs → formula-editor-DfTDtGC4.cjs} +2 -2
  54. package/components/formula-field/index.cjs +1 -1
  55. package/components/formula-field/index.js +1 -1
  56. package/components/{formula-field-CdwPfr3i.js → formula-field-B2TQe1Z_.js} +1 -1
  57. package/components/{formula-field-DUdeqGIv.cjs → formula-field-Dd1vnGZA.cjs} +1 -1
  58. package/components/{formula-input-base-D40h4WMK.js → formula-input-base-B-Li9TP4.js} +1 -1
  59. package/components/{formula-input-base-Bdy8riVz.cjs → formula-input-base-DjJ2Q4gu.cjs} +1 -1
  60. package/components/formula-u4CxsVki.cjs +45 -0
  61. package/components/{groupings-Cm5tMojA.cjs → groupings-BdNTQMKX.cjs} +1 -1
  62. package/components/{groupings-FgSCJQwV.js → groupings-JilcSOEe.js} +1 -1
  63. package/components/index.cjs +1 -1
  64. package/components/index.js +7 -7
  65. package/components/item-grid/helpers/grid-events.d.ts +1 -1
  66. package/components/item-grid/index.d.ts +1 -0
  67. package/components/item-grid/item-grid.d.ts +4 -4
  68. package/components/item-option/index.d.ts +1 -0
  69. package/components/item-option/item-option.d.ts +1 -0
  70. package/components/item-option/types.d.ts +8 -0
  71. package/components/item-option-action-button-group/index.d.ts +1 -0
  72. package/components/item-option-action-button-group/item-option-action-button-group.d.ts +1 -0
  73. package/components/item-option-color-palette-picker/index.d.ts +1 -0
  74. package/components/item-option-color-palette-picker/item-option-color-palette-picker.d.ts +1 -0
  75. package/components/item-option-color-picker/index.d.ts +1 -0
  76. package/components/item-option-color-picker/item-option-color-picker.d.ts +1 -1
  77. package/components/item-option-color-range/index.d.ts +1 -0
  78. package/components/item-option-color-range/item-option-color-range.d.ts +1 -1
  79. package/components/item-option-multi-language-field/index.d.ts +1 -0
  80. package/components/item-option-multi-language-field/item-option-multi-language-field.d.ts +1 -0
  81. package/components/item-option-number-field/index.d.ts +1 -0
  82. package/components/item-option-number-field/item-option-number-field.d.ts +1 -0
  83. package/components/item-option-panel/index.d.ts +1 -0
  84. package/components/item-option-panel/item-option-panel.d.ts +1 -1
  85. package/components/item-option-picker/index.d.ts +1 -0
  86. package/components/item-option-picker/item-option-picker.d.ts +1 -0
  87. package/components/item-option-position-picker/index.d.ts +1 -0
  88. package/components/item-option-position-picker/item-option-position-picker.d.ts +1 -0
  89. package/components/item-option-positions-number-field/index.d.ts +1 -0
  90. package/components/item-option-positions-number-field/item-option-positions-number-field.d.ts +1 -0
  91. package/components/item-option-radio-button-group/index.d.ts +1 -0
  92. package/components/item-option-radio-button-group/item-option-radio-button-group.d.ts +1 -0
  93. package/components/item-option-slider/index.d.ts +1 -0
  94. package/components/item-option-slider/item-option-slider.d.ts +1 -0
  95. package/components/item-option-switch/index.d.ts +1 -0
  96. package/components/item-option-switch/item-option-switch.d.ts +1 -0
  97. package/components/item-option-text-field/index.d.ts +1 -0
  98. package/components/item-option-text-field/item-option-text-field.d.ts +1 -0
  99. package/components/item-slot-drop/index.d.ts +2 -0
  100. package/components/item-slot-drop/item-slot-drop.d.ts +2 -0
  101. package/components/item-slot-drop-panel/index.d.ts +1 -0
  102. package/components/item-slot-drop-panel/item-slot-drop-panel.d.ts +2 -2
  103. package/components/item-slot-picker/index.d.ts +1 -0
  104. package/components/item-slot-picker/item-slot-picker.d.ts +1 -1
  105. package/components/item-slot-picker-panel/index.d.ts +2 -0
  106. package/components/item-slot-picker-panel/item-slot-picker-panel.d.ts +4 -4
  107. package/components/slot-menu/index.d.ts +1 -0
  108. package/components/slot-menu/slot-menu.d.ts +5 -3
  109. package/components/slot-menu-list/index.d.ts +1 -0
  110. package/components/slot-menu-list/slot-menu-list.d.ts +1 -1
  111. package/components/viz-item-menu/index.d.ts +1 -1
  112. package/components/viz-item-menu/types.d.ts +8 -0
  113. package/components/viz-item-menu/viz-item-menu.d.ts +3 -3
  114. package/custom-elements.json +190 -72
  115. package/package.json +1 -1
  116. package/react/components/ai-chat.component.ts +9 -9
  117. package/react/components/ai-interaction-textarea/index.ts +1 -0
  118. package/react/components/ai-interaction-textarea/types.ts +6 -0
  119. package/react/components/ai-interaction-textarea.component.ts +5 -5
  120. package/react/components/data-field-level.component.ts +5 -5
  121. package/react/components/data-field-panel.component.ts +7 -7
  122. package/react/components/data-field.component.ts +5 -5
  123. package/react/components/data-fields-select/index.ts +1 -0
  124. package/react/components/data-fields-select/types.ts +5 -0
  125. package/react/components/data-fields-select.component.ts +4 -4
  126. package/react/components/dataset-selector-list.component.ts +3 -3
  127. package/react/components/dataset-selector-row.component.ts +5 -5
  128. package/react/components/display-settings/types.ts +7 -1
  129. package/react/components/display-settings-binning.component.ts +3 -3
  130. package/react/components/display-settings-datetime.component.ts +3 -3
  131. package/react/components/display-settings-grand-totals.component.ts +3 -3
  132. package/react/components/display-settings-numeric.component.ts +3 -3
  133. package/react/components/display-settings-period-over-period.component.ts +3 -3
  134. package/react/components/display-settings.component.ts +7 -7
  135. package/react/components/filters/types.ts +6 -0
  136. package/react/components/filters.component.ts +3 -3
  137. package/react/components/item-grid.component.ts +9 -9
  138. package/react/components/item-option/index.ts +1 -0
  139. package/react/components/item-option/types.ts +10 -0
  140. package/react/components/item-option-action-button-group.component.ts +5 -3
  141. package/react/components/item-option-color-palette-picker.component.ts +5 -3
  142. package/react/components/item-option-color-picker.component.ts +4 -4
  143. package/react/components/item-option-color-range.component.ts +4 -4
  144. package/react/components/item-option-multi-language-field.component.ts +5 -3
  145. package/react/components/item-option-number-field.component.ts +5 -3
  146. package/react/components/item-option-panel.component.ts +3 -3
  147. package/react/components/item-option-picker.component.ts +5 -3
  148. package/react/components/item-option-position-picker.component.ts +5 -3
  149. package/react/components/item-option-positions-number-field.component.ts +5 -3
  150. package/react/components/item-option-radio-button-group.component.ts +5 -3
  151. package/react/components/item-option-slider.component.ts +5 -3
  152. package/react/components/item-option-switch.component.ts +5 -3
  153. package/react/components/item-option-text-field.component.ts +5 -3
  154. package/react/components/item-option.component.ts +9 -4
  155. package/react/components/item-slot-drop-panel.component.ts +5 -5
  156. package/react/components/item-slot-drop.component.ts +7 -5
  157. package/react/components/item-slot-picker-panel.component.ts +9 -9
  158. package/react/components/item-slot-picker.component.ts +3 -3
  159. package/react/components/slot-menu-list.component.ts +3 -3
  160. package/react/components/slot-menu.component.ts +13 -11
  161. package/react/components/viz-item-menu/types.ts +10 -0
  162. package/react/components/viz-item-menu.component.ts +9 -9
  163. package/react/esm/components/ai-chat.component.d.ts +5 -5
  164. package/react/esm/components/ai-interaction-textarea/index.d.ts +1 -0
  165. package/react/esm/components/ai-interaction-textarea/index.js +1 -0
  166. package/react/esm/components/ai-interaction-textarea/types.d.ts +5 -0
  167. package/react/esm/components/ai-interaction-textarea/types.js +1 -0
  168. package/react/esm/components/ai-interaction-textarea.component.d.ts +3 -3
  169. package/react/esm/components/data-field-level.component.d.ts +3 -7
  170. package/react/esm/components/data-field-panel.component.d.ts +4 -4
  171. package/react/esm/components/data-field.component.d.ts +3 -7
  172. package/react/esm/components/data-fields-select/index.d.ts +1 -0
  173. package/react/esm/components/data-fields-select/index.js +1 -0
  174. package/react/esm/components/data-fields-select/types.d.ts +4 -0
  175. package/react/esm/components/data-fields-select/types.js +1 -0
  176. package/react/esm/components/data-fields-select.component.d.ts +3 -3
  177. package/react/esm/components/data-fields-select.component.js +1 -1
  178. package/react/esm/components/dataset-selector-list.component.d.ts +2 -2
  179. package/react/esm/components/dataset-selector-row.component.d.ts +3 -3
  180. package/react/esm/components/display-settings/types.d.ts +5 -1
  181. package/react/esm/components/display-settings-binning.component.d.ts +2 -2
  182. package/react/esm/components/display-settings-datetime.component.d.ts +2 -2
  183. package/react/esm/components/display-settings-grand-totals.component.d.ts +2 -2
  184. package/react/esm/components/display-settings-numeric.component.d.ts +2 -2
  185. package/react/esm/components/display-settings-period-over-period.component.d.ts +2 -2
  186. package/react/esm/components/display-settings.component.d.ts +4 -4
  187. package/react/esm/components/filters/types.d.ts +4 -0
  188. package/react/esm/components/filters.component.d.ts +2 -2
  189. package/react/esm/components/item-grid.component.d.ts +5 -5
  190. package/react/esm/components/item-option/index.d.ts +1 -0
  191. package/react/esm/components/item-option/index.js +1 -0
  192. package/react/esm/components/item-option/types.d.ts +8 -0
  193. package/react/esm/components/item-option/types.js +1 -0
  194. package/react/esm/components/item-option-action-button-group.component.d.ts +4 -2
  195. package/react/esm/components/item-option-action-button-group.component.js +2 -0
  196. package/react/esm/components/item-option-color-palette-picker.component.d.ts +4 -2
  197. package/react/esm/components/item-option-color-palette-picker.component.js +2 -0
  198. package/react/esm/components/item-option-color-picker.component.d.ts +3 -3
  199. package/react/esm/components/item-option-color-picker.component.js +1 -1
  200. package/react/esm/components/item-option-color-range.component.d.ts +3 -3
  201. package/react/esm/components/item-option-color-range.component.js +1 -1
  202. package/react/esm/components/item-option-multi-language-field.component.d.ts +4 -2
  203. package/react/esm/components/item-option-multi-language-field.component.js +2 -0
  204. package/react/esm/components/item-option-number-field.component.d.ts +4 -2
  205. package/react/esm/components/item-option-number-field.component.js +2 -0
  206. package/react/esm/components/item-option-panel.component.d.ts +2 -2
  207. package/react/esm/components/item-option-picker.component.d.ts +4 -2
  208. package/react/esm/components/item-option-picker.component.js +2 -0
  209. package/react/esm/components/item-option-position-picker.component.d.ts +4 -2
  210. package/react/esm/components/item-option-position-picker.component.js +2 -0
  211. package/react/esm/components/item-option-positions-number-field.component.d.ts +4 -2
  212. package/react/esm/components/item-option-positions-number-field.component.js +2 -0
  213. package/react/esm/components/item-option-radio-button-group.component.d.ts +4 -2
  214. package/react/esm/components/item-option-radio-button-group.component.js +2 -0
  215. package/react/esm/components/item-option-slider.component.d.ts +4 -2
  216. package/react/esm/components/item-option-slider.component.js +2 -0
  217. package/react/esm/components/item-option-switch.component.d.ts +4 -2
  218. package/react/esm/components/item-option-switch.component.js +2 -0
  219. package/react/esm/components/item-option-text-field.component.d.ts +4 -2
  220. package/react/esm/components/item-option-text-field.component.js +2 -0
  221. package/react/esm/components/item-option.component.d.ts +7 -3
  222. package/react/esm/components/item-option.component.js +5 -1
  223. package/react/esm/components/item-slot-drop-panel.component.d.ts +3 -3
  224. package/react/esm/components/item-slot-drop.component.d.ts +5 -3
  225. package/react/esm/components/item-slot-drop.component.js +2 -0
  226. package/react/esm/components/item-slot-picker-panel.component.d.ts +5 -5
  227. package/react/esm/components/item-slot-picker.component.d.ts +2 -2
  228. package/react/esm/components/slot-menu-list.component.d.ts +2 -2
  229. package/react/esm/components/slot-menu.component.d.ts +8 -6
  230. package/react/esm/components/slot-menu.component.js +2 -0
  231. package/react/esm/components/viz-item-menu/types.d.ts +8 -0
  232. package/react/esm/components/viz-item-menu.component.d.ts +6 -6
  233. package/react/esm/components/viz-item-menu.component.js +2 -2
  234. package/react/esm/types.d.ts +3 -0
  235. package/react/luzmo-stub.d.ts +57 -36
  236. package/react/types.ts +3 -0
  237. package/types/ai-chat.types.d.ts +11 -0
  238. package/types/slot.types.d.ts +10 -0
  239. package/types.d.ts +3 -0
  240. package/components/formula-CHD4rr5_.cjs +0 -41
@@ -17,4 +17,4 @@
17
17
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18
18
  * SOFTWARE.
19
19
  * */
20
- const e=require("./base-CHERUz8a.cjs"),t=require("./decorate-DCJt-2rt.cjs"),n=require("./localized-mixin-2FpAMHwf.cjs"),r=require("./load-data-fields-for-datasets-BVGaku2J.cjs");let i=require("lit/decorators.js"),a=require("@lit/localize");var o=function(e){return e.GROUP=``,e.GROUPFULL=`GROUPFULL`,e.GROUPINEX=`GROUPINEX`,e}({}),s=String.raw`[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}`,c=RegExp(`##EMPTYARG-(${s})##|{(${s}:${s})}|##AGGR-(${s})##`,`gm`),l=RegExp(`##EMPTYARG-(${s})##|{(${s}:${s})}`,`gm`),u=/((GROUPFULL|GROUPINEX)\()?(AVG|COUNT|COUNTD|COUNTR|MAX|MIN|SUM)\(/m,d=/(AVG|COUNT|COUNTD|MAX|MIN|SUM)\(\)/m,f=RegExp(`##AGGR-(${s})##`,`m`),p=/\[(.*?)\]/gm,m=RegExp(`{(${s}:${s})}`,`gm`);function h(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)})}function g(){return`##EMPTYARG-${h()}##`}function _(e){return`##AGGR-${e}##`}function v(e,t){let{aggregationFunction:n,content:r,grouping:i,includedColumns:a,excludedColumns:s}=e??{},c=`${n}(${t[n]?.arity>0?r:``})`;switch(i){case o.GROUPFULL:return`GROUPFULL(${c})`;case o.GROUPINEX:return`GROUPINEX(${c}, [${a?.map(e=>`{${e}}`).join(`, `)||``}], [${s?.map(e=>`{${e}}`).join(`, `)||``}])`;default:return c}}function y(e){let t=e.split(``),n=null;for(let e=0;e<t.length;e++){let r=t[e];n?r===n?n=null:t[e]=` `:(r===`'`||r===`"`)&&(n=r)}return t.join(``)}function b(e,t=0){let n=0,r=-1,i=null;for(let a=t,o=e.length;a<o;a++){let t=e[a];if(i){t===i&&(i=null);continue}if(t===`'`||t===`"`)i=t;else if(t===`(`)n++;else if(t===`)`){if(n===0){r=a;break}n--}}return r}function x(e){let t=e.match(p),n=t?.[0],r=t?.[1];return{includedColumns:n?.match(m)?.map(e=>e.slice(1,-1))??[],excludedColumns:r?.match(m)?.map(e=>e.slice(1,-1))??[]}}function S(e=`light`){return!e||e===`light`?[`#0E89E0`,`#F45000`,`#15BF49`,`#685AC2`,`#636363`]:[`#BDDCF9`,`#FFCFA1`,`#C1F3B7`,`#D7D7EF`,`#D7D7EF`]}function C(e){let t=S(`light`),n=e.length>1;return e.map((e,r)=>{let i=[];return`dataFields`in e&&Array.isArray(e.dataFields)&&e.dataFields.length>0?i=e.dataFields.filter(e=>!!e.columnId):`columns`in e&&Array.isArray(e.columns)&&(i=e.columns.map(t=>({...t,datasetId:e.id}))),{id:e.id,name:e.name,description:`description`in e?e.description:void 0,color:n?t[r%t.length]:void 0,columns:i}})}var w=!1,T;async function E(){if(!w){T??=Promise.resolve().then(()=>require("./formula-codemirror-CHAgmjDb.cjs"));try{await T,w=!0}catch(e){throw T=void 0,e}}}function D(){return w}var O=class extends n.t(e.n(e.i,{validSizes:[`s`,`m`,`l`,`xl`]})){constructor(){super(),this.expression=``,this.datasetsDataFields=[],this.datasetIds=[],this.apiUrl=`https://api.luzmo.com`,this.showAggregations=!0,this.contentLanguage=`en`,this.multiStageAggregation=!0,this.nestedAggregation=!0,this._datasets=[],this._codeMirrorLoaded=D(),this._rootContent=``,this._lastEmittedExpression=null,this._applyingExternalExpression=!1,this._handleWidgetsChanged=()=>{this._recomputeExpression()},this._store=this._createStore()}connectedCallback(){super.connectedCallback(),this._store.addEventListener(`widgets-changed`,this._handleWidgetsChanged)}disconnectedCallback(){super.disconnectedCallback(),this._store.removeEventListener(`widgets-changed`,this._handleWidgetsChanged),this._emitTimer&&clearTimeout(this._emitTimer)}firstUpdated(e){super.firstUpdated(e),this._pushRootContent()}updated(e){super.updated(e),e.has(`_codeMirrorLoaded`)&&this._codeMirrorLoaded&&this._pushRootContent()}_pushRootContent(){this._rootContent&&this._codeMirrorElement?.setContent(this._rootContent)}get _codeMirrorElement(){return this.renderRoot?.querySelector(`luzmo-formula-codemirror`)}async _ensureCodeMirrorLoaded(){this._codeMirrorLoaded||=(await E(),!0)}willUpdate(e){super.willUpdate(e),this._shouldLoadInput()&&this._ensureCodeMirrorLoaded(),(e.has(`multiStageAggregation`)||e.has(`nestedAggregation`)||e.has(`contentLanguage`)||e.has(`size`))&&(this._store.multiStageAggregation=this.multiStageAggregation,this._store.nestedAggregation=this.nestedAggregation,this._store.contentLanguage=this.contentLanguage,this._store.size=this.size),(e.has(`datasetsDataFields`)||e.has(`datasetIds`)||e.has(`apiUrl`)||e.has(`authKey`)||e.has(`authToken`))&&this._loadDatasets(),e.has(`showAggregations`)&&this._rebuildAutoCompletion(),e.has(`expression`)&&this._applyExternalExpression()}async _loadDatasets(){if(this.datasetsDataFields.length===0&&this.datasetIds.length===0){this._datasets=[],this._store.datasets=[],this._setLoading(!1),this._rebuildAutoCompletion();return}if(this.datasetsDataFields.length>0){this._datasets=C(this.datasetsDataFields),this._store.datasets=this._datasets,this._setLoading(!1),this._rebuildAutoCompletion();return}if(this.datasetIds.length>0){this._setLoading(!0);try{let e=await r.t(this.datasetIds,{dataBrokerConfig:{apiUrl:this.apiUrl,authKey:this.authKey,authToken:this.authToken}});this._datasets=C(e),this._store.datasets=this._datasets,this._rebuildAutoCompletion()}catch(e){console.warn(`[${this.localName}] Failed to load datasets:`,e),this.dispatchEvent(new CustomEvent(`luzmo-datasets-error`,{bubbles:!0,composed:!0,detail:{error:e}}))}finally{this._setLoading(!1)}}}_rebuildAutoCompletion(){}_syncExpressionToStore(){return this.expression===this._lastEmittedExpression?null:(this._store.clearWidgets(),this._rootContent=this.multiStageAggregation?this._store.transformToAggregationWidgetSyntax(this.expression):this.expression,this._rootContent)}_applyExternalExpression(){this._applyingExternalExpression=!0;try{this._syncExpressionToStore()}finally{this._applyingExternalExpression=!1}}_recomputeExpression(){if(this._applyingExternalExpression||!this._canEmitExpression())return;let e=this.multiStageAggregation?this._store.transformToAggregationFunctionSyntax(this._rootContent):this._rootContent;this._emitTimer&&clearTimeout(this._emitTimer),this._emitTimer=setTimeout(()=>this._onExpressionComputed(e),this._emitDebounceMs)}_emitExpressionChanged(e){this._lastEmittedExpression=e,this.dispatchEvent(new CustomEvent(`luzmo-expression-changed`,{bubbles:!0,composed:!0,detail:{expression:e}}))}_shouldLoadInput(){return!0}_canEmitExpression(){return!0}get _emitDebounceMs(){return 300}_onExpressionComputed(e){e!==this._lastEmittedExpression&&this._emitExpressionChanged(e)}_setLoading(e){}};t.t([(0,i.property)({type:String})],O.prototype,`expression`,void 0),t.t([(0,i.property)({attribute:!1})],O.prototype,`datasetsDataFields`,void 0),t.t([(0,i.property)({type:Array,attribute:`dataset-ids`})],O.prototype,`datasetIds`,void 0),t.t([(0,i.property)({type:String,attribute:`api-url`})],O.prototype,`apiUrl`,void 0),t.t([(0,i.property)({type:String,attribute:`auth-key`})],O.prototype,`authKey`,void 0),t.t([(0,i.property)({type:String,attribute:`auth-token`})],O.prototype,`authToken`,void 0),t.t([(0,i.property)({type:Boolean,attribute:`show-aggregations`,reflect:!0})],O.prototype,`showAggregations`,void 0),t.t([(0,i.property)({type:String,attribute:`content-language`,reflect:!0})],O.prototype,`contentLanguage`,void 0),t.t([(0,i.property)({type:Boolean,attribute:`multi-stage-aggregation`})],O.prototype,`multiStageAggregation`,void 0),t.t([(0,i.property)({type:Boolean,attribute:`nested-aggregation`})],O.prototype,`nestedAggregation`,void 0),t.t([(0,i.state)()],O.prototype,`_datasets`,void 0),t.t([(0,i.state)()],O.prototype,`_codeMirrorLoaded`,void 0);var k=[`AVG`,`COUNT`,`COUNTD`,`COUNTR`,`MAX`,`MIN`,`SUM`];function A(){return{AVG:{arity:1,label:()=>(0,a.msg)(`Average`,{desc:`Formula aggregation label for AVG`}),description:()=>(0,a.msg)(`Calculates the average of the values.`,{desc:`Formula aggregation description for AVG`}),example:()=>`AVG(⟨numeric⟩ Order Value)`,exampleHasIcons:!0},COUNT:{arity:1,label:()=>(0,a.msg)(`Count`,{desc:`Formula aggregation label for COUNT`}),description:()=>(0,a.msg)(`Counts the number of non-empty values.`,{desc:`Formula aggregation description for COUNT`}),example:()=>`COUNT(⟨numeric⟩ Order Number)`,exampleHasIcons:!0},COUNTD:{arity:1,label:()=>(0,a.msg)(`Count distinct`,{desc:`Formula aggregation label for COUNTD`}),description:()=>(0,a.msg)(`Counts the number of distinct values.`,{desc:`Formula aggregation description for COUNTD`}),example:()=>`COUNTD(⟨numeric⟩ Customer ID)`,exampleHasIcons:!0},COUNTR:{arity:0,label:()=>(0,a.msg)(`Count rows`,{desc:`Formula aggregation label for COUNTR`}),description:()=>(0,a.msg)(`Counts the number of rows.`,{desc:`Formula aggregation description for COUNTR`}),example:()=>`COUNTR()`},MAX:{arity:1,label:()=>(0,a.msg)(`Maximum`,{desc:`Formula aggregation label for MAX`}),description:()=>(0,a.msg)(`Returns the largest value.`,{desc:`Formula aggregation description for MAX`}),example:()=>`MAX(⟨numeric⟩ Order Value)`,exampleHasIcons:!0},MIN:{arity:1,label:()=>(0,a.msg)(`Minimum`,{desc:`Formula aggregation label for MIN`}),description:()=>(0,a.msg)(`Returns the smallest value.`,{desc:`Formula aggregation description for MIN`}),example:()=>`MIN(⟨numeric⟩ Order Value)`,exampleHasIcons:!0},SUM:{arity:1,label:()=>(0,a.msg)(`Sum`,{desc:`Formula aggregation label for SUM`}),description:()=>(0,a.msg)(`Adds up all the values.`,{desc:`Formula aggregation description for SUM`}),example:()=>`SUM(⟨numeric⟩ Quantity Sold)`,exampleHasIcons:!0}}}function j(){return[{key:`string`,title:()=>(0,a.msg)(`String`,{desc:`Formula function category title for string functions`}),functions:[`||`,`LENGTH`,`LOWER`,`UPPER`,`LTRIM`,`RTRIM`,`TRIM`,`REPLACE`,`STRPOS`,`SUBSTR`,`SPLIT_PART`]},{key:`dateTime`,title:()=>(0,a.msg)(`Date and time`,{desc:`Formula function category title for date and time functions`}),functions:[`NOW`,`DATE_ADD`,`DATE_DIFF`,`YEAR`,`YEAR_UTC`,`QUARTER`,`QUARTER_UTC`,`MONTH`,`MONTH_UTC`,`WEEK`,`WEEK_UTC`,`DAY`,`DAY_UTC`,`DAY_OF_WEEK`,`DAY_OF_WEEK_UTC`,`DAY_OF_YEAR`,`DAY_OF_YEAR_UTC`,`YEAR_OF_WEEK`,`YEAR_OF_WEEK_UTC`,`HOUR`,`HOUR_UTC`,`MINUTE`,`MINUTE_UTC`,`SECOND`,`SECOND_UTC`]},{key:`mathematical`,title:()=>(0,a.msg)(`Mathematical`,{desc:`Formula function category title for mathematical functions`}),functions:[`+`,`-`,`*`,`/`,`%`,`ABS`,`CEIL`,`E`,`EXP`,`FLOOR`,`LN`,`LOG`,`PI`,`POW`,`RAND`,`ROUND`,`SQRT`]},{key:`conditional`,title:()=>(0,a.msg)(`Conditional`,{desc:`Formula function category title for conditional functions`}),functions:[`IF`,`COALESCE`]},{key:`conversion`,title:()=>(0,a.msg)(`Conversion`,{desc:`Formula function category title for conversion functions`}),functions:[`CAST`]},{key:`comparison`,title:()=>(0,a.msg)(`Comparison`,{desc:`Formula function category title for comparison functions`}),functions:[`>`,`<`,`<=`,`>=`,`=`,`<>`]},{key:`logical`,title:()=>(0,a.msg)(`Logical`,{desc:`Formula function category title for logical functions`}),functions:[`AND`,`OR`,`NOT`]},{key:`circular`,title:()=>(0,a.msg)(`Circular`,{desc:`Formula function category title for circular functions`}),functions:[`SIN`,`COS`,`TAN`,`ASIN`,`ACOS`,`ATAN`,`SINH`,`COSH`,`TANH`]},{key:`spatial`,title:()=>(0,a.msg)(`Spatial`,{desc:`Formula function category title for spatial functions`}),functions:[`COORDS`]}]}function M(){let e=2026;return{"+":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Addition`,{desc:`Formula function label for addition`}),description:()=>(0,a.msg)(`Adds two numeric values.`,{desc:`Formula function description for addition operator`}),example:()=>`42.0 + ⟨numeric⟩ Average burrito price`,exampleHasIcons:!0},"-":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Difference`,{desc:`Formula function label for subtraction`}),description:()=>(0,a.msg)(`Subtracts the second value from the first value.`,{desc:`Formula function description for subtraction operator`}),example:()=>`⟨numeric⟩ Burrito weight - 42`,exampleHasIcons:!0},"*":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Multiplication`,{desc:`Formula function label for multiplication`}),description:()=>(0,a.msg)(`Multiplies two numeric values.`,{desc:`Formula function description for multiplication operator`}),example:()=>`⟨numeric⟩ Number of burritos * 2`,exampleHasIcons:!0},"/":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Division`,{desc:`Formula function label for division`}),description:()=>(0,a.msg)(`Divides the first numeric value by the second numeric value.`,{desc:`Formula function description for division operator`}),example:()=>`⟨numeric⟩ Number of burritos / 2`,exampleHasIcons:!0},"%":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Modulo`,{desc:`Formula function label for modulo`}),description:()=>(0,a.msg)(`Returns the remainder after dividing the first value by the second value.`,{desc:`Formula function description for modulo operator`}),example:()=>`5 % 2`},">":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Greater than`,{desc:`Formula function label for greater than comparison`}),description:()=>(0,a.msg)(`Checks whether the first value is greater than the second value.`,{desc:`Formula function description for greater than operator`}),example:()=>`⟨numeric⟩ Burrito weight > 50`,exampleHasIcons:!0},"<":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Less than`,{desc:`Formula function label for less than comparison`}),description:()=>(0,a.msg)(`Checks whether the first value is less than the second value.`,{desc:`Formula function description for less than operator`}),example:()=>`⟨numeric⟩ Burrito weight < 50`,exampleHasIcons:!0},">=":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Greater than or equal`,{desc:`Formula function label for greater than or equal comparison`}),description:()=>(0,a.msg)(`Checks whether the first value is greater than or equal to the second value.`,{desc:`Formula function description for greater than or equal operator`}),example:()=>`⟨numeric⟩ Burrito weight >= 50`,exampleHasIcons:!0},"<=":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Less than or equal`,{desc:`Formula function label for less than or equal comparison`}),description:()=>(0,a.msg)(`Checks whether the first value is less than or equal to the second value.`,{desc:`Formula function description for less than or equal operator`}),example:()=>`⟨numeric⟩ Burrito weight <= 50`,exampleHasIcons:!0},"=":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Equal`,{desc:`Formula function label for equality comparison`}),description:()=>(0,a.msg)(`Checks whether both values are equal.`,{desc:`Formula function description for equality operator`}),example:()=>`⟨hierarchy⟩ Burrito type = 'Savoury'`,exampleHasIcons:!0},"<>":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Not equal`,{desc:`Formula function label for inequality comparison`}),description:()=>(0,a.msg)(`Checks whether two values are different.`,{desc:`Formula function description for inequality operator`}),example:()=>`⟨hierarchy⟩ Burrito type <> 'Sweet'`,exampleHasIcons:!0},ABS:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Absolute value`,{desc:`Formula function label for ABS`}),description:()=>(0,a.msg)(`Returns the absolute value of a number.`,{desc:`Formula function description for ABS`}),example:()=>`ABS(-5.0)`},CEIL:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Round up`,{desc:`Formula function label for CEIL`}),description:()=>(0,a.msg)(`Rounds a number up to the nearest integer.`,{desc:`Formula function description for CEIL`}),example:()=>`CEIL(11.3)`},E:{type:`prefix`,arity:0,label:()=>(0,a.msg)(`Euler's number`,{desc:`Formula function label for E`}),description:()=>(0,a.msg)(`Returns Euler's constant e.`,{desc:`Formula function description for E`}),example:()=>`E()`},EXP:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Exponential`,{desc:`Formula function label for EXP`}),description:()=>(0,a.msg)(`Returns e raised to the specified power.`,{desc:`Formula function description for EXP`}),example:()=>`EXP(11.3)`},FLOOR:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Round down`,{desc:`Formula function label for FLOOR`}),description:()=>(0,a.msg)(`Rounds a number down to the nearest integer.`,{desc:`Formula function description for FLOOR`}),example:()=>`FLOOR(11.7)`},LN:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Natural logarithm`,{desc:`Formula function label for LN`}),description:()=>(0,a.msg)(`Returns the natural logarithm of a number.`,{desc:`Formula function description for LN`}),example:()=>`LN(11.7)`},LOG:{type:`prefix`,arity:2,label:()=>(0,a.msg)(`Logarithm`,{desc:`Formula function label for LOG`}),description:()=>(0,a.msg)(`Returns the logarithm of a number for a specific base.`,{desc:`Formula function description for LOG`}),example:()=>`LOG(3.6, 10)`},PI:{type:`prefix`,arity:0,label:()=>(0,a.msg)(`Pi`,{desc:`Formula function label for PI`}),description:()=>(0,a.msg)(`Returns the mathematical constant pi.`,{desc:`Formula function description for PI`}),example:()=>`PI()`},POW:{type:`prefix`,arity:2,label:()=>(0,a.msg)(`Power`,{desc:`Formula function label for POW`}),description:()=>(0,a.msg)(`Raises a number to a given power.`,{desc:`Formula function description for POW`}),example:()=>`POW(2.35, 2)`},RAND:{type:`prefix`,arity:0,label:()=>(0,a.msg)(`Random number`,{desc:`Formula function label for RAND`}),description:()=>(0,a.msg)(`Returns a random number between 0 and 1.`,{desc:`Formula function description for RAND`}),example:()=>`RAND()`},ROUND:{type:`prefix`,arity:2,label:()=>(0,a.msg)(`Round`,{desc:`Formula function label for ROUND`}),description:()=>(0,a.msg)(`Rounds a number to a specified number of decimal places.`,{desc:`Formula function description for ROUND`}),example:()=>`ROUND(4.567, 1)`},SQRT:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Square root`,{desc:`Formula function label for SQRT`}),description:()=>(0,a.msg)(`Returns the square root of a number.`,{desc:`Formula function description for SQRT`}),example:()=>`SQRT(4)`},CAST:{type:`prefix`,arity:2,label:()=>(0,a.msg)(`Convert value`,{desc:`Formula function label for CAST`}),description:()=>(0,a.msg)(`Converts a value to another type.`,{desc:`Formula function description for CAST`}),example:()=>`CAST(⟨numeric⟩ Burrito weight, hierarchy)`,exampleHasIcons:!0},IF:{type:`prefix`,arity:3,label:()=>(0,a.msg)(`If`,{desc:`Formula function label for IF`}),description:()=>(0,a.msg)(`Returns one value when a condition is true and another value when false.`,{desc:`Formula function description for IF`}),example:()=>`IF(⟨numeric⟩ Burrito weight < 200,'Small','Large')`,exampleHasIcons:!0},COALESCE:{type:`prefix`,arity:2,label:()=>(0,a.msg)(`Is empty`,{desc:`Formula function label for COALESCE`}),description:()=>(0,a.msg)(`Returns the first non-null value from the provided arguments.`,{desc:`Formula function description for COALESCE`}),example:()=>`COALESCE(⟨hierarchy⟩ Burrito type, 'Unknown type')`,exampleHasIcons:!0},AND:{type:`infix`,arity:2,label:()=>(0,a.msg)(`Logical and`,{desc:`Formula function label for AND`}),description:()=>(0,a.msg)(`Returns true when both conditions are true.`,{desc:`Formula function description for AND`}),example:()=>`Burrito weight > 50 AND Burrito weight < 75`},OR:{type:`infix`,arity:2,label:()=>(0,a.msg)(`Logical or`,{desc:`Formula function label for OR`}),description:()=>(0,a.msg)(`Returns true when at least one condition is true.`,{desc:`Formula function description for OR`}),example:()=>`Burrito price > 10.1 OR Burrito weight >= 50`},NOT:{type:`prefix_op`,arity:1,label:()=>(0,a.msg)(`Logical not`,{desc:`Formula function label for NOT`}),description:()=>(0,a.msg)(`Negates a boolean condition.`,{desc:`Formula function description for NOT`}),example:()=>`NOT (Burrito type = 'Salty')`},SIN:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Sine`,{desc:`Formula function label for SIN`}),description:()=>(0,a.msg)(`Returns the sine of an angle in radians.`,{desc:`Formula function description for SIN`}),example:()=>`SIN(3.14)`},COS:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Cosine`,{desc:`Formula function label for COS`}),description:()=>(0,a.msg)(`Returns the cosine of an angle in radians.`,{desc:`Formula function description for COS`}),example:()=>`COS(3.14)`},TAN:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Tangent`,{desc:`Formula function label for TAN`}),description:()=>(0,a.msg)(`Returns the tangent of an angle in radians.`,{desc:`Formula function description for TAN`}),example:()=>`TAN(3.14)`},ASIN:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Arcsine`,{desc:`Formula function label for ASIN`}),description:()=>(0,a.msg)(`Returns the arcsine of a number.`,{desc:`Formula function description for ASIN`}),example:()=>`ASIN(3.14)`},ACOS:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Arccosine`,{desc:`Formula function label for ACOS`}),description:()=>(0,a.msg)(`Returns the arccosine of a number.`,{desc:`Formula function description for ACOS`}),example:()=>`ACOS(3.14)`},ATAN:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Arctangent`,{desc:`Formula function label for ATAN`}),description:()=>(0,a.msg)(`Returns the arctangent of a number.`,{desc:`Formula function description for ATAN`}),example:()=>`ATAN(3.14)`},SINH:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Hyperbolic sine`,{desc:`Formula function label for SINH`}),description:()=>(0,a.msg)(`Returns the hyperbolic sine of a number.`,{desc:`Formula function description for SINH`}),example:()=>`SINH(3.14)`},COSH:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Hyperbolic cosine`,{desc:`Formula function label for COSH`}),description:()=>(0,a.msg)(`Returns the hyperbolic cosine of a number.`,{desc:`Formula function description for COSH`}),example:()=>`COSH(3.14)`},TANH:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Hyperbolic tangent`,{desc:`Formula function label for TANH`}),description:()=>(0,a.msg)(`Returns the hyperbolic tangent of a number.`,{desc:`Formula function description for TANH`}),example:()=>`TANH(3.14)`},MEAN:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Mean`,{desc:`Formula function label for MEAN`}),description:()=>(0,a.msg)(`Returns the mean value of a numeric expression.`,{desc:`Formula function description for MEAN`}),example:()=>`MEAN(⟨numeric⟩ Burrito weight)`,exampleHasIcons:!0},STDDEV:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Standard deviation`,{desc:`Formula function label for STDDEV`}),description:()=>(0,a.msg)(`Returns the standard deviation of a numeric expression.`,{desc:`Formula function description for STDDEV`}),example:()=>`STDDEV(⟨numeric⟩ Burrito weight)`,exampleHasIcons:!0},"||":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Concatenate`,{desc:`Formula function label for concatenate operator`}),description:()=>(0,a.msg)(`Concatenates two strings.`,{desc:`Formula function description for concatenate operator`}),example:()=>`'Tasty' || ' burrito'`},LENGTH:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`String length`,{desc:`Formula function label for LENGTH`}),description:()=>(0,a.msg)(`Returns the number of characters in a string.`,{desc:`Formula function description for LENGTH`}),example:()=>`LENGTH('Burrito')`},LOWER:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Lowercase`,{desc:`Formula function label for LOWER`}),description:()=>(0,a.msg)(`Converts a string to lowercase.`,{desc:`Formula function description for LOWER`}),example:()=>`LOWER('BURRITO')`},UPPER:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Uppercase`,{desc:`Formula function label for UPPER`}),description:()=>(0,a.msg)(`Converts a string to uppercase.`,{desc:`Formula function description for UPPER`}),example:()=>`UPPER('burrito')`},LTRIM:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Trim left`,{desc:`Formula function label for LTRIM`}),description:()=>(0,a.msg)(`Removes leading spaces from a string.`,{desc:`Formula function description for LTRIM`}),example:()=>`LTRIM(' Burrito')`},RTRIM:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Trim right`,{desc:`Formula function label for RTRIM`}),description:()=>(0,a.msg)(`Removes trailing spaces from a string.`,{desc:`Formula function description for RTRIM`}),example:()=>`RTRIM('Burrito ')`},TRIM:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Trim`,{desc:`Formula function label for TRIM`}),description:()=>(0,a.msg)(`Removes leading and trailing spaces from a string.`,{desc:`Formula function description for TRIM`}),example:()=>`TRIM('Burrito ')`},REPLACE:{type:`prefix`,arity:3,label:()=>(0,a.msg)(`Replace text`,{desc:`Formula function label for REPLACE`}),description:()=>(0,a.msg)(`Replaces occurrences of a substring with another substring.`,{desc:`Formula function description for REPLACE`}),example:()=>`REPLACE('Sweet burrito','Sweet', 'Savoury')`},STRPOS:{type:`prefix`,arity:2,label:()=>(0,a.msg)(`Find substring`,{desc:`Formula function label for STRPOS`}),description:()=>(0,a.msg)(`Returns the position of a substring in a string.`,{desc:`Formula function description for STRPOS`}),example:()=>`STRPOS('Sweet burrito','burrito')`},SUBSTR:{type:`prefix`,arity:3,label:()=>(0,a.msg)(`Take substring`,{desc:`Formula function label for SUBSTR`}),description:()=>(0,a.msg)(`Extracts part of a string starting at a given position and length.`,{desc:`Formula function description for SUBSTR`}),example:()=>`SUBSTR('Sweet burrito',7,3)`},SPLIT_PART:{type:`prefix`,arity:3,label:()=>(0,a.msg)(`Split part`,{desc:`Formula function label for SPLIT_PART`}),description:()=>(0,a.msg)(`Splits a string by a delimiter and returns the selected part.`,{desc:`Formula function description for SPLIT_PART`}),example:()=>`SPLIT_PART('Sweet burrito', ' ', 2)`},NOW:{type:`prefix`,arity:0,label:()=>(0,a.msg)(`Current date and time`,{desc:`Formula function label for NOW`}),description:()=>(0,a.msg)(`Returns the current date and time.`,{desc:`Formula function description for NOW`}),example:()=>`NOW()`},YEAR:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Year`,{desc:`Formula function label for YEAR`}),description:()=>(0,a.msg)(`Extracts the year from a date value.`,{desc:`Formula function description for YEAR`}),example:()=>`YEAR('${e}-02-17')`},YEAR_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Year (UTC)`,{desc:`Formula function label for YEAR_UTC`}),description:()=>(0,a.msg)(`Extracts the year from a date value in UTC.`,{desc:`Formula function description for YEAR_UTC`}),example:()=>`YEAR_UTC('${e}-02-17')`},QUARTER:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Quarter`,{desc:`Formula function label for QUARTER`}),description:()=>(0,a.msg)(`Extracts the quarter from a date value.`,{desc:`Formula function description for QUARTER`}),example:()=>`QUARTER('${e}-02-17')`},QUARTER_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Quarter (UTC)`,{desc:`Formula function label for QUARTER_UTC`}),description:()=>(0,a.msg)(`Extracts the quarter from a date value in UTC.`,{desc:`Formula function description for QUARTER_UTC`}),example:()=>`QUARTER_UTC('${e}-02-17')`},MONTH:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Month`,{desc:`Formula function label for MONTH`}),description:()=>(0,a.msg)(`Extracts the month from a date or datetime value.`,{desc:`Formula function description for MONTH`}),example:()=>`MONTH('${e}-02-17 15:36:59')`},MONTH_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Month (UTC)`,{desc:`Formula function label for MONTH_UTC`}),description:()=>(0,a.msg)(`Extracts the month from a date or datetime value in UTC.`,{desc:`Formula function description for MONTH_UTC`}),example:()=>`MONTH_UTC('${e}-02-17 15:36:59')`},WEEK:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Week`,{desc:`Formula function label for WEEK`}),description:()=>(0,a.msg)(`Extracts the week number from a date or datetime value.`,{desc:`Formula function description for WEEK`}),example:()=>`WEEK('${e}-02-17 15:36:59')`},WEEK_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Week (UTC)`,{desc:`Formula function label for WEEK_UTC`}),description:()=>(0,a.msg)(`Extracts the week number from a date or datetime value in UTC.`,{desc:`Formula function description for WEEK_UTC`}),example:()=>`WEEK_UTC('${e}-02-17 15:36:59')`},DAY:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Day of month`,{desc:`Formula function label for DAY`}),description:()=>(0,a.msg)(`Extracts the day of month from a date or datetime value.`,{desc:`Formula function description for DAY`}),example:()=>`DAY('${e}-02-17 15:36:59')`},DAY_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Day of month (UTC)`,{desc:`Formula function label for DAY_UTC`}),description:()=>(0,a.msg)(`Extracts the day of month from a date or datetime value in UTC.`,{desc:`Formula function description for DAY_UTC`}),example:()=>`DAY_UTC('${e}-02-17 15:36:59')`},DAY_OF_WEEK:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Day of week`,{desc:`Formula function label for DAY_OF_WEEK`}),description:()=>(0,a.msg)(`Extracts the day of week from a date or datetime value.`,{desc:`Formula function description for DAY_OF_WEEK`}),example:()=>`DAY_OF_WEEK('${e}-02-17 15:36:59')`},DAY_OF_WEEK_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Day of week (UTC)`,{desc:`Formula function label for DAY_OF_WEEK_UTC`}),description:()=>(0,a.msg)(`Extracts the day of week from a date or datetime value in UTC.`,{desc:`Formula function description for DAY_OF_WEEK_UTC`}),example:()=>`DAY_OF_WEEK_UTC('${e}-02-17 15:36:59')`},DAY_OF_YEAR:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Day of year`,{desc:`Formula function label for DAY_OF_YEAR`}),description:()=>(0,a.msg)(`Extracts the day of year from a date or datetime value.`,{desc:`Formula function description for DAY_OF_YEAR`}),example:()=>`DAY_OF_YEAR('${e}-02-17 15:36:59')`},DAY_OF_YEAR_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Day of year (UTC)`,{desc:`Formula function label for DAY_OF_YEAR_UTC`}),description:()=>(0,a.msg)(`Extracts the day of year from a date or datetime value in UTC.`,{desc:`Formula function description for DAY_OF_YEAR_UTC`}),example:()=>`DAY_OF_YEAR_UTC('${e}-02-17 15:36:59')`},YEAR_OF_WEEK:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Year of ISO week`,{desc:`Formula function label for YEAR_OF_WEEK`}),description:()=>(0,a.msg)(`Extracts the ISO week-numbering year from a date or datetime value.`,{desc:`Formula function description for YEAR_OF_WEEK`}),example:()=>`YEAR_OF_WEEK('${e}-02-17 15:36:59')`},YEAR_OF_WEEK_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Year of ISO week (UTC)`,{desc:`Formula function label for YEAR_OF_WEEK_UTC`}),description:()=>(0,a.msg)(`Extracts the ISO week-numbering year from a date or datetime value in UTC.`,{desc:`Formula function description for YEAR_OF_WEEK_UTC`}),example:()=>`YEAR_OF_WEEK_UTC('${e}-02-17 15:36:59')`},HOUR:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Hour`,{desc:`Formula function label for HOUR`}),description:()=>(0,a.msg)(`Extracts the hour from a datetime value.`,{desc:`Formula function description for HOUR`}),example:()=>`HOUR('${e}-02-17 15:36:59')`},HOUR_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Hour (UTC)`,{desc:`Formula function label for HOUR_UTC`}),description:()=>(0,a.msg)(`Extracts the hour from a datetime value in UTC.`,{desc:`Formula function description for HOUR_UTC`}),example:()=>`HOUR_UTC('${e}-02-17 15:36:59')`},MINUTE:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Minute`,{desc:`Formula function label for MINUTE`}),description:()=>(0,a.msg)(`Extracts the minute from a datetime value.`,{desc:`Formula function description for MINUTE`}),example:()=>`MINUTE('${e}-02-17 15:36:59')`},MINUTE_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Minute (UTC)`,{desc:`Formula function label for MINUTE_UTC`}),description:()=>(0,a.msg)(`Extracts the minute from a datetime value in UTC.`,{desc:`Formula function description for MINUTE_UTC`}),example:()=>`MINUTE_UTC('${e}-02-17 15:36:59')`},SECOND:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Second`,{desc:`Formula function label for SECOND`}),description:()=>(0,a.msg)(`Extracts the second from a datetime value.`,{desc:`Formula function description for SECOND`}),example:()=>`SECOND('${e}-02-17 15:36:59')`},SECOND_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Second (UTC)`,{desc:`Formula function label for SECOND_UTC`}),description:()=>(0,a.msg)(`Extracts the second from a datetime value in UTC.`,{desc:`Formula function description for SECOND_UTC`}),example:()=>`SECOND_UTC('${e}-02-17 15:36:59')`},DATE_ADD:{type:`prefix`,arity:3,label:()=>(0,a.msg)(`Duration`,{desc:`Formula function label for DATE_ADD`}),description:()=>(0,a.msg)(`Adds a time interval to a date or datetime value.`,{desc:`Formula function description for DATE_ADD`}),example:()=>`DATE_ADD('hour', 2, ⟨datetime⟩ Arrival time)`,exampleHasIcons:!0},DATE_DIFF:{type:`prefix`,arity:3,label:()=>(0,a.msg)(`Difference between dates`,{desc:`Formula function label for DATE_DIFF`}),description:()=>(0,a.msg)(`Returns the difference between two dates or datetimes in the selected unit.`,{desc:`Formula function description for DATE_DIFF`}),example:()=>`DATE_DIFF('day', ⟨datetime⟩ Arrival date, '${e}-02-17 15:36:59')`,exampleHasIcons:!0},COORDS:{type:`prefix`,arity:3,label:()=>(0,a.msg)(`Coordinates`,{desc:`Formula function label for COORDS`}),description:()=>(0,a.msg)(`Builds a geography value from latitude, longitude, and spatial reference.`,{desc:`Formula function description for COORDS`}),example:()=>`COORDS(⟨numeric⟩ Latitude, ⟨numeric⟩ Longitude, 'wgs84')`,exampleHasIcons:!0}}}var N=class extends EventTarget{constructor(...e){super(...e),this.functionDataMap=M(),this.aggregationFunctionDataMap=A(),this.multiStageAggregation=!0,this.nestedAggregation=!0,this.readonly=!1,this.contentLanguage=`en`,this.size=`m`,this.datasets=[],this.loading=!1,this.lastFocusedAggregationWidgetId=null,this.pendingFocusAggregationWidgetId=null,this._aggregationWidgets=[]}get aggregationWidgets(){return this._aggregationWidgets}addWidgets(e){!e||e.length===0||(this._aggregationWidgets=[...this._aggregationWidgets,...e],this._notifyWidgetsChanged())}removeWidgets(e){this._aggregationWidgets=this._aggregationWidgets.filter(({widgetId:t})=>!e.includes(t)),this._notifyWidgetsChanged()}updateWidget(e){this._aggregationWidgets=this._aggregationWidgets.map(t=>t.widgetId===e.widgetId?e:t),this._notifyWidgetsChanged()}getWidget(e){return this._aggregationWidgets.find(t=>t.widgetId===e)}clearWidgets(){this._aggregationWidgets.length!==0&&(this._aggregationWidgets=[],this._notifyWidgetsChanged())}_notifyWidgetsChanged(){this.dispatchEvent(new CustomEvent(`widgets-changed`))}setReadonly(e){this.readonly!==e&&(this.readonly=e,this.dispatchEvent(new CustomEvent(`widgets-changed`)))}setLoading(e){this.loading!==e&&(this.loading=e,this.dispatchEvent(new CustomEvent(`refresh-decorations`)))}_markAggregationForFocus(e){let t=e[0];t&&(this.aggregationFunctionDataMap[t.aggregationFunction]?.arity??0)>0&&(this.pendingFocusAggregationWidgetId=t.widgetId)}transformToAggregationWidgetSyntax(e){let t=y(e).match(u);if(!t)return e;let n=!!t[1],r=t.index??0,i=b(e,r+(n?t[1].length:t[0].length)-1+1),a=b(e,r+t[0].length);if(i===-1)return e;let s=e.slice(r+t[0].length,a),c=this.transformToAggregationWidgetSyntax(s),l={widgetId:h(),grouping:t[2]??o.GROUP,aggregationFunction:t[3],content:c};if(l.grouping===o.GROUPINEX){let{includedColumns:t,excludedColumns:n}=x(e.slice(a+1,i));l.includedColumns=t,l.excludedColumns=n}let d=_(l.widgetId),f=`${e.slice(0,r)}${d}${e.slice(i+1)}`;return this.addWidgets([l]),this.transformToAggregationWidgetSyntax(f)}transformToAggregationFunctionSyntax(e){let t=e.match(f);if(!t)return e;let n=t.index??0,r=n+t[0].length-1,i=t[1],a=this.getWidget(i),o=a?this.transformToAggregationFunctionSyntax(v(a,this.aggregationFunctionDataMap)):``,s=`${e.slice(0,n)}${o}${e.slice(r+1)}`;return this.transformToAggregationFunctionSyntax(s)}};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return _}});
20
+ const e=require("./base-CHERUz8a.cjs"),t=require("./decorate-DCJt-2rt.cjs"),n=require("./localized-mixin-2FpAMHwf.cjs"),r=require("./load-data-fields-for-datasets-BVGaku2J.cjs");let i=require("lit/decorators.js"),a=require("@lit/localize");var o=function(e){return e.GROUP=``,e.GROUPFULL=`GROUPFULL`,e.GROUPINEX=`GROUPINEX`,e}({}),s=String.raw`[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}`,c=RegExp(`##EMPTYARG-(${s})##|{(${s}:${s})}|##AGGR-(${s})##`,`gm`),l=RegExp(`##EMPTYARG-(${s})##|{(${s}:${s})}`,`gm`),u=/((GROUPFULL|GROUPINEX)\()?(AVG|COUNT|COUNTD|COUNTR|MAX|MIN|SUM)\(/m,d=/(AVG|COUNT|COUNTD|MAX|MIN|SUM)\(\)/m,f=RegExp(`##AGGR-(${s})##`,`m`),p=/\[(.*?)\]/gm,m=RegExp(`{(${s}:${s})}`,`gm`);function h(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)})}function g(){return`##EMPTYARG-${h()}##`}function _(e){return`##AGGR-${e}##`}function v(e,t){let{aggregationFunction:n,content:r,grouping:i,includedColumns:a,excludedColumns:s}=e??{},c=`${n}(${t[n]?.arity>0?r:``})`;switch(i){case o.GROUPFULL:return`GROUPFULL(${c})`;case o.GROUPINEX:return`GROUPINEX(${c}, [${a?.map(e=>`{${e}}`).join(`, `)||``}], [${s?.map(e=>`{${e}}`).join(`, `)||``}])`;default:return c}}function y(e){let t=e.split(``),n=null;for(let e=0;e<t.length;e++){let r=t[e];n?r===n?n=null:t[e]=` `:(r===`'`||r===`"`)&&(n=r)}return t.join(``)}function b(e,t=0){let n=0,r=-1,i=null;for(let a=t,o=e.length;a<o;a++){let t=e[a];if(i){t===i&&(i=null);continue}if(t===`'`||t===`"`)i=t;else if(t===`(`)n++;else if(t===`)`){if(n===0){r=a;break}n--}}return r}function x(e){let t=e.match(p),n=t?.[0],r=t?.[1];return{includedColumns:n?.match(m)?.map(e=>e.slice(1,-1))??[],excludedColumns:r?.match(m)?.map(e=>e.slice(1,-1))??[]}}function S(e=`light`){return!e||e===`light`?[`#0E89E0`,`#F45000`,`#15BF49`,`#685AC2`,`#636363`]:[`#BDDCF9`,`#FFCFA1`,`#C1F3B7`,`#D7D7EF`,`#D7D7EF`]}function C(e){let t=S(`light`),n=e.length>1;return e.map((e,r)=>{let i=[];return`dataFields`in e&&Array.isArray(e.dataFields)&&e.dataFields.length>0?i=e.dataFields.filter(e=>!!e.columnId):`columns`in e&&Array.isArray(e.columns)&&(i=e.columns.map(t=>({...t,datasetId:e.id}))),{id:e.id,name:e.name,description:`description`in e?e.description:void 0,color:n?t[r%t.length]:void 0,columns:i}})}var w=!1,T;async function E(){if(!w){T??=Promise.resolve().then(()=>require("./formula-codemirror-p7ssM_dZ.cjs"));try{await T,w=!0}catch(e){throw T=void 0,e}}}function D(){return w}var O=class extends n.t(e.n(e.i,{validSizes:[`s`,`m`,`l`,`xl`]})){constructor(){super(),this.expression=``,this.datasetsDataFields=[],this.datasetIds=[],this.apiUrl=`https://api.luzmo.com`,this.showAggregations=!0,this.contentLanguage=`en`,this.multiStageAggregation=!0,this.nestedAggregation=!0,this._datasets=[],this._codeMirrorLoaded=D(),this._rootContent=``,this._lastEmittedExpression=null,this._applyingExternalExpression=!1,this._handleWidgetsChanged=()=>{this._recomputeExpression()},this._store=this._createStore()}connectedCallback(){super.connectedCallback(),this._store.addEventListener(`widgets-changed`,this._handleWidgetsChanged)}disconnectedCallback(){super.disconnectedCallback(),this._store.removeEventListener(`widgets-changed`,this._handleWidgetsChanged),this._emitTimer&&clearTimeout(this._emitTimer)}firstUpdated(e){super.firstUpdated(e),this._pushRootContent()}updated(e){super.updated(e),e.has(`_codeMirrorLoaded`)&&this._codeMirrorLoaded&&this._pushRootContent()}_pushRootContent(){this._rootContent&&this._codeMirrorElement?.setContent(this._rootContent)}get _codeMirrorElement(){return this.renderRoot?.querySelector(`luzmo-formula-codemirror`)}async _ensureCodeMirrorLoaded(){this._codeMirrorLoaded||=(await E(),!0)}willUpdate(e){super.willUpdate(e),this._shouldLoadInput()&&this._ensureCodeMirrorLoaded(),(e.has(`multiStageAggregation`)||e.has(`nestedAggregation`)||e.has(`contentLanguage`)||e.has(`size`))&&(this._store.multiStageAggregation=this.multiStageAggregation,this._store.nestedAggregation=this.nestedAggregation,this._store.contentLanguage=this.contentLanguage,this._store.size=this.size),(e.has(`datasetsDataFields`)||e.has(`datasetIds`)||e.has(`apiUrl`)||e.has(`authKey`)||e.has(`authToken`))&&this._loadDatasets(),e.has(`showAggregations`)&&this._rebuildAutoCompletion(),e.has(`expression`)&&this._applyExternalExpression()}async _loadDatasets(){if(this.datasetsDataFields.length===0&&this.datasetIds.length===0){this._datasets=[],this._store.datasets=[],this._setLoading(!1),this._rebuildAutoCompletion();return}if(this.datasetsDataFields.length>0){this._datasets=C(this.datasetsDataFields),this._store.datasets=this._datasets,this._setLoading(!1),this._rebuildAutoCompletion();return}if(this.datasetIds.length>0){this._setLoading(!0);try{let e=await r.t(this.datasetIds,{dataBrokerConfig:{apiUrl:this.apiUrl,authKey:this.authKey,authToken:this.authToken}});this._datasets=C(e),this._store.datasets=this._datasets,this._rebuildAutoCompletion()}catch(e){console.warn(`[${this.localName}] Failed to load datasets:`,e),this.dispatchEvent(new CustomEvent(`luzmo-datasets-error`,{bubbles:!0,composed:!0,detail:{error:e}}))}finally{this._setLoading(!1)}}}_rebuildAutoCompletion(){}_syncExpressionToStore(){return this.expression===this._lastEmittedExpression?null:(this._store.clearWidgets(),this._rootContent=this.multiStageAggregation?this._store.transformToAggregationWidgetSyntax(this.expression):this.expression,this._rootContent)}_applyExternalExpression(){this._applyingExternalExpression=!0;try{this._syncExpressionToStore()}finally{this._applyingExternalExpression=!1}}_recomputeExpression(){if(this._applyingExternalExpression||!this._canEmitExpression())return;let e=this.multiStageAggregation?this._store.transformToAggregationFunctionSyntax(this._rootContent):this._rootContent;this._emitTimer&&clearTimeout(this._emitTimer),this._emitTimer=setTimeout(()=>this._onExpressionComputed(e),this._emitDebounceMs)}_emitExpressionChanged(e){this._lastEmittedExpression=e,this.dispatchEvent(new CustomEvent(`luzmo-expression-changed`,{bubbles:!0,composed:!0,detail:{expression:e}}))}_shouldLoadInput(){return!0}_canEmitExpression(){return!0}get _emitDebounceMs(){return 300}_onExpressionComputed(e){e!==this._lastEmittedExpression&&this._emitExpressionChanged(e)}_setLoading(e){}};t.t([(0,i.property)({type:String})],O.prototype,`expression`,void 0),t.t([(0,i.property)({attribute:!1})],O.prototype,`datasetsDataFields`,void 0),t.t([(0,i.property)({type:Array,attribute:`dataset-ids`})],O.prototype,`datasetIds`,void 0),t.t([(0,i.property)({type:String,attribute:`api-url`})],O.prototype,`apiUrl`,void 0),t.t([(0,i.property)({type:String,attribute:`auth-key`})],O.prototype,`authKey`,void 0),t.t([(0,i.property)({type:String,attribute:`auth-token`})],O.prototype,`authToken`,void 0),t.t([(0,i.property)({type:Boolean,attribute:`show-aggregations`,reflect:!0})],O.prototype,`showAggregations`,void 0),t.t([(0,i.property)({type:String,attribute:`content-language`,reflect:!0})],O.prototype,`contentLanguage`,void 0),t.t([(0,i.property)({type:Boolean,attribute:`multi-stage-aggregation`})],O.prototype,`multiStageAggregation`,void 0),t.t([(0,i.property)({type:Boolean,attribute:`nested-aggregation`})],O.prototype,`nestedAggregation`,void 0),t.t([(0,i.state)()],O.prototype,`_datasets`,void 0),t.t([(0,i.state)()],O.prototype,`_codeMirrorLoaded`,void 0);var k=[`AVG`,`COUNT`,`COUNTD`,`COUNTR`,`MAX`,`MIN`,`SUM`];function A(){return{AVG:{arity:1,label:()=>(0,a.msg)(`Average`,{desc:`Formula aggregation label for AVG`}),description:()=>(0,a.msg)(`Calculates the average of the values.`,{desc:`Formula aggregation description for AVG`}),example:()=>`AVG(⟨numeric⟩ Order Value)`,exampleHasIcons:!0},COUNT:{arity:1,label:()=>(0,a.msg)(`Count`,{desc:`Formula aggregation label for COUNT`}),description:()=>(0,a.msg)(`Counts the number of non-empty values.`,{desc:`Formula aggregation description for COUNT`}),example:()=>`COUNT(⟨numeric⟩ Order Number)`,exampleHasIcons:!0},COUNTD:{arity:1,label:()=>(0,a.msg)(`Count distinct`,{desc:`Formula aggregation label for COUNTD`}),description:()=>(0,a.msg)(`Counts the number of distinct values.`,{desc:`Formula aggregation description for COUNTD`}),example:()=>`COUNTD(⟨numeric⟩ Customer ID)`,exampleHasIcons:!0},COUNTR:{arity:0,label:()=>(0,a.msg)(`Count rows`,{desc:`Formula aggregation label for COUNTR`}),description:()=>(0,a.msg)(`Counts the number of rows.`,{desc:`Formula aggregation description for COUNTR`}),example:()=>`COUNTR()`},MAX:{arity:1,label:()=>(0,a.msg)(`Maximum`,{desc:`Formula aggregation label for MAX`}),description:()=>(0,a.msg)(`Returns the largest value.`,{desc:`Formula aggregation description for MAX`}),example:()=>`MAX(⟨numeric⟩ Order Value)`,exampleHasIcons:!0},MIN:{arity:1,label:()=>(0,a.msg)(`Minimum`,{desc:`Formula aggregation label for MIN`}),description:()=>(0,a.msg)(`Returns the smallest value.`,{desc:`Formula aggregation description for MIN`}),example:()=>`MIN(⟨numeric⟩ Order Value)`,exampleHasIcons:!0},SUM:{arity:1,label:()=>(0,a.msg)(`Sum`,{desc:`Formula aggregation label for SUM`}),description:()=>(0,a.msg)(`Adds up all the values.`,{desc:`Formula aggregation description for SUM`}),example:()=>`SUM(⟨numeric⟩ Quantity Sold)`,exampleHasIcons:!0}}}function j(){return[{key:`string`,title:()=>(0,a.msg)(`String`,{desc:`Formula function category title for string functions`}),functions:[`||`,`LENGTH`,`LOWER`,`UPPER`,`LTRIM`,`RTRIM`,`TRIM`,`REPLACE`,`STRPOS`,`SUBSTR`,`SPLIT_PART`]},{key:`dateTime`,title:()=>(0,a.msg)(`Date and time`,{desc:`Formula function category title for date and time functions`}),functions:[`NOW`,`DATE_ADD`,`DATE_DIFF`,`YEAR`,`YEAR_UTC`,`QUARTER`,`QUARTER_UTC`,`MONTH`,`MONTH_UTC`,`WEEK`,`WEEK_UTC`,`DAY`,`DAY_UTC`,`DAY_OF_WEEK`,`DAY_OF_WEEK_UTC`,`DAY_OF_YEAR`,`DAY_OF_YEAR_UTC`,`YEAR_OF_WEEK`,`YEAR_OF_WEEK_UTC`,`HOUR`,`HOUR_UTC`,`MINUTE`,`MINUTE_UTC`,`SECOND`,`SECOND_UTC`]},{key:`mathematical`,title:()=>(0,a.msg)(`Mathematical`,{desc:`Formula function category title for mathematical functions`}),functions:[`+`,`-`,`*`,`/`,`%`,`ABS`,`CEIL`,`E`,`EXP`,`FLOOR`,`LN`,`LOG`,`PI`,`POW`,`RAND`,`ROUND`,`SQRT`]},{key:`conditional`,title:()=>(0,a.msg)(`Conditional`,{desc:`Formula function category title for conditional functions`}),functions:[`IF`,`COALESCE`]},{key:`conversion`,title:()=>(0,a.msg)(`Conversion`,{desc:`Formula function category title for conversion functions`}),functions:[`CAST`]},{key:`comparison`,title:()=>(0,a.msg)(`Comparison`,{desc:`Formula function category title for comparison functions`}),functions:[`>`,`<`,`<=`,`>=`,`=`,`<>`]},{key:`logical`,title:()=>(0,a.msg)(`Logical`,{desc:`Formula function category title for logical functions`}),functions:[`AND`,`OR`,`NOT`]},{key:`circular`,title:()=>(0,a.msg)(`Circular`,{desc:`Formula function category title for circular functions`}),functions:[`SIN`,`COS`,`TAN`,`ASIN`,`ACOS`,`ATAN`,`SINH`,`COSH`,`TANH`]},{key:`spatial`,title:()=>(0,a.msg)(`Spatial`,{desc:`Formula function category title for spatial functions`}),functions:[`COORDS`]}]}function M(){let e=2026;return{"+":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Addition`,{desc:`Formula function label for addition`}),description:()=>(0,a.msg)(`Adds two numeric values.`,{desc:`Formula function description for addition operator`}),example:()=>`42.0 + ⟨numeric⟩ Average burrito price`,exampleHasIcons:!0},"-":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Difference`,{desc:`Formula function label for subtraction`}),description:()=>(0,a.msg)(`Subtracts the second value from the first value.`,{desc:`Formula function description for subtraction operator`}),example:()=>`⟨numeric⟩ Burrito weight - 42`,exampleHasIcons:!0},"*":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Multiplication`,{desc:`Formula function label for multiplication`}),description:()=>(0,a.msg)(`Multiplies two numeric values.`,{desc:`Formula function description for multiplication operator`}),example:()=>`⟨numeric⟩ Number of burritos * 2`,exampleHasIcons:!0},"/":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Division`,{desc:`Formula function label for division`}),description:()=>(0,a.msg)(`Divides the first numeric value by the second numeric value.`,{desc:`Formula function description for division operator`}),example:()=>`⟨numeric⟩ Number of burritos / 2`,exampleHasIcons:!0},"%":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Modulo`,{desc:`Formula function label for modulo`}),description:()=>(0,a.msg)(`Returns the remainder after dividing the first value by the second value.`,{desc:`Formula function description for modulo operator`}),example:()=>`5 % 2`},">":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Greater than`,{desc:`Formula function label for greater than comparison`}),description:()=>(0,a.msg)(`Checks whether the first value is greater than the second value.`,{desc:`Formula function description for greater than operator`}),example:()=>`⟨numeric⟩ Burrito weight > 50`,exampleHasIcons:!0},"<":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Less than`,{desc:`Formula function label for less than comparison`}),description:()=>(0,a.msg)(`Checks whether the first value is less than the second value.`,{desc:`Formula function description for less than operator`}),example:()=>`⟨numeric⟩ Burrito weight < 50`,exampleHasIcons:!0},">=":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Greater than or equal`,{desc:`Formula function label for greater than or equal comparison`}),description:()=>(0,a.msg)(`Checks whether the first value is greater than or equal to the second value.`,{desc:`Formula function description for greater than or equal operator`}),example:()=>`⟨numeric⟩ Burrito weight >= 50`,exampleHasIcons:!0},"<=":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Less than or equal`,{desc:`Formula function label for less than or equal comparison`}),description:()=>(0,a.msg)(`Checks whether the first value is less than or equal to the second value.`,{desc:`Formula function description for less than or equal operator`}),example:()=>`⟨numeric⟩ Burrito weight <= 50`,exampleHasIcons:!0},"=":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Equal`,{desc:`Formula function label for equality comparison`}),description:()=>(0,a.msg)(`Checks whether both values are equal.`,{desc:`Formula function description for equality operator`}),example:()=>`⟨hierarchy⟩ Burrito type = 'Savoury'`,exampleHasIcons:!0},"<>":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Not equal`,{desc:`Formula function label for inequality comparison`}),description:()=>(0,a.msg)(`Checks whether two values are different.`,{desc:`Formula function description for inequality operator`}),example:()=>`⟨hierarchy⟩ Burrito type <> 'Sweet'`,exampleHasIcons:!0},ABS:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Absolute value`,{desc:`Formula function label for ABS`}),description:()=>(0,a.msg)(`Returns the absolute value of a number.`,{desc:`Formula function description for ABS`}),example:()=>`ABS(-5.0)`},CEIL:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Round up`,{desc:`Formula function label for CEIL`}),description:()=>(0,a.msg)(`Rounds a number up to the nearest integer.`,{desc:`Formula function description for CEIL`}),example:()=>`CEIL(11.3)`},E:{type:`prefix`,arity:0,label:()=>(0,a.msg)(`Euler's number`,{desc:`Formula function label for E`}),description:()=>(0,a.msg)(`Returns Euler's constant e.`,{desc:`Formula function description for E`}),example:()=>`E()`},EXP:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Exponential`,{desc:`Formula function label for EXP`}),description:()=>(0,a.msg)(`Returns e raised to the specified power.`,{desc:`Formula function description for EXP`}),example:()=>`EXP(11.3)`},FLOOR:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Round down`,{desc:`Formula function label for FLOOR`}),description:()=>(0,a.msg)(`Rounds a number down to the nearest integer.`,{desc:`Formula function description for FLOOR`}),example:()=>`FLOOR(11.7)`},LN:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Natural logarithm`,{desc:`Formula function label for LN`}),description:()=>(0,a.msg)(`Returns the natural logarithm of a number.`,{desc:`Formula function description for LN`}),example:()=>`LN(11.7)`},LOG:{type:`prefix`,arity:2,label:()=>(0,a.msg)(`Logarithm`,{desc:`Formula function label for LOG`}),description:()=>(0,a.msg)(`Returns the logarithm of a number for a specific base.`,{desc:`Formula function description for LOG`}),example:()=>`LOG(3.6, 10)`},PI:{type:`prefix`,arity:0,label:()=>(0,a.msg)(`Pi`,{desc:`Formula function label for PI`}),description:()=>(0,a.msg)(`Returns the mathematical constant pi.`,{desc:`Formula function description for PI`}),example:()=>`PI()`},POW:{type:`prefix`,arity:2,label:()=>(0,a.msg)(`Power`,{desc:`Formula function label for POW`}),description:()=>(0,a.msg)(`Raises a number to a given power.`,{desc:`Formula function description for POW`}),example:()=>`POW(2.35, 2)`},RAND:{type:`prefix`,arity:0,label:()=>(0,a.msg)(`Random number`,{desc:`Formula function label for RAND`}),description:()=>(0,a.msg)(`Returns a random number between 0 and 1.`,{desc:`Formula function description for RAND`}),example:()=>`RAND()`},ROUND:{type:`prefix`,arity:2,label:()=>(0,a.msg)(`Round`,{desc:`Formula function label for ROUND`}),description:()=>(0,a.msg)(`Rounds a number to a specified number of decimal places.`,{desc:`Formula function description for ROUND`}),example:()=>`ROUND(4.567, 1)`},SQRT:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Square root`,{desc:`Formula function label for SQRT`}),description:()=>(0,a.msg)(`Returns the square root of a number.`,{desc:`Formula function description for SQRT`}),example:()=>`SQRT(4)`},CAST:{type:`prefix`,arity:2,label:()=>(0,a.msg)(`Convert value`,{desc:`Formula function label for CAST`}),description:()=>(0,a.msg)(`Converts a value to another type.`,{desc:`Formula function description for CAST`}),example:()=>`CAST(⟨numeric⟩ Burrito weight, hierarchy)`,exampleHasIcons:!0},IF:{type:`prefix`,arity:3,label:()=>(0,a.msg)(`If`,{desc:`Formula function label for IF`}),description:()=>(0,a.msg)(`Returns one value when a condition is true and another value when false.`,{desc:`Formula function description for IF`}),example:()=>`IF(⟨numeric⟩ Burrito weight < 200,'Small','Large')`,exampleHasIcons:!0},COALESCE:{type:`prefix`,arity:2,label:()=>(0,a.msg)(`Is empty`,{desc:`Formula function label for COALESCE`}),description:()=>(0,a.msg)(`Returns the first non-null value from the provided arguments.`,{desc:`Formula function description for COALESCE`}),example:()=>`COALESCE(⟨hierarchy⟩ Burrito type, 'Unknown type')`,exampleHasIcons:!0},AND:{type:`infix`,arity:2,label:()=>(0,a.msg)(`Logical and`,{desc:`Formula function label for AND`}),description:()=>(0,a.msg)(`Returns true when both conditions are true.`,{desc:`Formula function description for AND`}),example:()=>`Burrito weight > 50 AND Burrito weight < 75`},OR:{type:`infix`,arity:2,label:()=>(0,a.msg)(`Logical or`,{desc:`Formula function label for OR`}),description:()=>(0,a.msg)(`Returns true when at least one condition is true.`,{desc:`Formula function description for OR`}),example:()=>`Burrito price > 10.1 OR Burrito weight >= 50`},NOT:{type:`prefix_op`,arity:1,label:()=>(0,a.msg)(`Logical not`,{desc:`Formula function label for NOT`}),description:()=>(0,a.msg)(`Negates a boolean condition.`,{desc:`Formula function description for NOT`}),example:()=>`NOT (Burrito type = 'Salty')`},SIN:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Sine`,{desc:`Formula function label for SIN`}),description:()=>(0,a.msg)(`Returns the sine of an angle in radians.`,{desc:`Formula function description for SIN`}),example:()=>`SIN(3.14)`},COS:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Cosine`,{desc:`Formula function label for COS`}),description:()=>(0,a.msg)(`Returns the cosine of an angle in radians.`,{desc:`Formula function description for COS`}),example:()=>`COS(3.14)`},TAN:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Tangent`,{desc:`Formula function label for TAN`}),description:()=>(0,a.msg)(`Returns the tangent of an angle in radians.`,{desc:`Formula function description for TAN`}),example:()=>`TAN(3.14)`},ASIN:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Arcsine`,{desc:`Formula function label for ASIN`}),description:()=>(0,a.msg)(`Returns the arcsine of a number.`,{desc:`Formula function description for ASIN`}),example:()=>`ASIN(3.14)`},ACOS:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Arccosine`,{desc:`Formula function label for ACOS`}),description:()=>(0,a.msg)(`Returns the arccosine of a number.`,{desc:`Formula function description for ACOS`}),example:()=>`ACOS(3.14)`},ATAN:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Arctangent`,{desc:`Formula function label for ATAN`}),description:()=>(0,a.msg)(`Returns the arctangent of a number.`,{desc:`Formula function description for ATAN`}),example:()=>`ATAN(3.14)`},SINH:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Hyperbolic sine`,{desc:`Formula function label for SINH`}),description:()=>(0,a.msg)(`Returns the hyperbolic sine of a number.`,{desc:`Formula function description for SINH`}),example:()=>`SINH(3.14)`},COSH:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Hyperbolic cosine`,{desc:`Formula function label for COSH`}),description:()=>(0,a.msg)(`Returns the hyperbolic cosine of a number.`,{desc:`Formula function description for COSH`}),example:()=>`COSH(3.14)`},TANH:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Hyperbolic tangent`,{desc:`Formula function label for TANH`}),description:()=>(0,a.msg)(`Returns the hyperbolic tangent of a number.`,{desc:`Formula function description for TANH`}),example:()=>`TANH(3.14)`},MEAN:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Mean`,{desc:`Formula function label for MEAN`}),description:()=>(0,a.msg)(`Returns the mean value of a numeric expression.`,{desc:`Formula function description for MEAN`}),example:()=>`MEAN(⟨numeric⟩ Burrito weight)`,exampleHasIcons:!0},STDDEV:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Standard deviation`,{desc:`Formula function label for STDDEV`}),description:()=>(0,a.msg)(`Returns the standard deviation of a numeric expression.`,{desc:`Formula function description for STDDEV`}),example:()=>`STDDEV(⟨numeric⟩ Burrito weight)`,exampleHasIcons:!0},"||":{type:`infix`,arity:2,label:()=>(0,a.msg)(`Concatenate`,{desc:`Formula function label for concatenate operator`}),description:()=>(0,a.msg)(`Concatenates two strings.`,{desc:`Formula function description for concatenate operator`}),example:()=>`'Tasty' || ' burrito'`},LENGTH:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`String length`,{desc:`Formula function label for LENGTH`}),description:()=>(0,a.msg)(`Returns the number of characters in a string.`,{desc:`Formula function description for LENGTH`}),example:()=>`LENGTH('Burrito')`},LOWER:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Lowercase`,{desc:`Formula function label for LOWER`}),description:()=>(0,a.msg)(`Converts a string to lowercase.`,{desc:`Formula function description for LOWER`}),example:()=>`LOWER('BURRITO')`},UPPER:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Uppercase`,{desc:`Formula function label for UPPER`}),description:()=>(0,a.msg)(`Converts a string to uppercase.`,{desc:`Formula function description for UPPER`}),example:()=>`UPPER('burrito')`},LTRIM:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Trim left`,{desc:`Formula function label for LTRIM`}),description:()=>(0,a.msg)(`Removes leading spaces from a string.`,{desc:`Formula function description for LTRIM`}),example:()=>`LTRIM(' Burrito')`},RTRIM:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Trim right`,{desc:`Formula function label for RTRIM`}),description:()=>(0,a.msg)(`Removes trailing spaces from a string.`,{desc:`Formula function description for RTRIM`}),example:()=>`RTRIM('Burrito ')`},TRIM:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Trim`,{desc:`Formula function label for TRIM`}),description:()=>(0,a.msg)(`Removes leading and trailing spaces from a string.`,{desc:`Formula function description for TRIM`}),example:()=>`TRIM('Burrito ')`},REPLACE:{type:`prefix`,arity:3,label:()=>(0,a.msg)(`Replace text`,{desc:`Formula function label for REPLACE`}),description:()=>(0,a.msg)(`Replaces occurrences of a substring with another substring.`,{desc:`Formula function description for REPLACE`}),example:()=>`REPLACE('Sweet burrito','Sweet', 'Savoury')`},STRPOS:{type:`prefix`,arity:2,label:()=>(0,a.msg)(`Find substring`,{desc:`Formula function label for STRPOS`}),description:()=>(0,a.msg)(`Returns the position of a substring in a string.`,{desc:`Formula function description for STRPOS`}),example:()=>`STRPOS('Sweet burrito','burrito')`},SUBSTR:{type:`prefix`,arity:3,label:()=>(0,a.msg)(`Take substring`,{desc:`Formula function label for SUBSTR`}),description:()=>(0,a.msg)(`Extracts part of a string starting at a given position and length.`,{desc:`Formula function description for SUBSTR`}),example:()=>`SUBSTR('Sweet burrito',7,3)`},SPLIT_PART:{type:`prefix`,arity:3,label:()=>(0,a.msg)(`Split part`,{desc:`Formula function label for SPLIT_PART`}),description:()=>(0,a.msg)(`Splits a string by a delimiter and returns the selected part.`,{desc:`Formula function description for SPLIT_PART`}),example:()=>`SPLIT_PART('Sweet burrito', ' ', 2)`},NOW:{type:`prefix`,arity:0,label:()=>(0,a.msg)(`Current date and time`,{desc:`Formula function label for NOW`}),description:()=>(0,a.msg)(`Returns the current date and time.`,{desc:`Formula function description for NOW`}),example:()=>`NOW()`},YEAR:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Year`,{desc:`Formula function label for YEAR`}),description:()=>(0,a.msg)(`Extracts the year from a date value.`,{desc:`Formula function description for YEAR`}),example:()=>`YEAR('${e}-02-17')`},YEAR_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Year (UTC)`,{desc:`Formula function label for YEAR_UTC`}),description:()=>(0,a.msg)(`Extracts the year from a date value in UTC.`,{desc:`Formula function description for YEAR_UTC`}),example:()=>`YEAR_UTC('${e}-02-17')`},QUARTER:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Quarter`,{desc:`Formula function label for QUARTER`}),description:()=>(0,a.msg)(`Extracts the quarter from a date value.`,{desc:`Formula function description for QUARTER`}),example:()=>`QUARTER('${e}-02-17')`},QUARTER_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Quarter (UTC)`,{desc:`Formula function label for QUARTER_UTC`}),description:()=>(0,a.msg)(`Extracts the quarter from a date value in UTC.`,{desc:`Formula function description for QUARTER_UTC`}),example:()=>`QUARTER_UTC('${e}-02-17')`},MONTH:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Month`,{desc:`Formula function label for MONTH`}),description:()=>(0,a.msg)(`Extracts the month from a date or datetime value.`,{desc:`Formula function description for MONTH`}),example:()=>`MONTH('${e}-02-17 15:36:59')`},MONTH_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Month (UTC)`,{desc:`Formula function label for MONTH_UTC`}),description:()=>(0,a.msg)(`Extracts the month from a date or datetime value in UTC.`,{desc:`Formula function description for MONTH_UTC`}),example:()=>`MONTH_UTC('${e}-02-17 15:36:59')`},WEEK:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Week`,{desc:`Formula function label for WEEK`}),description:()=>(0,a.msg)(`Extracts the week number from a date or datetime value.`,{desc:`Formula function description for WEEK`}),example:()=>`WEEK('${e}-02-17 15:36:59')`},WEEK_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Week (UTC)`,{desc:`Formula function label for WEEK_UTC`}),description:()=>(0,a.msg)(`Extracts the week number from a date or datetime value in UTC.`,{desc:`Formula function description for WEEK_UTC`}),example:()=>`WEEK_UTC('${e}-02-17 15:36:59')`},DAY:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Day of month`,{desc:`Formula function label for DAY`}),description:()=>(0,a.msg)(`Extracts the day of month from a date or datetime value.`,{desc:`Formula function description for DAY`}),example:()=>`DAY('${e}-02-17 15:36:59')`},DAY_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Day of month (UTC)`,{desc:`Formula function label for DAY_UTC`}),description:()=>(0,a.msg)(`Extracts the day of month from a date or datetime value in UTC.`,{desc:`Formula function description for DAY_UTC`}),example:()=>`DAY_UTC('${e}-02-17 15:36:59')`},DAY_OF_WEEK:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Day of week`,{desc:`Formula function label for DAY_OF_WEEK`}),description:()=>(0,a.msg)(`Extracts the day of week from a date or datetime value.`,{desc:`Formula function description for DAY_OF_WEEK`}),example:()=>`DAY_OF_WEEK('${e}-02-17 15:36:59')`},DAY_OF_WEEK_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Day of week (UTC)`,{desc:`Formula function label for DAY_OF_WEEK_UTC`}),description:()=>(0,a.msg)(`Extracts the day of week from a date or datetime value in UTC.`,{desc:`Formula function description for DAY_OF_WEEK_UTC`}),example:()=>`DAY_OF_WEEK_UTC('${e}-02-17 15:36:59')`},DAY_OF_YEAR:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Day of year`,{desc:`Formula function label for DAY_OF_YEAR`}),description:()=>(0,a.msg)(`Extracts the day of year from a date or datetime value.`,{desc:`Formula function description for DAY_OF_YEAR`}),example:()=>`DAY_OF_YEAR('${e}-02-17 15:36:59')`},DAY_OF_YEAR_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Day of year (UTC)`,{desc:`Formula function label for DAY_OF_YEAR_UTC`}),description:()=>(0,a.msg)(`Extracts the day of year from a date or datetime value in UTC.`,{desc:`Formula function description for DAY_OF_YEAR_UTC`}),example:()=>`DAY_OF_YEAR_UTC('${e}-02-17 15:36:59')`},YEAR_OF_WEEK:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Year of ISO week`,{desc:`Formula function label for YEAR_OF_WEEK`}),description:()=>(0,a.msg)(`Extracts the ISO week-numbering year from a date or datetime value.`,{desc:`Formula function description for YEAR_OF_WEEK`}),example:()=>`YEAR_OF_WEEK('${e}-02-17 15:36:59')`},YEAR_OF_WEEK_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Year of ISO week (UTC)`,{desc:`Formula function label for YEAR_OF_WEEK_UTC`}),description:()=>(0,a.msg)(`Extracts the ISO week-numbering year from a date or datetime value in UTC.`,{desc:`Formula function description for YEAR_OF_WEEK_UTC`}),example:()=>`YEAR_OF_WEEK_UTC('${e}-02-17 15:36:59')`},HOUR:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Hour`,{desc:`Formula function label for HOUR`}),description:()=>(0,a.msg)(`Extracts the hour from a datetime value.`,{desc:`Formula function description for HOUR`}),example:()=>`HOUR('${e}-02-17 15:36:59')`},HOUR_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Hour (UTC)`,{desc:`Formula function label for HOUR_UTC`}),description:()=>(0,a.msg)(`Extracts the hour from a datetime value in UTC.`,{desc:`Formula function description for HOUR_UTC`}),example:()=>`HOUR_UTC('${e}-02-17 15:36:59')`},MINUTE:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Minute`,{desc:`Formula function label for MINUTE`}),description:()=>(0,a.msg)(`Extracts the minute from a datetime value.`,{desc:`Formula function description for MINUTE`}),example:()=>`MINUTE('${e}-02-17 15:36:59')`},MINUTE_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Minute (UTC)`,{desc:`Formula function label for MINUTE_UTC`}),description:()=>(0,a.msg)(`Extracts the minute from a datetime value in UTC.`,{desc:`Formula function description for MINUTE_UTC`}),example:()=>`MINUTE_UTC('${e}-02-17 15:36:59')`},SECOND:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Second`,{desc:`Formula function label for SECOND`}),description:()=>(0,a.msg)(`Extracts the second from a datetime value.`,{desc:`Formula function description for SECOND`}),example:()=>`SECOND('${e}-02-17 15:36:59')`},SECOND_UTC:{type:`prefix`,arity:1,label:()=>(0,a.msg)(`Second (UTC)`,{desc:`Formula function label for SECOND_UTC`}),description:()=>(0,a.msg)(`Extracts the second from a datetime value in UTC.`,{desc:`Formula function description for SECOND_UTC`}),example:()=>`SECOND_UTC('${e}-02-17 15:36:59')`},DATE_ADD:{type:`prefix`,arity:3,label:()=>(0,a.msg)(`Duration`,{desc:`Formula function label for DATE_ADD`}),description:()=>(0,a.msg)(`Adds a time interval to a date or datetime value.`,{desc:`Formula function description for DATE_ADD`}),example:()=>`DATE_ADD('hour', 2, ⟨datetime⟩ Arrival time)`,exampleHasIcons:!0},DATE_DIFF:{type:`prefix`,arity:3,label:()=>(0,a.msg)(`Difference between dates`,{desc:`Formula function label for DATE_DIFF`}),description:()=>(0,a.msg)(`Returns the difference between two dates or datetimes in the selected unit.`,{desc:`Formula function description for DATE_DIFF`}),example:()=>`DATE_DIFF('day', ⟨datetime⟩ Arrival date, '${e}-02-17 15:36:59')`,exampleHasIcons:!0},COORDS:{type:`prefix`,arity:3,label:()=>(0,a.msg)(`Coordinates`,{desc:`Formula function label for COORDS`}),description:()=>(0,a.msg)(`Builds a geography value from latitude, longitude, and spatial reference.`,{desc:`Formula function description for COORDS`}),example:()=>`COORDS(⟨numeric⟩ Latitude, ⟨numeric⟩ Longitude, 'wgs84')`,exampleHasIcons:!0}}}var N=class extends EventTarget{constructor(...e){super(...e),this.functionDataMap=M(),this.aggregationFunctionDataMap=A(),this.multiStageAggregation=!0,this.nestedAggregation=!0,this.readonly=!1,this.contentLanguage=`en`,this.size=`m`,this.datasets=[],this.loading=!1,this.lastFocusedAggregationWidgetId=null,this.pendingFocusAggregationWidgetId=null,this._aggregationWidgets=[]}get aggregationWidgets(){return this._aggregationWidgets}addWidgets(e){!e||e.length===0||(this._aggregationWidgets=[...this._aggregationWidgets,...e],this._notifyWidgetsChanged())}removeWidgets(e){this._aggregationWidgets=this._aggregationWidgets.filter(({widgetId:t})=>!e.includes(t)),this._notifyWidgetsChanged()}updateWidget(e){this._aggregationWidgets=this._aggregationWidgets.map(t=>t.widgetId===e.widgetId?e:t),this._notifyWidgetsChanged()}getWidget(e){return this._aggregationWidgets.find(t=>t.widgetId===e)}clearWidgets(){this._aggregationWidgets.length!==0&&(this._aggregationWidgets=[],this._notifyWidgetsChanged())}_notifyWidgetsChanged(){this.dispatchEvent(new CustomEvent(`widgets-changed`))}setReadonly(e){this.readonly!==e&&(this.readonly=e,this.dispatchEvent(new CustomEvent(`widgets-changed`)))}setLoading(e){this.loading!==e&&(this.loading=e,this.dispatchEvent(new CustomEvent(`refresh-decorations`)))}_markAggregationForFocus(e){let t=e[0];t&&(this.aggregationFunctionDataMap[t.aggregationFunction]?.arity??0)>0&&(this.pendingFocusAggregationWidgetId=t.widgetId)}transformToAggregationWidgetSyntax(e){let t=y(e).match(u);if(!t)return e;let n=!!t[1],r=t.index??0,i=b(e,r+(n?t[1].length:t[0].length)-1+1),a=b(e,r+t[0].length);if(i===-1)return e;let s=e.slice(r+t[0].length,a),c=this.transformToAggregationWidgetSyntax(s),l={widgetId:h(),grouping:t[2]??o.GROUP,aggregationFunction:t[3],content:c};if(l.grouping===o.GROUPINEX){let{includedColumns:t,excludedColumns:n}=x(e.slice(a+1,i));l.includedColumns=t,l.excludedColumns=n}let d=_(l.widgetId),f=`${e.slice(0,r)}${d}${e.slice(i+1)}`;return this.addWidgets([l]),this.transformToAggregationWidgetSyntax(f)}transformToAggregationFunctionSyntax(e){let t=e.match(f);if(!t)return e;let n=t.index??0,r=n+t[0].length-1,i=t[1],a=this.getWidget(i),o=a?this.transformToAggregationFunctionSyntax(v(a,this.aggregationFunctionDataMap)):``,s=`${e.slice(0,n)}${o}${e.slice(r+1)}`;return this.transformToAggregationFunctionSyntax(s)}};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return _}});
@@ -17,4 +17,4 @@
17
17
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18
18
  * SOFTWARE.
19
19
  * */
20
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../formula-display-store-ianfhYAz.cjs"),t=require("../formula-input-base-Bdy8riVz.cjs"),n=require("../formula-editor-CCPiES8u.cjs");exports.FormulaAggregationGrouping=e.g,exports.FormulaEditorStore=t.n,Object.defineProperty(exports,"LuzmoFormulaEditor",{enumerable:!0,get:function(){return n.t}}),exports.ROOT_EDITOR_ID=t.r,exports.ensureFormulaCodeMirrorLoaded=e.s,exports.formulaEditorContext=t.i;
20
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../formula-display-store-_432SuSV.cjs"),t=require("../formula-input-base-DjJ2Q4gu.cjs"),n=require("../formula-editor-DfTDtGC4.cjs");exports.FormulaAggregationGrouping=e.g,exports.FormulaEditorStore=t.n,Object.defineProperty(exports,"LuzmoFormulaEditor",{enumerable:!0,get:function(){return n.t}}),exports.ROOT_EDITOR_ID=t.r,exports.ensureFormulaCodeMirrorLoaded=e.s,exports.formulaEditorContext=t.i;
@@ -24,7 +24,7 @@
24
24
  e.setAttribute("data-luzmo-vars", ""), e.textContent = "html{--luzmo-animation-duration: 0.15s;--luzmo-border-color: rgba(var(--luzmo-border-color-rgb), 0.1);--luzmo-border-color-hover: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-down: rgba(var(--luzmo-border-color-rgb), 0.3);--luzmo-border-color-focus: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-rgb: 0, 0, 0;--luzmo-border-color-full: rgb(180, 180, 180);--luzmo-border-color-full-hover: color-mix(in oklch, var(--luzmo-border-color-full), black 25%);--luzmo-border-color-full-down: color-mix(in oklch, var(--luzmo-border-color-full), black 45%);--luzmo-border-color-full-focus: color-mix(in oklch, var(--luzmo-border-color-full), black 25%);--luzmo-border-color-disabled: #dddddd;--luzmo-border-radius: 6px;--luzmo-border-radius-s: 4px;--luzmo-border-radius-l: 8px;--luzmo-border-radius-xl: 12px;--luzmo-border-radius-full: 999rem;--luzmo-background-color: #ffffff;--luzmo-background-color-rgb: 255, 255, 255;--luzmo-background-color-disabled: #eeeeee;--luzmo-background-color-hover: color-mix( in oklch, color-mix(in oklch, var(--luzmo-background-color), var(--luzmo-primary) 5%), black 1.5% );--luzmo-background-color-down: color-mix(in oklch, color-mix(in oklch, var(--luzmo-background-color), var(--luzmo-primary) 7%), black 1%);--luzmo-background-color-focus: color-mix( in oklch, color-mix(in oklch, var(--luzmo-background-color), var(--luzmo-primary) 5%), black 1.5% );--luzmo-background-color-highlight: rgb(240, 240, 240);--luzmo-background-color-highlight-disabled: rgb(245, 245, 245);--luzmo-background-color-highlight-hover: color-mix(in oklch, var(--luzmo-background-color-highlight), black 25%);--luzmo-background-color-highlight-down: color-mix(in oklch, var(--luzmo-background-color-highlight), black 45%);--luzmo-background-color-highlight-focus: color-mix(in oklch, var(--luzmo-background-color-highlight), black 25%);--luzmo-background-color-alt-1: rgb(250, 250, 250);--luzmo-background-color-alt-2: rgb(239, 239, 239);--luzmo-border-width: 1px;--luzmo-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Helvetica, Arial, sans-serif;--luzmo-font-size-xs: 10px;--luzmo-font-size-s: 12px;--luzmo-font-size-m: 14px;--luzmo-font-size: 14px;--luzmo-font-size-l: 16px;--luzmo-font-size-xl: 18px;--luzmo-font-size-xxl: 20px;--luzmo-font-style: normal;--luzmo-line-height: normal;--luzmo-font-weight: 400;--luzmo-font-weight-semibold: 500;--luzmo-font-weight-bold: 600;--luzmo-font-color: #333;--luzmo-font-color-hard: #000;--luzmo-font-color-disabled: var(--luzmo-color-disabled);--luzmo-font-color-extra-dimmed: #888;--luzmo-font-color-hover: color-mix(in oklch, var(--luzmo-font-color), black 8%);--luzmo-font-color-down: color-mix(in oklch, var(--luzmo-font-color), black 20%);--luzmo-font-color-focus: color-mix(in oklch, var(--luzmo-font-color), black 8%);--luzmo-scrollbar-size: 6px;--luzmo-scrollbar-width: thin;--luzmo-scrollbar-track-background: transparent;--luzmo-scrollbar-track-border-radius: var(--luzmo-border-radius-s);--luzmo-scrollbar-thumb-background: rgba(var(--luzmo-border-color-rgb), 0.3);--luzmo-scrollbar-thumb-border-radius: var(--luzmo-border-radius-s);--luzmo-scrollbar-thumb-hover-background: rgba(var(--luzmo-border-color-rgb), 0.4);--luzmo-primary: #4434ff;--luzmo-primary-hover: color-mix(in oklch, var(--luzmo-primary), black 8%);--luzmo-primary-down: color-mix(in oklch, var(--luzmo-primary), black 20%);--luzmo-primary-focus: color-mix(in oklch, var(--luzmo-primary), black 8%);--luzmo-primary-inverse-color: #ffffff;--luzmo-primary-rgb: 68, 52, 255;--luzmo-secondary: #ff00ff;--luzmo-secondary-hover: color-mix(in oklch, var(--luzmo-secondary), black 8%);--luzmo-secondary-down: color-mix(in oklch, var(--luzmo-secondary), black 20%);--luzmo-secondary-focus: color-mix(in oklch, var(--luzmo-secondary), black 8%);--luzmo-secondary-inverse-color: #ffffff;--luzmo-secondary-rgb: 255, 0, 255;--luzmo-secondary-outline: rgba(255, 0, 255, 0.2);--luzmo-negative-color: #ca221c;--luzmo-negative-color-hover: color-mix(in oklch, var(--luzmo-negative-color), black 8%);--luzmo-negative-color-down: color-mix(in oklch, var(--luzmo-negative-color), black 20%);--luzmo-negative-color-focus: color-mix(in oklch, var(--luzmo-negative-color), black 8%);--luzmo-negative-color-rgb: 202, 34, 28;--luzmo-positive-color: rgb(20, 150, 101);--luzmo-positive-color-hover: color-mix(in oklch, var(--luzmo-positive-color), black 8%);--luzmo-positive-color-down: color-mix(in oklch, var(--luzmo-positive-color), black 20%);--luzmo-positive-color-focus: color-mix(in oklch, var(--luzmo-positive-color), black 8%);--luzmo-positive-color-rgb: 20, 150, 101;--luzmo-selected-color: rgb(110, 110, 110);--luzmo-selected-color-hover: color-mix(in oklch, var(--luzmo-selected-color), black 25%);--luzmo-selected-color-down: color-mix(in oklch, var(--luzmo-selected-color), black 45%);--luzmo-selected-color-focus: color-mix(in oklch, var(--luzmo-selected-color), black 25%);--luzmo-selected-color-hard: #1e1e1e;--luzmo-selected-color-hard-hover: color-mix(in oklch, var(--luzmo-selected-color-hard), black 25%);--luzmo-selected-color-hard-down: color-mix(in oklch, var(--luzmo-selected-color-hard), black 45%);--luzmo-selected-color-hard-focus: color-mix(in oklch, var(--luzmo-selected-color-hard), black 25%);--luzmo-color-informative: #1a77e9;--luzmo-color-informative-rgb: 26, 119, 233;--luzmo-color-disabled: #aaaaaa;--luzmo-spacing-1: 2px;--luzmo-spacing-2: 4px;--luzmo-spacing-3: 8px;--luzmo-spacing-4: 12px;--luzmo-spacing-5: 16px;--luzmo-indicator-gap: 2px;--luzmo-indicator-width: 1px;--luzmo-indicator-color: var(--luzmo-primary);--luzmo-component-height-xxs: 20px;--luzmo-component-height-xs: 24px;--luzmo-component-height-s: 28px;--luzmo-component-height: 32px;--luzmo-component-height-l: 40px;--luzmo-component-height-xl: 48px;--luzmo-component-height-xxl: 64px;--luzmo-icon-size-xxs: 12px;--luzmo-icon-size-xs: 14px;--luzmo-icon-size-s: 16px;--luzmo-icon-size-m: 18px;--luzmo-icon-size-l: 20px;--luzmo-icon-size-xl: 22px;--luzmo-icon-size-xxl: 32px}", document.head.appendChild(e);
25
25
  }
26
26
  })();
27
- import { g as e, s as t } from "../formula-display-store-lENPCY-p.js";
28
- import { i as n, n as r, r as i } from "../formula-input-base-D40h4WMK.js";
29
- import { t as a } from "../formula-editor-BTy_o9zr.js";
27
+ import { g as e, s as t } from "../formula-display-store-BtD83k2x.js";
28
+ import { i as n, n as r, r as i } from "../formula-input-base-B-Li9TP4.js";
29
+ import { t as a } from "../formula-editor-C1zz5pEL.js";
30
30
  export { e as FormulaAggregationGrouping, r as FormulaEditorStore, a as LuzmoFormulaEditor, i as ROOT_EDITOR_ID, t as ensureFormulaCodeMirrorLoaded, n as formulaEditorContext };
@@ -25,9 +25,9 @@ import { t as a } from "./calculate-data-field-icon-DrSg1PuD.js";
25
25
  import { t as o } from "./localize-BT7REYBY.js";
26
26
  import { n as s, t as c } from "./get-css-variable-DZl6AFiB.js";
27
27
  import "./data-field-Dllzzk51.js";
28
- import { a as l, i as u, n as d, p as f, r as p } from "./formula-display-store-lENPCY-p.js";
29
- import { n as m } from "./groupings-FgSCJQwV.js";
30
- import { t as h } from "./formula-input-base-D40h4WMK.js";
28
+ import { a as l, i as u, n as d, p as f, r as p } from "./formula-display-store-BtD83k2x.js";
29
+ import { n as m } from "./groupings-JilcSOEe.js";
30
+ import { t as h } from "./formula-input-base-B-Li9TP4.js";
31
31
  import { luzmoAlertOutline as g, luzmoAngleDown as ee, luzmoAngleRight as te, luzmoArrows as ne, luzmoIcon as _ } from "@luzmo/icons";
32
32
  import { html as v, nothing as y, unsafeCSS as b } from "lit";
33
33
  import { property as x, state as S } from "lit/decorators.js";
@@ -88,7 +88,7 @@ function P(e) {
88
88
  }
89
89
  //#endregion
90
90
  //#region src/components/formula-draggable-field/formula-draggable-field.module.scss?inline
91
- var F = ".draggable{align-items:center;gap:var(--luzmo-spacing-3);box-sizing:border-box;width:100%;min-height:var(--formula-draggable-field-height);padding:0 var(--luzmo-spacing-3);border-radius:var(--luzmo-border-radius);background-color:var(--formula-draggable-field-background);color:var(--luzmo-font-color);font-family:var(--luzmo-font-family);font-size:var(--formula-draggable-field-font-size);text-align:start;cursor:grab;-webkit-user-select:none;user-select:none;border:none;display:flex}.draggable:hover{background-color:var(--luzmo-background-color-highlight)}.draggable:focus-visible{outline:2px solid var(--luzmo-primary);outline-offset:-2px}:host([disabled]) .draggable{opacity:.5;cursor:not-allowed}.draggable-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.drag-icon{color:var(--luzmo-font-color-extra-dimmed);flex:none;align-items:center;display:inline-flex}.icon-slot{flex:none;align-items:center;display:none}.icon-slot.has-icon{display:inline-flex}.tooltip-content{gap:var(--luzmo-spacing-2);text-align:start;flex-direction:column;display:flex}:host{width:100%;font-family:var(--luzmo-font-family);--formula-draggable-field-height:var(--luzmo-component-height);--formula-draggable-field-font-size:var(--luzmo-font-size);--formula-draggable-field-background:transparent;font-size:var(--formula-draggable-field-font-size);display:flex}:host([size=s]){--formula-draggable-field-height:var(--luzmo-component-height-s);--formula-draggable-field-font-size:var(--luzmo-font-size-s)}:host([size=l]){--formula-draggable-field-height:var(--luzmo-component-height-l);--formula-draggable-field-font-size:var(--luzmo-font-size-l)}:host([size=xl]){--formula-draggable-field-height:var(--luzmo-component-height-xl);--formula-draggable-field-font-size:var(--luzmo-font-size-xl)}:host([variant=highlight]){--formula-draggable-field-background:var(--luzmo-formula-draggable-field-background,var(--luzmo-background-color-highlight))}", I = class extends n(t, {
91
+ var F = ".draggable{align-items:center;gap:var(--luzmo-spacing-3);box-sizing:border-box;width:100%;min-height:var(--formula-draggable-field-height);padding:0 var(--luzmo-spacing-3);border-radius:var(--luzmo-border-radius);background-color:var(--formula-draggable-field-background);color:var(--luzmo-font-color);font-family:var(--luzmo-font-family);font-size:var(--formula-draggable-field-font-size);text-align:start;cursor:grab;-webkit-user-select:none;user-select:none;border:none;display:flex}.draggable:hover{background-color:var(--luzmo-background-color-highlight)}.draggable:focus-visible{outline:2px solid var(--luzmo-primary);outline-offset:-2px}:host([disabled]) .draggable{opacity:.5;cursor:not-allowed}.draggable-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.drag-icon{color:var(--luzmo-font-color-extra-dimmed);font-size:var(--luzmo-formula-draggable-field-drag-icon-size,var(--formula-draggable-field-drag-icon-size));flex:none;align-items:center;display:inline-flex}.icon-slot{flex:none;align-items:center;display:none}.icon-slot.has-icon{display:inline-flex}.tooltip-content{gap:var(--luzmo-spacing-2);text-align:start;flex-direction:column;display:flex}:host{width:100%;font-family:var(--luzmo-font-family);--formula-draggable-field-height:var(--luzmo-component-height);--formula-draggable-field-font-size:var(--luzmo-font-size);--formula-draggable-field-background:transparent;--formula-draggable-field-drag-icon-size:var(--luzmo-font-size-s);font-size:var(--formula-draggable-field-font-size);display:flex}:host([size=s]){--formula-draggable-field-height:var(--luzmo-component-height-s);--formula-draggable-field-font-size:var(--luzmo-font-size-s);--formula-draggable-field-drag-icon-size:var(--luzmo-font-size-xs)}:host([size=l]){--formula-draggable-field-height:var(--luzmo-component-height-l);--formula-draggable-field-font-size:var(--luzmo-font-size-l);--formula-draggable-field-drag-icon-size:var(--luzmo-font-size)}:host([size=xl]){--formula-draggable-field-height:var(--luzmo-component-height-xl);--formula-draggable-field-font-size:var(--luzmo-font-size-xl);--formula-draggable-field-drag-icon-size:var(--luzmo-font-size-l)}:host([variant=highlight]){--formula-draggable-field-background:var(--luzmo-formula-draggable-field-background,var(--luzmo-background-color-highlight))}", I = class extends n(t, {
92
92
  validSizes: [
93
93
  "s",
94
94
  "m",
@@ -476,7 +476,7 @@ function le(e) {
476
476
  }
477
477
  //#endregion
478
478
  //#region src/components/formula-editor/formula-editor.module.scss?inline
479
- var ue = ":host{--luzmo-formula-editor-error-color:var(--luzmo-negative-color);--luzmo-formula-font-size:var(--luzmo-font-size);--luzmo-formula-pill-disclosure-icon-size:var(--luzmo-font-size);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-m);--luzmo-formula-control-height:calc(var(--luzmo-component-height) - 2 * var(--luzmo-spacing-1));--formula-editor-lists-height:24rem}:host([size=s]){--luzmo-formula-font-size:var(--luzmo-font-size-s);--luzmo-formula-control-height:calc(var(--luzmo-component-height-s) - 2 * var(--luzmo-spacing-1));--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-s);--formula-editor-lists-height:20rem}:host([size=l]){--luzmo-formula-font-size:var(--luzmo-font-size-l);--luzmo-formula-control-height:calc(var(--luzmo-component-height-l) - 2 * var(--luzmo-spacing-1));--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-l);--formula-editor-lists-height:28rem}:host([size=xl]){--luzmo-formula-font-size:var(--luzmo-font-size-xl);--luzmo-formula-control-height:calc(var(--luzmo-component-height-xl) - 2 * var(--luzmo-spacing-1));--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-xl);--formula-editor-lists-height:32rem}:host{box-sizing:border-box;width:100%;max-width:100%;font-family:var(--luzmo-font-family);color:var(--luzmo-font-color);display:block}.formula-editor{flex-direction:column;width:100%;display:flex}luzmo-formula-codemirror,.formula-codemirror-loading{--luzmo-formula-field-bottom-radius:0;z-index:1;width:100%;position:relative}.error{align-items:center;gap:var(--luzmo-spacing-2);padding:var(--luzmo-spacing-2) var(--luzmo-spacing-3);border:1px solid var(--luzmo-formula-editor-error-color,var(--luzmo-negative-color));color:var(--luzmo-formula-editor-error-color,var(--luzmo-negative-color));font-size:var(--luzmo-font-size-s);border-block-start:0;display:flex}.lists{box-sizing:border-box;min-height:0;border:1px solid var(--luzmo-border-color);border-block-start:0;border-end-end-radius:var(--luzmo-border-radius);border-end-start-radius:var(--luzmo-border-radius);grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:0;padding-block-start:var(--luzmo-formula-editor-gap,0);display:grid}:host([show-aggregations]) .lists,:host([explanation-display=description]) .lists{grid-template-columns:repeat(3,minmax(0,1fr))}:host([show-aggregations][explanation-display=description]) .lists{grid-template-columns:repeat(4,minmax(0,1fr))}.lists>*{min-width:0;padding:var(--luzmo-formula-editor-list-padding,var(--luzmo-spacing-3));--luzmo-formula-list-height:var(--luzmo-formula-editor-lists-height,var(--formula-editor-lists-height,16rem))}.lists>:not(:last-child){border-inline-end:1px solid var(--luzmo-border-color)}.lists{--list-text-font-size:var(--luzmo-font-size)}:host([size=s]) .lists{--list-text-font-size:var(--luzmo-font-size-s)}:host([size=l]) .lists{--list-text-font-size:var(--luzmo-font-size-l)}:host([size=xl]) .lists{--list-text-font-size:var(--luzmo-font-size-xl)}.lists .list{gap:var(--luzmo-spacing-2);min-height:0;height:var(--luzmo-formula-list-height,100%);box-sizing:border-box;flex-direction:column;display:flex}.lists .list-header{flex-shrink:0;margin-block-end:var(--luzmo-spacing-1);display:block}.lists .list-items{gap:var(--luzmo-spacing-1);flex-direction:column;align-content:flex-start;min-height:0;display:flex;overflow-y:auto}.lists .list-items::-webkit-scrollbar{width:var(--luzmo-scrollbar-width,6px)}.lists .list-items::-webkit-scrollbar-track{background:var(--luzmo-scrollbar-track-background,transparent);border-radius:var(--luzmo-scrollbar-track-border-radius,4px)}.lists .list-items::-webkit-scrollbar-thumb{background:var(--luzmo-scrollbar-thumb-background,#0003);border-radius:var(--luzmo-scrollbar-thumb-border-radius,4px)}.lists .list-items::-webkit-scrollbar-thumb:hover{background:var(--luzmo-scrollbar-thumb-hover-background,#00000059)}.lists .list-items{scrollbar-width:var(--luzmo-scrollbar-width,thin);scrollbar-color:var(--luzmo-scrollbar-thumb-background,#0003) var(--luzmo-scrollbar-track-background,transparent)}.lists .list-scroll{gap:var(--luzmo-spacing-2,.5rem);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden auto}.lists .list-scroll::-webkit-scrollbar{width:var(--luzmo-scrollbar-width,6px)}.lists .list-scroll::-webkit-scrollbar-track{background:var(--luzmo-scrollbar-track-background,transparent);border-radius:var(--luzmo-scrollbar-track-border-radius,4px)}.lists .list-scroll::-webkit-scrollbar-thumb{background:var(--luzmo-scrollbar-thumb-background,#0003);border-radius:var(--luzmo-scrollbar-thumb-border-radius,4px)}.lists .list-scroll::-webkit-scrollbar-thumb:hover{background:var(--luzmo-scrollbar-thumb-hover-background,#00000059)}.lists .list-scroll{scrollbar-width:var(--luzmo-scrollbar-width,thin);scrollbar-color:var(--luzmo-scrollbar-thumb-background,#0003) var(--luzmo-scrollbar-track-background,transparent)}.lists luzmo-select,.lists luzmo-search{width:100%}.lists .list-loading{min-height:0;padding:var(--luzmo-spacing-4);flex:1;justify-content:center;align-items:center;display:flex}.lists .dataset-group{gap:var(--luzmo-spacing-1);flex-direction:column;display:flex}.lists .dataset-group-header{align-items:center;gap:var(--luzmo-spacing-1);width:100%;padding:var(--luzmo-spacing-1) 0;color:var(--luzmo-font-color-extra-dimmed);font:inherit;font-size:var(--list-text-font-size);font-weight:var(--luzmo-font-weight-bold);text-align:start;cursor:pointer;background:0 0;border:none;display:flex}.lists .dataset-group-fields{gap:var(--luzmo-spacing-1);flex-direction:column;display:flex}.lists .dataset-group-fields luzmo-data-field{--luzmo-data-field-level-border-width:0;--luzmo-data-field-level-background-color:transparent;--luzmo-data-field-level-horizontal-padding:var(--luzmo-spacing-3);--luzmo-data-field-level-gap:var(--luzmo-spacing-3)}.lists .description{gap:var(--luzmo-spacing-2)}.lists .description-title{font-weight:var(--luzmo-font-weight-bold);font-size:var(--list-text-font-size)}.lists .description-text{font-size:var(--list-text-font-size);color:var(--luzmo-font-color-extra-dimmed);line-height:1.4}.lists .description-empty{font-size:var(--list-text-font-size);color:var(--luzmo-font-color-tertiary,#767676);font-style:italic}.lists .example-code{align-items:center;gap:var(--luzmo-spacing-1);padding:var(--luzmo-spacing-2);border-radius:var(--luzmo-border-radius-s);background-color:var(--luzmo-background-color-highlight);font-family:var(--luzmo-font-family-mono,monospace);font-size:var(--list-text-font-size);flex-wrap:wrap;display:inline-flex}.lists .example-icon{vertical-align:middle;display:inline-flex}.lists .explanation-tooltip{gap:var(--luzmo-spacing-2);text-align:start;flex-direction:column;display:flex}.lists .explanation-tooltip .tooltip-example{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;font-weight:var(--luzmo-font-weight-bold,700);white-space:pre-wrap;display:block}.lists .explanation-tooltip .example-icon{display:inline}", de = 750, $ = class extends h {
479
+ var ue = ":host{--luzmo-formula-editor-error-color:var(--luzmo-negative-color);--luzmo-formula-font-size:var(--luzmo-font-size);--luzmo-formula-pill-disclosure-icon-size:var(--luzmo-font-size);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-m);--luzmo-formula-control-height:calc(var(--luzmo-component-height) - 2 * var(--luzmo-spacing-1));--formula-editor-lists-height:24rem}:host([size=s]){--luzmo-formula-font-size:var(--luzmo-font-size-s);--luzmo-formula-control-height:calc(var(--luzmo-component-height-s) - 2 * var(--luzmo-spacing-1));--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-s);--formula-editor-lists-height:20rem}:host([size=l]){--luzmo-formula-font-size:var(--luzmo-font-size-l);--luzmo-formula-control-height:calc(var(--luzmo-component-height-l) - 2 * var(--luzmo-spacing-1));--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-l);--formula-editor-lists-height:28rem}:host([size=xl]){--luzmo-formula-font-size:var(--luzmo-font-size-xl);--luzmo-formula-control-height:calc(var(--luzmo-component-height-xl) - 2 * var(--luzmo-spacing-1));--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-xl);--formula-editor-lists-height:32rem}:host{box-sizing:border-box;width:100%;max-width:100%;font-family:var(--luzmo-font-family);color:var(--luzmo-font-color);display:block}.formula-editor{flex-direction:column;width:100%;display:flex}luzmo-formula-codemirror,.formula-codemirror-loading{--luzmo-formula-field-bottom-radius:0;z-index:1;width:100%;position:relative}.error{align-items:flex-start;gap:var(--luzmo-spacing-2);padding:var(--luzmo-spacing-2) var(--luzmo-spacing-3);border:1px solid var(--luzmo-formula-editor-error-color,var(--luzmo-negative-color));color:var(--luzmo-formula-editor-error-color,var(--luzmo-negative-color));font-size:var(--luzmo-font-size-s);border-block-start:0;line-height:1.4;display:flex}.error svg{flex:none;margin-block-start:.2em}.lists{box-sizing:border-box;min-height:0;border:1px solid var(--luzmo-border-color);border-block-start:0;border-end-end-radius:var(--luzmo-border-radius);border-end-start-radius:var(--luzmo-border-radius);grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:0;padding-block-start:var(--luzmo-formula-editor-gap,0);display:grid}:host([show-aggregations]) .lists,:host([explanation-display=description]) .lists{grid-template-columns:repeat(3,minmax(0,1fr))}:host([show-aggregations][explanation-display=description]) .lists{grid-template-columns:repeat(4,minmax(0,1fr))}.lists>*{min-width:0;padding:var(--luzmo-formula-editor-list-padding,var(--luzmo-spacing-3));--luzmo-formula-list-height:var(--luzmo-formula-editor-lists-height,var(--formula-editor-lists-height,16rem))}.lists>:not(:last-child){border-inline-end:1px solid var(--luzmo-border-color)}.lists{--list-text-font-size:var(--luzmo-font-size)}:host([size=s]) .lists{--list-text-font-size:var(--luzmo-font-size-s)}:host([size=l]) .lists{--list-text-font-size:var(--luzmo-font-size-l)}:host([size=xl]) .lists{--list-text-font-size:var(--luzmo-font-size-xl)}.lists .list{gap:var(--luzmo-spacing-2);min-height:0;height:var(--luzmo-formula-list-height,100%);box-sizing:border-box;flex-direction:column;display:flex}.lists .list-header{flex-shrink:0;margin-block-end:var(--luzmo-spacing-1);display:block}.lists .list-items{gap:var(--luzmo-spacing-1);flex-direction:column;align-content:flex-start;min-height:0;display:flex;overflow-y:auto}.lists .list-items::-webkit-scrollbar{width:var(--luzmo-scrollbar-width,6px)}.lists .list-items::-webkit-scrollbar-track{background:var(--luzmo-scrollbar-track-background,transparent);border-radius:var(--luzmo-scrollbar-track-border-radius,4px)}.lists .list-items::-webkit-scrollbar-thumb{background:var(--luzmo-scrollbar-thumb-background,#0003);border-radius:var(--luzmo-scrollbar-thumb-border-radius,4px)}.lists .list-items::-webkit-scrollbar-thumb:hover{background:var(--luzmo-scrollbar-thumb-hover-background,#00000059)}.lists .list-items{scrollbar-width:var(--luzmo-scrollbar-width,thin);scrollbar-color:var(--luzmo-scrollbar-thumb-background,#0003) var(--luzmo-scrollbar-track-background,transparent)}.lists .list-scroll{gap:var(--luzmo-spacing-2,.5rem);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden auto}.lists .list-scroll::-webkit-scrollbar{width:var(--luzmo-scrollbar-width,6px)}.lists .list-scroll::-webkit-scrollbar-track{background:var(--luzmo-scrollbar-track-background,transparent);border-radius:var(--luzmo-scrollbar-track-border-radius,4px)}.lists .list-scroll::-webkit-scrollbar-thumb{background:var(--luzmo-scrollbar-thumb-background,#0003);border-radius:var(--luzmo-scrollbar-thumb-border-radius,4px)}.lists .list-scroll::-webkit-scrollbar-thumb:hover{background:var(--luzmo-scrollbar-thumb-hover-background,#00000059)}.lists .list-scroll{scrollbar-width:var(--luzmo-scrollbar-width,thin);scrollbar-color:var(--luzmo-scrollbar-thumb-background,#0003) var(--luzmo-scrollbar-track-background,transparent)}.lists luzmo-select,.lists luzmo-search{width:100%}.lists .list-loading{min-height:0;padding:var(--luzmo-spacing-4);flex:1;justify-content:center;align-items:center;display:flex}.lists .dataset-group{gap:var(--luzmo-spacing-1);flex-direction:column;display:flex}.lists .dataset-group-header{align-items:center;gap:var(--luzmo-spacing-1);width:100%;padding:var(--luzmo-spacing-1) 0;color:var(--luzmo-font-color-extra-dimmed);font:inherit;font-size:var(--list-text-font-size);font-weight:var(--luzmo-font-weight-bold);text-align:start;cursor:pointer;background:0 0;border:none;display:flex}.lists .dataset-group-fields{gap:var(--luzmo-spacing-1);flex-direction:column;display:flex}.lists .dataset-group-fields luzmo-data-field{--luzmo-data-field-level-border-width:0;--luzmo-data-field-level-background-color:transparent;--luzmo-data-field-level-horizontal-padding:var(--luzmo-spacing-3);--luzmo-data-field-level-gap:var(--luzmo-spacing-3);--luzmo-data-field-level-background-color-hover:var(--luzmo-formula-editor-data-field-background-color-hover,var(--luzmo-background-color-highlight));--luzmo-data-field-level-border-color-hover:var(--luzmo-formula-editor-data-field-border-color-hover,var(--luzmo-background-color-highlight));--luzmo-data-field-level-background-color-active:var(--luzmo-formula-editor-data-field-background-color-active,var(--luzmo-background-color-highlight-down));--luzmo-data-field-level-border-color-active:var(--luzmo-formula-editor-data-field-border-color-active,var(--luzmo-background-color-highlight-down));--luzmo-data-field-level-background-color-focus-visible:var(--luzmo-formula-editor-data-field-background-color-focus,var(--luzmo-background-color-highlight-focus))}.lists .description{gap:var(--luzmo-spacing-2)}.lists .description-title{font-weight:var(--luzmo-font-weight-bold);font-size:var(--list-text-font-size)}.lists .description-text{font-size:var(--list-text-font-size);color:var(--luzmo-font-color-extra-dimmed);line-height:1.4}.lists .description-empty{font-size:var(--list-text-font-size);color:var(--luzmo-font-color-tertiary,#767676);font-style:italic}.lists .example-code{align-items:center;gap:var(--luzmo-spacing-1);padding:var(--luzmo-spacing-2);border-radius:var(--luzmo-border-radius-s);background-color:var(--luzmo-background-color-highlight);font-family:var(--luzmo-font-family-mono,monospace);font-size:var(--list-text-font-size);flex-wrap:wrap;display:inline-flex}.lists .example-icon{vertical-align:middle;display:inline-flex}.lists .explanation-tooltip{gap:var(--luzmo-spacing-2);text-align:start;flex-direction:column;display:flex}.lists .explanation-tooltip .tooltip-example{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;font-weight:var(--luzmo-font-weight-bold,700);white-space:pre-wrap;display:block}.lists .explanation-tooltip .example-icon{display:inline}", de = 750, $ = class extends h {
480
480
  constructor(...e) {
481
481
  super(...e), this.expressionResource = "formula", this.explanationDisplay = "tooltip", this._loadingDatasets = !1, this._describeTarget = null, this._hasError = !1, this._errorMessage = null, this._selectedCategory = "string", this._searchQuery = "", this._collapsedDatasets = /* @__PURE__ */ new Set(), this._validWordIdentifiers = M(this._store.functionDataMap, this._store.aggregationFunctionDataMap), this._validationSequence = 0;
482
482
  }
@@ -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
- const e=require("./base-CHERUz8a.cjs"),t=require("./decorate-DCJt-2rt.cjs"),n=require("./data-broker-BH5WDG0j.cjs"),r=require("./calculate-data-field-icon-DenGmW74.cjs"),i=require("./localize-D3i4Epy_.cjs"),a=require("./adapter-BKowFrlw.cjs"),o=require("./get-css-variable-f6ZYOxm7.cjs");require("./data-field-CK5mg8ov.cjs");const s=require("./formula-display-store-ianfhYAz.cjs"),c=require("./groupings-Cm5tMojA.cjs"),l=require("./formula-input-base-Bdy8riVz.cjs");let u=require("@luzmo/icons"),d=require("lit"),f=require("lit/decorators.js"),p=require("@lit/localize");require("@luzmo/lucero/icon"),require("@luzmo/lucero/select"),require("@luzmo/lucero/tooltip");let m=require("lit/directives/repeat.js");require("@luzmo/lucero/field-label"),require("@luzmo/lucero/progress-circle"),require("@luzmo/lucero/search");var h=[`numeric`,`hierarchy`,`datetime`,`spatial`],g=[`true`,`false`,`null`],_=[`GROUP`,`GROUPFULL`,`GROUPINEX`],v=/'(?:[^']|'')*'|"(?:[^"]|"")*"/g,y=/\{[^}]*\}/g,b=/[A-Za-z_][A-Za-z0-9_]*/g;function x(e,t){let n=new Set;for(let t of Object.keys(e))/^[A-Za-z_]/.test(t)&&n.add(t.toUpperCase());for(let e of Object.keys(t))n.add(e.toUpperCase());for(let e of[..._,...h,...g])n.add(e.toUpperCase());return n}function S(e,t){let n=e.replace(v,` `).replace(y,` `);b.lastIndex=0;let r;for(;(r=b.exec(n))!==null;)if(!t.has(r[0].toUpperCase()))return r[0];return null}function C(e){return function(t){var n=t.container;return Object.assign(n.style,{borderLeft:`${e.x} solid transparent`,borderTop:`${e.y} solid transparent`}),{x:0,y:0}}}var w=`.draggable{align-items:center;gap:var(--luzmo-spacing-3);box-sizing:border-box;width:100%;min-height:var(--formula-draggable-field-height);padding:0 var(--luzmo-spacing-3);border-radius:var(--luzmo-border-radius);background-color:var(--formula-draggable-field-background);color:var(--luzmo-font-color);font-family:var(--luzmo-font-family);font-size:var(--formula-draggable-field-font-size);text-align:start;cursor:grab;-webkit-user-select:none;user-select:none;border:none;display:flex}.draggable:hover{background-color:var(--luzmo-background-color-highlight)}.draggable:focus-visible{outline:2px solid var(--luzmo-primary);outline-offset:-2px}:host([disabled]) .draggable{opacity:.5;cursor:not-allowed}.draggable-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.drag-icon{color:var(--luzmo-font-color-extra-dimmed);flex:none;align-items:center;display:inline-flex}.icon-slot{flex:none;align-items:center;display:none}.icon-slot.has-icon{display:inline-flex}.tooltip-content{gap:var(--luzmo-spacing-2);text-align:start;flex-direction:column;display:flex}:host{width:100%;font-family:var(--luzmo-font-family);--formula-draggable-field-height:var(--luzmo-component-height);--formula-draggable-field-font-size:var(--luzmo-font-size);--formula-draggable-field-background:transparent;font-size:var(--formula-draggable-field-font-size);display:flex}:host([size=s]){--formula-draggable-field-height:var(--luzmo-component-height-s);--formula-draggable-field-font-size:var(--luzmo-font-size-s)}:host([size=l]){--formula-draggable-field-height:var(--luzmo-component-height-l);--formula-draggable-field-font-size:var(--luzmo-font-size-l)}:host([size=xl]){--formula-draggable-field-height:var(--luzmo-component-height-xl);--formula-draggable-field-font-size:var(--luzmo-font-size-xl)}:host([variant=highlight]){--formula-draggable-field-background:var(--luzmo-formula-draggable-field-background,var(--luzmo-background-color-highlight))}`,T=class extends e.n(e.i,{validSizes:[`s`,`m`,`l`,`xl`],noDefaultSize:!0}){constructor(...e){super(...e),this.kind=``,this.value=``,this.label=``,this.description=``,this.tooltipPlacement=`right`,this.variant=`default`,this.disabled=!1,this._hasIcon=!1,this._hasTooltipSlot=!1}static{this.styles=(0,d.unsafeCSS)(w)}_handleIconSlotChange(e){this._hasIcon=e.target.assignedNodes({flatten:!0}).length>0}_handleTooltipSlotChange(e){this._hasTooltipSlot=e.target.assignedNodes({flatten:!0}).length>0}disconnectedCallback(){super.disconnectedCallback(),this._cleanupDraggable?.(),this._cleanupDraggable=void 0}firstUpdated(e){this._cleanupDraggable=a.t({element:this,canDrag:()=>!this.disabled,onDragStart:()=>{this.style.opacity=`0.5`},onDrop:()=>{this.style.opacity=`1`},getInitialData:()=>({kind:this.kind,value:this.value}),onGenerateDragPreview:({nativeSetDragImage:e})=>{o.n({nativeSetDragImage:e,getOffset:C({x:`8px`,y:`8px`}),render:({container:e})=>{e.append(this._buildDragPreview())}})}})}_buildDragPreview(){let e=document.createElement(`div`),t=this.variant===`highlight`?o.t(this,`--luzmo-formula-draggable-field-background`)||o.t(this,`--luzmo-background-color-highlight`):o.t(this,`--luzmo-background-color`);return e.textContent=this.label,Object.assign(e.style,{display:`inline-flex`,alignItems:`center`,maxWidth:`14rem`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,padding:`4px 8px`,borderRadius:o.t(this,`--luzmo-border-radius`)||`6px`,border:`1px solid ${o.t(this,`--luzmo-border-color`)}`,background:t,color:o.t(this,`--luzmo-font-color`),fontFamily:o.t(this,`--luzmo-font-family`),fontSize:getComputedStyle(this).fontSize,lineHeight:`1`,boxShadow:o.t(this,`--luzmo-box-shadow`)||`0 1px 4px rgb(0 0 0 / 15%)`}),e}_handleClick(e){e.detail===0&&this._activate()}_activate(){this.disabled||this.dispatchEvent(new CustomEvent(`luzmo-formula-draggable-field-activate`,{bubbles:!0,composed:!0,detail:{kind:this.kind,value:this.value}}))}_describe(){this.dispatchEvent(new CustomEvent(`luzmo-formula-draggable-field-describe`,{bubbles:!0,composed:!0,detail:{kind:this.kind,value:this.value}}))}render(){let e=this._hasTooltipSlot||!!this.description;return d.html`
20
+ const e=require("./base-CHERUz8a.cjs"),t=require("./decorate-DCJt-2rt.cjs"),n=require("./data-broker-BH5WDG0j.cjs"),r=require("./calculate-data-field-icon-DenGmW74.cjs"),i=require("./localize-D3i4Epy_.cjs"),a=require("./adapter-BKowFrlw.cjs"),o=require("./get-css-variable-f6ZYOxm7.cjs");require("./data-field-CK5mg8ov.cjs");const s=require("./formula-display-store-_432SuSV.cjs"),c=require("./groupings-BdNTQMKX.cjs"),l=require("./formula-input-base-DjJ2Q4gu.cjs");let u=require("@luzmo/icons"),d=require("lit"),f=require("lit/decorators.js"),p=require("@lit/localize");require("@luzmo/lucero/icon"),require("@luzmo/lucero/select"),require("@luzmo/lucero/tooltip");let m=require("lit/directives/repeat.js");require("@luzmo/lucero/field-label"),require("@luzmo/lucero/progress-circle"),require("@luzmo/lucero/search");var h=[`numeric`,`hierarchy`,`datetime`,`spatial`],g=[`true`,`false`,`null`],_=[`GROUP`,`GROUPFULL`,`GROUPINEX`],v=/'(?:[^']|'')*'|"(?:[^"]|"")*"/g,y=/\{[^}]*\}/g,b=/[A-Za-z_][A-Za-z0-9_]*/g;function x(e,t){let n=new Set;for(let t of Object.keys(e))/^[A-Za-z_]/.test(t)&&n.add(t.toUpperCase());for(let e of Object.keys(t))n.add(e.toUpperCase());for(let e of[..._,...h,...g])n.add(e.toUpperCase());return n}function S(e,t){let n=e.replace(v,` `).replace(y,` `);b.lastIndex=0;let r;for(;(r=b.exec(n))!==null;)if(!t.has(r[0].toUpperCase()))return r[0];return null}function C(e){return function(t){var n=t.container;return Object.assign(n.style,{borderLeft:`${e.x} solid transparent`,borderTop:`${e.y} solid transparent`}),{x:0,y:0}}}var w=`.draggable{align-items:center;gap:var(--luzmo-spacing-3);box-sizing:border-box;width:100%;min-height:var(--formula-draggable-field-height);padding:0 var(--luzmo-spacing-3);border-radius:var(--luzmo-border-radius);background-color:var(--formula-draggable-field-background);color:var(--luzmo-font-color);font-family:var(--luzmo-font-family);font-size:var(--formula-draggable-field-font-size);text-align:start;cursor:grab;-webkit-user-select:none;user-select:none;border:none;display:flex}.draggable:hover{background-color:var(--luzmo-background-color-highlight)}.draggable:focus-visible{outline:2px solid var(--luzmo-primary);outline-offset:-2px}:host([disabled]) .draggable{opacity:.5;cursor:not-allowed}.draggable-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.drag-icon{color:var(--luzmo-font-color-extra-dimmed);font-size:var(--luzmo-formula-draggable-field-drag-icon-size,var(--formula-draggable-field-drag-icon-size));flex:none;align-items:center;display:inline-flex}.icon-slot{flex:none;align-items:center;display:none}.icon-slot.has-icon{display:inline-flex}.tooltip-content{gap:var(--luzmo-spacing-2);text-align:start;flex-direction:column;display:flex}:host{width:100%;font-family:var(--luzmo-font-family);--formula-draggable-field-height:var(--luzmo-component-height);--formula-draggable-field-font-size:var(--luzmo-font-size);--formula-draggable-field-background:transparent;--formula-draggable-field-drag-icon-size:var(--luzmo-font-size-s);font-size:var(--formula-draggable-field-font-size);display:flex}:host([size=s]){--formula-draggable-field-height:var(--luzmo-component-height-s);--formula-draggable-field-font-size:var(--luzmo-font-size-s);--formula-draggable-field-drag-icon-size:var(--luzmo-font-size-xs)}:host([size=l]){--formula-draggable-field-height:var(--luzmo-component-height-l);--formula-draggable-field-font-size:var(--luzmo-font-size-l);--formula-draggable-field-drag-icon-size:var(--luzmo-font-size)}:host([size=xl]){--formula-draggable-field-height:var(--luzmo-component-height-xl);--formula-draggable-field-font-size:var(--luzmo-font-size-xl);--formula-draggable-field-drag-icon-size:var(--luzmo-font-size-l)}:host([variant=highlight]){--formula-draggable-field-background:var(--luzmo-formula-draggable-field-background,var(--luzmo-background-color-highlight))}`,T=class extends e.n(e.i,{validSizes:[`s`,`m`,`l`,`xl`],noDefaultSize:!0}){constructor(...e){super(...e),this.kind=``,this.value=``,this.label=``,this.description=``,this.tooltipPlacement=`right`,this.variant=`default`,this.disabled=!1,this._hasIcon=!1,this._hasTooltipSlot=!1}static{this.styles=(0,d.unsafeCSS)(w)}_handleIconSlotChange(e){this._hasIcon=e.target.assignedNodes({flatten:!0}).length>0}_handleTooltipSlotChange(e){this._hasTooltipSlot=e.target.assignedNodes({flatten:!0}).length>0}disconnectedCallback(){super.disconnectedCallback(),this._cleanupDraggable?.(),this._cleanupDraggable=void 0}firstUpdated(e){this._cleanupDraggable=a.t({element:this,canDrag:()=>!this.disabled,onDragStart:()=>{this.style.opacity=`0.5`},onDrop:()=>{this.style.opacity=`1`},getInitialData:()=>({kind:this.kind,value:this.value}),onGenerateDragPreview:({nativeSetDragImage:e})=>{o.n({nativeSetDragImage:e,getOffset:C({x:`8px`,y:`8px`}),render:({container:e})=>{e.append(this._buildDragPreview())}})}})}_buildDragPreview(){let e=document.createElement(`div`),t=this.variant===`highlight`?o.t(this,`--luzmo-formula-draggable-field-background`)||o.t(this,`--luzmo-background-color-highlight`):o.t(this,`--luzmo-background-color`);return e.textContent=this.label,Object.assign(e.style,{display:`inline-flex`,alignItems:`center`,maxWidth:`14rem`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,padding:`4px 8px`,borderRadius:o.t(this,`--luzmo-border-radius`)||`6px`,border:`1px solid ${o.t(this,`--luzmo-border-color`)}`,background:t,color:o.t(this,`--luzmo-font-color`),fontFamily:o.t(this,`--luzmo-font-family`),fontSize:getComputedStyle(this).fontSize,lineHeight:`1`,boxShadow:o.t(this,`--luzmo-box-shadow`)||`0 1px 4px rgb(0 0 0 / 15%)`}),e}_handleClick(e){e.detail===0&&this._activate()}_activate(){this.disabled||this.dispatchEvent(new CustomEvent(`luzmo-formula-draggable-field-activate`,{bubbles:!0,composed:!0,detail:{kind:this.kind,value:this.value}}))}_describe(){this.dispatchEvent(new CustomEvent(`luzmo-formula-draggable-field-describe`,{bubbles:!0,composed:!0,detail:{kind:this.kind,value:this.value}}))}render(){let e=this._hasTooltipSlot||!!this.description;return d.html`
21
21
  <button
22
22
  class="draggable"
23
23
  type="button"
@@ -194,7 +194,7 @@ const e=require("./base-CHERUz8a.cjs"),t=require("./decorate-DCJt-2rt.cjs"),n=re
194
194
  ></luzmo-select>
195
195
  ${n?G(t):K(c.functions,e)}
196
196
  </div>
197
- `}var J=`:host{--luzmo-formula-editor-error-color:var(--luzmo-negative-color);--luzmo-formula-font-size:var(--luzmo-font-size);--luzmo-formula-pill-disclosure-icon-size:var(--luzmo-font-size);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-m);--luzmo-formula-control-height:calc(var(--luzmo-component-height) - 2 * var(--luzmo-spacing-1));--formula-editor-lists-height:24rem}:host([size=s]){--luzmo-formula-font-size:var(--luzmo-font-size-s);--luzmo-formula-control-height:calc(var(--luzmo-component-height-s) - 2 * var(--luzmo-spacing-1));--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-s);--formula-editor-lists-height:20rem}:host([size=l]){--luzmo-formula-font-size:var(--luzmo-font-size-l);--luzmo-formula-control-height:calc(var(--luzmo-component-height-l) - 2 * var(--luzmo-spacing-1));--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-l);--formula-editor-lists-height:28rem}:host([size=xl]){--luzmo-formula-font-size:var(--luzmo-font-size-xl);--luzmo-formula-control-height:calc(var(--luzmo-component-height-xl) - 2 * var(--luzmo-spacing-1));--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-xl);--formula-editor-lists-height:32rem}:host{box-sizing:border-box;width:100%;max-width:100%;font-family:var(--luzmo-font-family);color:var(--luzmo-font-color);display:block}.formula-editor{flex-direction:column;width:100%;display:flex}luzmo-formula-codemirror,.formula-codemirror-loading{--luzmo-formula-field-bottom-radius:0;z-index:1;width:100%;position:relative}.error{align-items:center;gap:var(--luzmo-spacing-2);padding:var(--luzmo-spacing-2) var(--luzmo-spacing-3);border:1px solid var(--luzmo-formula-editor-error-color,var(--luzmo-negative-color));color:var(--luzmo-formula-editor-error-color,var(--luzmo-negative-color));font-size:var(--luzmo-font-size-s);border-block-start:0;display:flex}.lists{box-sizing:border-box;min-height:0;border:1px solid var(--luzmo-border-color);border-block-start:0;border-end-end-radius:var(--luzmo-border-radius);border-end-start-radius:var(--luzmo-border-radius);grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:0;padding-block-start:var(--luzmo-formula-editor-gap,0);display:grid}:host([show-aggregations]) .lists,:host([explanation-display=description]) .lists{grid-template-columns:repeat(3,minmax(0,1fr))}:host([show-aggregations][explanation-display=description]) .lists{grid-template-columns:repeat(4,minmax(0,1fr))}.lists>*{min-width:0;padding:var(--luzmo-formula-editor-list-padding,var(--luzmo-spacing-3));--luzmo-formula-list-height:var(--luzmo-formula-editor-lists-height,var(--formula-editor-lists-height,16rem))}.lists>:not(:last-child){border-inline-end:1px solid var(--luzmo-border-color)}.lists{--list-text-font-size:var(--luzmo-font-size)}:host([size=s]) .lists{--list-text-font-size:var(--luzmo-font-size-s)}:host([size=l]) .lists{--list-text-font-size:var(--luzmo-font-size-l)}:host([size=xl]) .lists{--list-text-font-size:var(--luzmo-font-size-xl)}.lists .list{gap:var(--luzmo-spacing-2);min-height:0;height:var(--luzmo-formula-list-height,100%);box-sizing:border-box;flex-direction:column;display:flex}.lists .list-header{flex-shrink:0;margin-block-end:var(--luzmo-spacing-1);display:block}.lists .list-items{gap:var(--luzmo-spacing-1);flex-direction:column;align-content:flex-start;min-height:0;display:flex;overflow-y:auto}.lists .list-items::-webkit-scrollbar{width:var(--luzmo-scrollbar-width,6px)}.lists .list-items::-webkit-scrollbar-track{background:var(--luzmo-scrollbar-track-background,transparent);border-radius:var(--luzmo-scrollbar-track-border-radius,4px)}.lists .list-items::-webkit-scrollbar-thumb{background:var(--luzmo-scrollbar-thumb-background,#0003);border-radius:var(--luzmo-scrollbar-thumb-border-radius,4px)}.lists .list-items::-webkit-scrollbar-thumb:hover{background:var(--luzmo-scrollbar-thumb-hover-background,#00000059)}.lists .list-items{scrollbar-width:var(--luzmo-scrollbar-width,thin);scrollbar-color:var(--luzmo-scrollbar-thumb-background,#0003) var(--luzmo-scrollbar-track-background,transparent)}.lists .list-scroll{gap:var(--luzmo-spacing-2,.5rem);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden auto}.lists .list-scroll::-webkit-scrollbar{width:var(--luzmo-scrollbar-width,6px)}.lists .list-scroll::-webkit-scrollbar-track{background:var(--luzmo-scrollbar-track-background,transparent);border-radius:var(--luzmo-scrollbar-track-border-radius,4px)}.lists .list-scroll::-webkit-scrollbar-thumb{background:var(--luzmo-scrollbar-thumb-background,#0003);border-radius:var(--luzmo-scrollbar-thumb-border-radius,4px)}.lists .list-scroll::-webkit-scrollbar-thumb:hover{background:var(--luzmo-scrollbar-thumb-hover-background,#00000059)}.lists .list-scroll{scrollbar-width:var(--luzmo-scrollbar-width,thin);scrollbar-color:var(--luzmo-scrollbar-thumb-background,#0003) var(--luzmo-scrollbar-track-background,transparent)}.lists luzmo-select,.lists luzmo-search{width:100%}.lists .list-loading{min-height:0;padding:var(--luzmo-spacing-4);flex:1;justify-content:center;align-items:center;display:flex}.lists .dataset-group{gap:var(--luzmo-spacing-1);flex-direction:column;display:flex}.lists .dataset-group-header{align-items:center;gap:var(--luzmo-spacing-1);width:100%;padding:var(--luzmo-spacing-1) 0;color:var(--luzmo-font-color-extra-dimmed);font:inherit;font-size:var(--list-text-font-size);font-weight:var(--luzmo-font-weight-bold);text-align:start;cursor:pointer;background:0 0;border:none;display:flex}.lists .dataset-group-fields{gap:var(--luzmo-spacing-1);flex-direction:column;display:flex}.lists .dataset-group-fields luzmo-data-field{--luzmo-data-field-level-border-width:0;--luzmo-data-field-level-background-color:transparent;--luzmo-data-field-level-horizontal-padding:var(--luzmo-spacing-3);--luzmo-data-field-level-gap:var(--luzmo-spacing-3)}.lists .description{gap:var(--luzmo-spacing-2)}.lists .description-title{font-weight:var(--luzmo-font-weight-bold);font-size:var(--list-text-font-size)}.lists .description-text{font-size:var(--list-text-font-size);color:var(--luzmo-font-color-extra-dimmed);line-height:1.4}.lists .description-empty{font-size:var(--list-text-font-size);color:var(--luzmo-font-color-tertiary,#767676);font-style:italic}.lists .example-code{align-items:center;gap:var(--luzmo-spacing-1);padding:var(--luzmo-spacing-2);border-radius:var(--luzmo-border-radius-s);background-color:var(--luzmo-background-color-highlight);font-family:var(--luzmo-font-family-mono,monospace);font-size:var(--list-text-font-size);flex-wrap:wrap;display:inline-flex}.lists .example-icon{vertical-align:middle;display:inline-flex}.lists .explanation-tooltip{gap:var(--luzmo-spacing-2);text-align:start;flex-direction:column;display:flex}.lists .explanation-tooltip .tooltip-example{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;font-weight:var(--luzmo-font-weight-bold,700);white-space:pre-wrap;display:block}.lists .explanation-tooltip .example-icon{display:inline}`,Y=750,X=class extends l.t{constructor(...e){super(...e),this.expressionResource=`formula`,this.explanationDisplay=`tooltip`,this._loadingDatasets=!1,this._describeTarget=null,this._hasError=!1,this._errorMessage=null,this._selectedCategory=`string`,this._searchQuery=``,this._collapsedDatasets=new Set,this._validWordIdentifiers=x(this._store.functionDataMap,this._store.aggregationFunctionDataMap),this._validationSequence=0}static{this.styles=(0,d.unsafeCSS)(J)}get _emitDebounceMs(){return Y}_onExpressionComputed(e){e!==this._lastEmittedExpression&&(this._validate(e),this._emitExpressionChanged(e))}_setLoading(e){this._loadingDatasets=e,this._store.setLoading(e)}_validate(e){let t=this._localValidity(e),n=++this._validationSequence;if(!t.valid){this._emitValidity(t);return}if(!this.authKey||!this.authToken){this._emitValidity(this._offlineValidity(e));return}this._runBackendValidation(e,n)}async _runBackendValidation(e,t){try{n.t.configure({apiUrl:this.apiUrl,authKey:this.authKey??``,authToken:this.authToken??``});let r=await n.t.validate(this.expressionResource,{expression:e,explain_error:!0});if(t!==this._validationSequence)return;this._emitValidity({valid:r.valid,error:r.valid?null:r.explanation??r.reason??null,type:r.type})}catch(n){console.warn(`[luzmo-formula-editor] Expression validation failed, falling back to local validation:`,n),t===this._validationSequence&&this._emitValidity(this._offlineValidity(e))}}_localValidity(e){return e.trim()?e.includes(`##EMPTYARG-`)?{valid:!1,error:(0,p.msg)(`Complete all empty arguments.`,{desc:`Formula editor validation error for empty arguments`})}:s.p.test(e)?{valid:!1,error:(0,p.msg)(`Provide a value for every aggregation.`,{desc:`Formula editor validation error for empty aggregations`})}:{valid:!0,error:null}:{valid:!1,error:null}}_offlineValidity(e){let t=S(e,this._validWordIdentifiers);return t?{valid:!1,error:(0,p.msg)(p.str`'${t}' is not a valid column, function, or value.`,{desc:`Formula editor validation error for unresolved free text in the expression`})}:{valid:!0,error:null}}_emitValidity(e){this._hasError=!e.valid&&!!e.error,this._errorMessage=e.error,this.dispatchEvent(new CustomEvent(`luzmo-validity-changed`,{bubbles:!0,composed:!0,detail:e}))}_insertColumn(e){this.readonly||!e.columnId||this._store.onExtendExpression({type:`column`,id:e.columnId,datasetId:e.datasetId,aggregationWidgetId:this._store.lastFocusedAggregationWidgetId})}_handleCategoryChange(e){let t=e.detail?.value?.[0];t&&(this._selectedCategory=t)}_handleSearchInput(e){this._searchQuery=e.target.value}_toggleCollapse(e){let t=new Set(this._collapsedDatasets);t.has(e)?t.delete(e):t.add(e),this._collapsedDatasets=t}_handleDraggableActivate(e){if(e.stopPropagation(),this.readonly)return;let{kind:t,value:n}=e.detail;this._store.onExtendExpression({type:t,id:n,aggregationWidgetId:this._store.lastFocusedAggregationWidgetId})}_handleDraggableDescribe(e){e.stopPropagation();let{kind:t,value:n}=e.detail;this._describeTarget=n?{kind:t,id:n}:null}_renderLists(){if(this.readonly)return d.nothing;let e=this.explanationDisplay===`tooltip`;return d.html`
197
+ `}var J=`:host{--luzmo-formula-editor-error-color:var(--luzmo-negative-color);--luzmo-formula-font-size:var(--luzmo-font-size);--luzmo-formula-pill-disclosure-icon-size:var(--luzmo-font-size);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-m);--luzmo-formula-control-height:calc(var(--luzmo-component-height) - 2 * var(--luzmo-spacing-1));--formula-editor-lists-height:24rem}:host([size=s]){--luzmo-formula-font-size:var(--luzmo-font-size-s);--luzmo-formula-control-height:calc(var(--luzmo-component-height-s) - 2 * var(--luzmo-spacing-1));--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-s);--formula-editor-lists-height:20rem}:host([size=l]){--luzmo-formula-font-size:var(--luzmo-font-size-l);--luzmo-formula-control-height:calc(var(--luzmo-component-height-l) - 2 * var(--luzmo-spacing-1));--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-l);--formula-editor-lists-height:28rem}:host([size=xl]){--luzmo-formula-font-size:var(--luzmo-font-size-xl);--luzmo-formula-control-height:calc(var(--luzmo-component-height-xl) - 2 * var(--luzmo-spacing-1));--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-xl);--formula-editor-lists-height:32rem}:host{box-sizing:border-box;width:100%;max-width:100%;font-family:var(--luzmo-font-family);color:var(--luzmo-font-color);display:block}.formula-editor{flex-direction:column;width:100%;display:flex}luzmo-formula-codemirror,.formula-codemirror-loading{--luzmo-formula-field-bottom-radius:0;z-index:1;width:100%;position:relative}.error{align-items:flex-start;gap:var(--luzmo-spacing-2);padding:var(--luzmo-spacing-2) var(--luzmo-spacing-3);border:1px solid var(--luzmo-formula-editor-error-color,var(--luzmo-negative-color));color:var(--luzmo-formula-editor-error-color,var(--luzmo-negative-color));font-size:var(--luzmo-font-size-s);border-block-start:0;line-height:1.4;display:flex}.error svg{flex:none;margin-block-start:.2em}.lists{box-sizing:border-box;min-height:0;border:1px solid var(--luzmo-border-color);border-block-start:0;border-end-end-radius:var(--luzmo-border-radius);border-end-start-radius:var(--luzmo-border-radius);grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:0;padding-block-start:var(--luzmo-formula-editor-gap,0);display:grid}:host([show-aggregations]) .lists,:host([explanation-display=description]) .lists{grid-template-columns:repeat(3,minmax(0,1fr))}:host([show-aggregations][explanation-display=description]) .lists{grid-template-columns:repeat(4,minmax(0,1fr))}.lists>*{min-width:0;padding:var(--luzmo-formula-editor-list-padding,var(--luzmo-spacing-3));--luzmo-formula-list-height:var(--luzmo-formula-editor-lists-height,var(--formula-editor-lists-height,16rem))}.lists>:not(:last-child){border-inline-end:1px solid var(--luzmo-border-color)}.lists{--list-text-font-size:var(--luzmo-font-size)}:host([size=s]) .lists{--list-text-font-size:var(--luzmo-font-size-s)}:host([size=l]) .lists{--list-text-font-size:var(--luzmo-font-size-l)}:host([size=xl]) .lists{--list-text-font-size:var(--luzmo-font-size-xl)}.lists .list{gap:var(--luzmo-spacing-2);min-height:0;height:var(--luzmo-formula-list-height,100%);box-sizing:border-box;flex-direction:column;display:flex}.lists .list-header{flex-shrink:0;margin-block-end:var(--luzmo-spacing-1);display:block}.lists .list-items{gap:var(--luzmo-spacing-1);flex-direction:column;align-content:flex-start;min-height:0;display:flex;overflow-y:auto}.lists .list-items::-webkit-scrollbar{width:var(--luzmo-scrollbar-width,6px)}.lists .list-items::-webkit-scrollbar-track{background:var(--luzmo-scrollbar-track-background,transparent);border-radius:var(--luzmo-scrollbar-track-border-radius,4px)}.lists .list-items::-webkit-scrollbar-thumb{background:var(--luzmo-scrollbar-thumb-background,#0003);border-radius:var(--luzmo-scrollbar-thumb-border-radius,4px)}.lists .list-items::-webkit-scrollbar-thumb:hover{background:var(--luzmo-scrollbar-thumb-hover-background,#00000059)}.lists .list-items{scrollbar-width:var(--luzmo-scrollbar-width,thin);scrollbar-color:var(--luzmo-scrollbar-thumb-background,#0003) var(--luzmo-scrollbar-track-background,transparent)}.lists .list-scroll{gap:var(--luzmo-spacing-2,.5rem);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden auto}.lists .list-scroll::-webkit-scrollbar{width:var(--luzmo-scrollbar-width,6px)}.lists .list-scroll::-webkit-scrollbar-track{background:var(--luzmo-scrollbar-track-background,transparent);border-radius:var(--luzmo-scrollbar-track-border-radius,4px)}.lists .list-scroll::-webkit-scrollbar-thumb{background:var(--luzmo-scrollbar-thumb-background,#0003);border-radius:var(--luzmo-scrollbar-thumb-border-radius,4px)}.lists .list-scroll::-webkit-scrollbar-thumb:hover{background:var(--luzmo-scrollbar-thumb-hover-background,#00000059)}.lists .list-scroll{scrollbar-width:var(--luzmo-scrollbar-width,thin);scrollbar-color:var(--luzmo-scrollbar-thumb-background,#0003) var(--luzmo-scrollbar-track-background,transparent)}.lists luzmo-select,.lists luzmo-search{width:100%}.lists .list-loading{min-height:0;padding:var(--luzmo-spacing-4);flex:1;justify-content:center;align-items:center;display:flex}.lists .dataset-group{gap:var(--luzmo-spacing-1);flex-direction:column;display:flex}.lists .dataset-group-header{align-items:center;gap:var(--luzmo-spacing-1);width:100%;padding:var(--luzmo-spacing-1) 0;color:var(--luzmo-font-color-extra-dimmed);font:inherit;font-size:var(--list-text-font-size);font-weight:var(--luzmo-font-weight-bold);text-align:start;cursor:pointer;background:0 0;border:none;display:flex}.lists .dataset-group-fields{gap:var(--luzmo-spacing-1);flex-direction:column;display:flex}.lists .dataset-group-fields luzmo-data-field{--luzmo-data-field-level-border-width:0;--luzmo-data-field-level-background-color:transparent;--luzmo-data-field-level-horizontal-padding:var(--luzmo-spacing-3);--luzmo-data-field-level-gap:var(--luzmo-spacing-3);--luzmo-data-field-level-background-color-hover:var(--luzmo-formula-editor-data-field-background-color-hover,var(--luzmo-background-color-highlight));--luzmo-data-field-level-border-color-hover:var(--luzmo-formula-editor-data-field-border-color-hover,var(--luzmo-background-color-highlight));--luzmo-data-field-level-background-color-active:var(--luzmo-formula-editor-data-field-background-color-active,var(--luzmo-background-color-highlight-down));--luzmo-data-field-level-border-color-active:var(--luzmo-formula-editor-data-field-border-color-active,var(--luzmo-background-color-highlight-down));--luzmo-data-field-level-background-color-focus-visible:var(--luzmo-formula-editor-data-field-background-color-focus,var(--luzmo-background-color-highlight-focus))}.lists .description{gap:var(--luzmo-spacing-2)}.lists .description-title{font-weight:var(--luzmo-font-weight-bold);font-size:var(--list-text-font-size)}.lists .description-text{font-size:var(--list-text-font-size);color:var(--luzmo-font-color-extra-dimmed);line-height:1.4}.lists .description-empty{font-size:var(--list-text-font-size);color:var(--luzmo-font-color-tertiary,#767676);font-style:italic}.lists .example-code{align-items:center;gap:var(--luzmo-spacing-1);padding:var(--luzmo-spacing-2);border-radius:var(--luzmo-border-radius-s);background-color:var(--luzmo-background-color-highlight);font-family:var(--luzmo-font-family-mono,monospace);font-size:var(--list-text-font-size);flex-wrap:wrap;display:inline-flex}.lists .example-icon{vertical-align:middle;display:inline-flex}.lists .explanation-tooltip{gap:var(--luzmo-spacing-2);text-align:start;flex-direction:column;display:flex}.lists .explanation-tooltip .tooltip-example{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;font-weight:var(--luzmo-font-weight-bold,700);white-space:pre-wrap;display:block}.lists .explanation-tooltip .example-icon{display:inline}`,Y=750,X=class extends l.t{constructor(...e){super(...e),this.expressionResource=`formula`,this.explanationDisplay=`tooltip`,this._loadingDatasets=!1,this._describeTarget=null,this._hasError=!1,this._errorMessage=null,this._selectedCategory=`string`,this._searchQuery=``,this._collapsedDatasets=new Set,this._validWordIdentifiers=x(this._store.functionDataMap,this._store.aggregationFunctionDataMap),this._validationSequence=0}static{this.styles=(0,d.unsafeCSS)(J)}get _emitDebounceMs(){return Y}_onExpressionComputed(e){e!==this._lastEmittedExpression&&(this._validate(e),this._emitExpressionChanged(e))}_setLoading(e){this._loadingDatasets=e,this._store.setLoading(e)}_validate(e){let t=this._localValidity(e),n=++this._validationSequence;if(!t.valid){this._emitValidity(t);return}if(!this.authKey||!this.authToken){this._emitValidity(this._offlineValidity(e));return}this._runBackendValidation(e,n)}async _runBackendValidation(e,t){try{n.t.configure({apiUrl:this.apiUrl,authKey:this.authKey??``,authToken:this.authToken??``});let r=await n.t.validate(this.expressionResource,{expression:e,explain_error:!0});if(t!==this._validationSequence)return;this._emitValidity({valid:r.valid,error:r.valid?null:r.explanation??r.reason??null,type:r.type})}catch(n){console.warn(`[luzmo-formula-editor] Expression validation failed, falling back to local validation:`,n),t===this._validationSequence&&this._emitValidity(this._offlineValidity(e))}}_localValidity(e){return e.trim()?e.includes(`##EMPTYARG-`)?{valid:!1,error:(0,p.msg)(`Complete all empty arguments.`,{desc:`Formula editor validation error for empty arguments`})}:s.p.test(e)?{valid:!1,error:(0,p.msg)(`Provide a value for every aggregation.`,{desc:`Formula editor validation error for empty aggregations`})}:{valid:!0,error:null}:{valid:!1,error:null}}_offlineValidity(e){let t=S(e,this._validWordIdentifiers);return t?{valid:!1,error:(0,p.msg)(p.str`'${t}' is not a valid column, function, or value.`,{desc:`Formula editor validation error for unresolved free text in the expression`})}:{valid:!0,error:null}}_emitValidity(e){this._hasError=!e.valid&&!!e.error,this._errorMessage=e.error,this.dispatchEvent(new CustomEvent(`luzmo-validity-changed`,{bubbles:!0,composed:!0,detail:e}))}_insertColumn(e){this.readonly||!e.columnId||this._store.onExtendExpression({type:`column`,id:e.columnId,datasetId:e.datasetId,aggregationWidgetId:this._store.lastFocusedAggregationWidgetId})}_handleCategoryChange(e){let t=e.detail?.value?.[0];t&&(this._selectedCategory=t)}_handleSearchInput(e){this._searchQuery=e.target.value}_toggleCollapse(e){let t=new Set(this._collapsedDatasets);t.has(e)?t.delete(e):t.add(e),this._collapsedDatasets=t}_handleDraggableActivate(e){if(e.stopPropagation(),this.readonly)return;let{kind:t,value:n}=e.detail;this._store.onExtendExpression({type:t,id:n,aggregationWidgetId:this._store.lastFocusedAggregationWidgetId})}_handleDraggableDescribe(e){e.stopPropagation();let{kind:t,value:n}=e.detail;this._describeTarget=n?{kind:t,id:n}:null}_renderLists(){if(this.readonly)return d.nothing;let e=this.explanationDisplay===`tooltip`;return d.html`
198
198
  <div
199
199
  class="lists"
200
200
  part="lists"
@@ -17,4 +17,4 @@
17
17
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18
18
  * SOFTWARE.
19
19
  * */
20
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../formula-field-DUdeqGIv.cjs");Object.defineProperty(exports,"LuzmoFormulaField",{enumerable:!0,get:function(){return e.t}});
20
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../formula-field-Dd1vnGZA.cjs");Object.defineProperty(exports,"LuzmoFormulaField",{enumerable:!0,get:function(){return e.t}});
@@ -24,5 +24,5 @@
24
24
  e.setAttribute("data-luzmo-vars", ""), e.textContent = "html{--luzmo-animation-duration: 0.15s;--luzmo-border-color: rgba(var(--luzmo-border-color-rgb), 0.1);--luzmo-border-color-hover: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-down: rgba(var(--luzmo-border-color-rgb), 0.3);--luzmo-border-color-focus: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-rgb: 0, 0, 0;--luzmo-border-color-full: rgb(180, 180, 180);--luzmo-border-color-full-hover: color-mix(in oklch, var(--luzmo-border-color-full), black 25%);--luzmo-border-color-full-down: color-mix(in oklch, var(--luzmo-border-color-full), black 45%);--luzmo-border-color-full-focus: color-mix(in oklch, var(--luzmo-border-color-full), black 25%);--luzmo-border-color-disabled: #dddddd;--luzmo-border-radius: 6px;--luzmo-border-radius-s: 4px;--luzmo-border-radius-l: 8px;--luzmo-border-radius-xl: 12px;--luzmo-border-radius-full: 999rem;--luzmo-background-color: #ffffff;--luzmo-background-color-rgb: 255, 255, 255;--luzmo-background-color-disabled: #eeeeee;--luzmo-background-color-hover: color-mix( in oklch, color-mix(in oklch, var(--luzmo-background-color), var(--luzmo-primary) 5%), black 1.5% );--luzmo-background-color-down: color-mix(in oklch, color-mix(in oklch, var(--luzmo-background-color), var(--luzmo-primary) 7%), black 1%);--luzmo-background-color-focus: color-mix( in oklch, color-mix(in oklch, var(--luzmo-background-color), var(--luzmo-primary) 5%), black 1.5% );--luzmo-background-color-highlight: rgb(240, 240, 240);--luzmo-background-color-highlight-disabled: rgb(245, 245, 245);--luzmo-background-color-highlight-hover: color-mix(in oklch, var(--luzmo-background-color-highlight), black 25%);--luzmo-background-color-highlight-down: color-mix(in oklch, var(--luzmo-background-color-highlight), black 45%);--luzmo-background-color-highlight-focus: color-mix(in oklch, var(--luzmo-background-color-highlight), black 25%);--luzmo-background-color-alt-1: rgb(250, 250, 250);--luzmo-background-color-alt-2: rgb(239, 239, 239);--luzmo-border-width: 1px;--luzmo-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Helvetica, Arial, sans-serif;--luzmo-font-size-xs: 10px;--luzmo-font-size-s: 12px;--luzmo-font-size-m: 14px;--luzmo-font-size: 14px;--luzmo-font-size-l: 16px;--luzmo-font-size-xl: 18px;--luzmo-font-size-xxl: 20px;--luzmo-font-style: normal;--luzmo-line-height: normal;--luzmo-font-weight: 400;--luzmo-font-weight-semibold: 500;--luzmo-font-weight-bold: 600;--luzmo-font-color: #333;--luzmo-font-color-hard: #000;--luzmo-font-color-disabled: var(--luzmo-color-disabled);--luzmo-font-color-extra-dimmed: #888;--luzmo-font-color-hover: color-mix(in oklch, var(--luzmo-font-color), black 8%);--luzmo-font-color-down: color-mix(in oklch, var(--luzmo-font-color), black 20%);--luzmo-font-color-focus: color-mix(in oklch, var(--luzmo-font-color), black 8%);--luzmo-scrollbar-size: 6px;--luzmo-scrollbar-width: thin;--luzmo-scrollbar-track-background: transparent;--luzmo-scrollbar-track-border-radius: var(--luzmo-border-radius-s);--luzmo-scrollbar-thumb-background: rgba(var(--luzmo-border-color-rgb), 0.3);--luzmo-scrollbar-thumb-border-radius: var(--luzmo-border-radius-s);--luzmo-scrollbar-thumb-hover-background: rgba(var(--luzmo-border-color-rgb), 0.4);--luzmo-primary: #4434ff;--luzmo-primary-hover: color-mix(in oklch, var(--luzmo-primary), black 8%);--luzmo-primary-down: color-mix(in oklch, var(--luzmo-primary), black 20%);--luzmo-primary-focus: color-mix(in oklch, var(--luzmo-primary), black 8%);--luzmo-primary-inverse-color: #ffffff;--luzmo-primary-rgb: 68, 52, 255;--luzmo-secondary: #ff00ff;--luzmo-secondary-hover: color-mix(in oklch, var(--luzmo-secondary), black 8%);--luzmo-secondary-down: color-mix(in oklch, var(--luzmo-secondary), black 20%);--luzmo-secondary-focus: color-mix(in oklch, var(--luzmo-secondary), black 8%);--luzmo-secondary-inverse-color: #ffffff;--luzmo-secondary-rgb: 255, 0, 255;--luzmo-secondary-outline: rgba(255, 0, 255, 0.2);--luzmo-negative-color: #ca221c;--luzmo-negative-color-hover: color-mix(in oklch, var(--luzmo-negative-color), black 8%);--luzmo-negative-color-down: color-mix(in oklch, var(--luzmo-negative-color), black 20%);--luzmo-negative-color-focus: color-mix(in oklch, var(--luzmo-negative-color), black 8%);--luzmo-negative-color-rgb: 202, 34, 28;--luzmo-positive-color: rgb(20, 150, 101);--luzmo-positive-color-hover: color-mix(in oklch, var(--luzmo-positive-color), black 8%);--luzmo-positive-color-down: color-mix(in oklch, var(--luzmo-positive-color), black 20%);--luzmo-positive-color-focus: color-mix(in oklch, var(--luzmo-positive-color), black 8%);--luzmo-positive-color-rgb: 20, 150, 101;--luzmo-selected-color: rgb(110, 110, 110);--luzmo-selected-color-hover: color-mix(in oklch, var(--luzmo-selected-color), black 25%);--luzmo-selected-color-down: color-mix(in oklch, var(--luzmo-selected-color), black 45%);--luzmo-selected-color-focus: color-mix(in oklch, var(--luzmo-selected-color), black 25%);--luzmo-selected-color-hard: #1e1e1e;--luzmo-selected-color-hard-hover: color-mix(in oklch, var(--luzmo-selected-color-hard), black 25%);--luzmo-selected-color-hard-down: color-mix(in oklch, var(--luzmo-selected-color-hard), black 45%);--luzmo-selected-color-hard-focus: color-mix(in oklch, var(--luzmo-selected-color-hard), black 25%);--luzmo-color-informative: #1a77e9;--luzmo-color-informative-rgb: 26, 119, 233;--luzmo-color-disabled: #aaaaaa;--luzmo-spacing-1: 2px;--luzmo-spacing-2: 4px;--luzmo-spacing-3: 8px;--luzmo-spacing-4: 12px;--luzmo-spacing-5: 16px;--luzmo-indicator-gap: 2px;--luzmo-indicator-width: 1px;--luzmo-indicator-color: var(--luzmo-primary);--luzmo-component-height-xxs: 20px;--luzmo-component-height-xs: 24px;--luzmo-component-height-s: 28px;--luzmo-component-height: 32px;--luzmo-component-height-l: 40px;--luzmo-component-height-xl: 48px;--luzmo-component-height-xxl: 64px;--luzmo-icon-size-xxs: 12px;--luzmo-icon-size-xs: 14px;--luzmo-icon-size-s: 16px;--luzmo-icon-size-m: 18px;--luzmo-icon-size-l: 20px;--luzmo-icon-size-xl: 22px;--luzmo-icon-size-xxl: 32px}", document.head.appendChild(e);
25
25
  }
26
26
  })();
27
- import { t as e } from "../formula-field-CdwPfr3i.js";
27
+ import { t as e } from "../formula-field-B2TQe1Z_.js";
28
28
  export { e as LuzmoFormulaField };
@@ -18,7 +18,7 @@
18
18
  * SOFTWARE.
19
19
  * */
20
20
  import { t as e } from "./decorate-CaYbmmmm.js";
21
- import { t } from "./formula-input-base-D40h4WMK.js";
21
+ import { t } from "./formula-input-base-B-Li9TP4.js";
22
22
  import { html as n, unsafeCSS as r } from "lit";
23
23
  import { localized as i } from "@lit/localize";
24
24
  //#region src/components/formula-field/formula-field.module.scss?inline
@@ -17,4 +17,4 @@
17
17
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18
18
  * SOFTWARE.
19
19
  * */
20
- const e=require("./decorate-DCJt-2rt.cjs"),t=require("./formula-input-base-Bdy8riVz.cjs");let n=require("lit"),r=require("@lit/localize");var i=`:host{box-sizing:border-box;width:100%;font-family:var(--luzmo-font-family);color:var(--luzmo-font-color);display:inline-block}luzmo-formula-codemirror{width:100%;display:block}:host{--luzmo-formula-font-size:var(--luzmo-font-size);--luzmo-formula-pill-disclosure-icon-size:var(--luzmo-font-size);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-m);--luzmo-formula-control-height:calc(var(--luzmo-component-height) - 2 * var(--luzmo-spacing-1))}:host([size=s]){--luzmo-formula-font-size:var(--luzmo-font-size-s);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-s);--luzmo-formula-control-height:calc(var(--luzmo-component-height-s) - 2 * var(--luzmo-spacing-1))}:host([size=l]){--luzmo-formula-font-size:var(--luzmo-font-size-l);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-l);--luzmo-formula-control-height:calc(var(--luzmo-component-height-l) - 2 * var(--luzmo-spacing-1))}:host([size=xl]){--luzmo-formula-font-size:var(--luzmo-font-size-xl);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-xl);--luzmo-formula-control-height:calc(var(--luzmo-component-height-xl) - 2 * var(--luzmo-spacing-1))}`,a=class extends t.t{static{this.styles=(0,n.unsafeCSS)(i)}_canEmitExpression(){return!this.readonly}render(){return n.html`${this._renderFormulaCodeMirror({part:`input`})}`}};a=e.t([(0,r.localized)()],a),customElements.get(`luzmo-formula-field`)||customElements.define(`luzmo-formula-field`,a),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return a}});
20
+ const e=require("./decorate-DCJt-2rt.cjs"),t=require("./formula-input-base-DjJ2Q4gu.cjs");let n=require("lit"),r=require("@lit/localize");var i=`:host{box-sizing:border-box;width:100%;font-family:var(--luzmo-font-family);color:var(--luzmo-font-color);display:inline-block}luzmo-formula-codemirror{width:100%;display:block}:host{--luzmo-formula-font-size:var(--luzmo-font-size);--luzmo-formula-pill-disclosure-icon-size:var(--luzmo-font-size);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-m);--luzmo-formula-control-height:calc(var(--luzmo-component-height) - 2 * var(--luzmo-spacing-1))}:host([size=s]){--luzmo-formula-font-size:var(--luzmo-font-size-s);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-s);--luzmo-formula-control-height:calc(var(--luzmo-component-height-s) - 2 * var(--luzmo-spacing-1))}:host([size=l]){--luzmo-formula-font-size:var(--luzmo-font-size-l);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-l);--luzmo-formula-control-height:calc(var(--luzmo-component-height-l) - 2 * var(--luzmo-spacing-1))}:host([size=xl]){--luzmo-formula-font-size:var(--luzmo-font-size-xl);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-xl);--luzmo-formula-control-height:calc(var(--luzmo-component-height-xl) - 2 * var(--luzmo-spacing-1))}`,a=class extends t.t{static{this.styles=(0,n.unsafeCSS)(i)}_canEmitExpression(){return!this.readonly}render(){return n.html`${this._renderFormulaCodeMirror({part:`input`})}`}};a=e.t([(0,r.localized)()],a),customElements.get(`luzmo-formula-field`)||customElements.define(`luzmo-formula-field`,a),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return a}});
@@ -20,7 +20,7 @@
20
20
  import { t as e } from "./decorate-CaYbmmmm.js";
21
21
  import { t } from "./calculate-data-field-icon-DrSg1PuD.js";
22
22
  import { t as n } from "./localize-BT7REYBY.js";
23
- import { d as r, g as i, i as a, l as o, o as s, t as c, u as l } from "./formula-display-store-lENPCY-p.js";
23
+ import { d as r, g as i, i as a, l as o, o as s, t as c, u as l } from "./formula-display-store-BtD83k2x.js";
24
24
  import { a as u, n as d, t as f } from "./icon-element-DYQjN0TG.js";
25
25
  import { luzmoAggregation as p, luzmoFunction as m } from "@luzmo/icons";
26
26
  import { html as h } from "lit";
@@ -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
- const e=require("./decorate-DCJt-2rt.cjs"),t=require("./calculate-data-field-icon-DenGmW74.cjs"),n=require("./localize-D3i4Epy_.cjs"),r=require("./formula-display-store-ianfhYAz.cjs"),i=require("./icon-element-2Qrd4w7o.cjs");let a=require("@luzmo/icons"),o=require("lit"),s=require("lit/decorators.js"),c=require("@lit/localize"),l=require("@lit/context");require("@luzmo/lucero/progress-circle");let u=require("lit/directives/if-defined.js");var d=(0,l.createContext)(Symbol(`formula-editor-store-context`)),f=`__root__`,p={numeric:`numeric`,hierarchy:`hierarchy`,datetime:`datetime`},m=class extends r.t{constructor(...e){super(...e),this._editors=new Map}registerEditor(e,t){this._editors.set(e??`__root__`,t)}unregisterEditor(e){this._editors.delete(e??`__root__`)}getEditor(e=null){return this._editors.get(e??`__root__`)}getDropExpression(e,t,n,i){let a=[],o=``;if(e===`text`)o=i??``;else if(e===`column`)n&&t&&(o=`{${n}:${t}}`);else if(e===`function`){let e=this.functionDataMap[t],n=/^[a-z]/i.test(t??``);switch(e?.type){case`infix`:o=`${n?` ${t} `:t}${e.arity>1?r.d():``}`;break;case`prefix_op`:o=`${t}${n?` `:``}${r.d()}`;break;case`prefix`:{let n=[];for(let t=0;t<e.arity;t++)n.push(r.d());o=`${t}(${n.join(`,`)})`;break}}}else if(e===`aggregation`){let e=t,n=this.aggregationFunctionDataMap[e];if(this.multiStageAggregation){let t={widgetId:r.l(),aggregationFunction:e,grouping:r.g.GROUP,content:``};o=r.u(t.widgetId),a.push(t)}else o=`${e}(${n?.arity>0?r.d():``})`}return{expression:o,aggregationWidgets:a}}onExtendExpression(e){let{type:t,id:n,aggregationWidgetId:r,datasetId:a,isEmptyArgument:o,targetEmptyArgumentId:s,textContent:c}=e;if(t===`aggregation`&&r&&!this.nestedAggregation)return;let{expression:l,aggregationWidgets:u}=this.getDropExpression(t,n,a,c),d=this.getEditor(r);!d||!l||(this.addWidgets(u),this._markAggregationForFocus(u),o&&s?i.a(d,l,s):i.n(d,l))}getAutoCompletionList(e,i){let o=[],s={...this.functionDataMap,...this.aggregationFunctionDataMap};for(let e of Object.keys(s)){let t=r.i.includes(e);if(t&&!i)continue;let n=s[e];o.push({label:n.label(),type:t?`namespace`:`function`,info:()=>this._buildOperationInfo(n),iconDef:t?a.luzmoAggregation:a.luzmoFunction,apply:(n,r,i,a)=>{let{expression:o,aggregationWidgets:s}=this.getDropExpression(t?`aggregation`:`function`,e);this.addWidgets(s),this._markAggregationForFocus(s),n.dispatch({changes:{from:i,to:a,insert:o}})}})}for(let r of e)for(let i of r.columns){let a=i.columnId,s=n.t(i.name,this.contentLanguage);!a||!s||o.push({label:s,type:`variable`,info:e.length>1?n.t(r.name,this.contentLanguage):``,iconDef:t.t(i),apply:this.getDropExpression(`column`,a,r.id).expression})}return o}_buildOperationInfo(e){let n=document.createElement(`div`);n.className=`cm-completion-info-formula`;let r=e.example();if(r){let a=document.createElement(`code`);if(a.className=`cm-completion-info-example`,e.exampleHasIcons)for(let e of r.split(/(⟨\w+⟩)/g)){let n=e.match(/^⟨(\w+)⟩$/),r=n?p[n[1]]:void 0;if(r){let e=document.createElement(`span`);e.className=`cm-completion-info-icon`,e.appendChild(i.t(t.t({type:r},`s`))),a.appendChild(e)}else e&&a.appendChild(document.createTextNode(e))}else a.textContent=r;n.appendChild(a)}let a=document.createElement(`div`);return a.className=`cm-completion-info-desc`,a.textContent=e.description(),n.appendChild(a),n}},h=class extends r.o{constructor(){super(),this._autoCompletionList=[],this.readonly=!1,this.placeholder=``,this.rows=3,this.grows=!0,new l.ContextProvider(this,{context:d,initialValue:this._store})}_createStore(){return new m}willUpdate(e){super.willUpdate(e),e.has(`readonly`)&&this._store.setReadonly(this.readonly)}_rebuildAutoCompletion(){this._autoCompletionList=this._store.getAutoCompletionList(this._datasets,this.showAggregations)}_applyExternalExpression(){this._applyingExternalExpression=!0;try{let e=this._syncExpressionToStore();if(e===null)return;let t=this._store.getEditor(null),n=this._codeMirrorElement;t?t.dispatch({changes:{from:0,to:t.state.doc.length,insert:e}}):n&&n.setContent(e)}finally{this._applyingExternalExpression=!1}}_handleInputContentChanged(e){e.stopPropagation(),!this.readonly&&(this._rootContent=e.detail.content,this._recomputeExpression())}_renderFormulaCodeMirror(e={}){return this._codeMirrorLoaded?o.html`
20
+ const e=require("./decorate-DCJt-2rt.cjs"),t=require("./calculate-data-field-icon-DenGmW74.cjs"),n=require("./localize-D3i4Epy_.cjs"),r=require("./formula-display-store-_432SuSV.cjs"),i=require("./icon-element-2Qrd4w7o.cjs");let a=require("@luzmo/icons"),o=require("lit"),s=require("lit/decorators.js"),c=require("@lit/localize"),l=require("@lit/context");require("@luzmo/lucero/progress-circle");let u=require("lit/directives/if-defined.js");var d=(0,l.createContext)(Symbol(`formula-editor-store-context`)),f=`__root__`,p={numeric:`numeric`,hierarchy:`hierarchy`,datetime:`datetime`},m=class extends r.t{constructor(...e){super(...e),this._editors=new Map}registerEditor(e,t){this._editors.set(e??`__root__`,t)}unregisterEditor(e){this._editors.delete(e??`__root__`)}getEditor(e=null){return this._editors.get(e??`__root__`)}getDropExpression(e,t,n,i){let a=[],o=``;if(e===`text`)o=i??``;else if(e===`column`)n&&t&&(o=`{${n}:${t}}`);else if(e===`function`){let e=this.functionDataMap[t],n=/^[a-z]/i.test(t??``);switch(e?.type){case`infix`:o=`${n?` ${t} `:t}${e.arity>1?r.d():``}`;break;case`prefix_op`:o=`${t}${n?` `:``}${r.d()}`;break;case`prefix`:{let n=[];for(let t=0;t<e.arity;t++)n.push(r.d());o=`${t}(${n.join(`,`)})`;break}}}else if(e===`aggregation`){let e=t,n=this.aggregationFunctionDataMap[e];if(this.multiStageAggregation){let t={widgetId:r.l(),aggregationFunction:e,grouping:r.g.GROUP,content:``};o=r.u(t.widgetId),a.push(t)}else o=`${e}(${n?.arity>0?r.d():``})`}return{expression:o,aggregationWidgets:a}}onExtendExpression(e){let{type:t,id:n,aggregationWidgetId:r,datasetId:a,isEmptyArgument:o,targetEmptyArgumentId:s,textContent:c}=e;if(t===`aggregation`&&r&&!this.nestedAggregation)return;let{expression:l,aggregationWidgets:u}=this.getDropExpression(t,n,a,c),d=this.getEditor(r);!d||!l||(this.addWidgets(u),this._markAggregationForFocus(u),o&&s?i.a(d,l,s):i.n(d,l))}getAutoCompletionList(e,i){let o=[],s={...this.functionDataMap,...this.aggregationFunctionDataMap};for(let e of Object.keys(s)){let t=r.i.includes(e);if(t&&!i)continue;let n=s[e];o.push({label:n.label(),type:t?`namespace`:`function`,info:()=>this._buildOperationInfo(n),iconDef:t?a.luzmoAggregation:a.luzmoFunction,apply:(n,r,i,a)=>{let{expression:o,aggregationWidgets:s}=this.getDropExpression(t?`aggregation`:`function`,e);this.addWidgets(s),this._markAggregationForFocus(s),n.dispatch({changes:{from:i,to:a,insert:o}})}})}for(let r of e)for(let i of r.columns){let a=i.columnId,s=n.t(i.name,this.contentLanguage);!a||!s||o.push({label:s,type:`variable`,info:e.length>1?n.t(r.name,this.contentLanguage):``,iconDef:t.t(i),apply:this.getDropExpression(`column`,a,r.id).expression})}return o}_buildOperationInfo(e){let n=document.createElement(`div`);n.className=`cm-completion-info-formula`;let r=e.example();if(r){let a=document.createElement(`code`);if(a.className=`cm-completion-info-example`,e.exampleHasIcons)for(let e of r.split(/(⟨\w+⟩)/g)){let n=e.match(/^⟨(\w+)⟩$/),r=n?p[n[1]]:void 0;if(r){let e=document.createElement(`span`);e.className=`cm-completion-info-icon`,e.appendChild(i.t(t.t({type:r},`s`))),a.appendChild(e)}else e&&a.appendChild(document.createTextNode(e))}else a.textContent=r;n.appendChild(a)}let a=document.createElement(`div`);return a.className=`cm-completion-info-desc`,a.textContent=e.description(),n.appendChild(a),n}},h=class extends r.o{constructor(){super(),this._autoCompletionList=[],this.readonly=!1,this.placeholder=``,this.rows=3,this.grows=!0,new l.ContextProvider(this,{context:d,initialValue:this._store})}_createStore(){return new m}willUpdate(e){super.willUpdate(e),e.has(`readonly`)&&this._store.setReadonly(this.readonly)}_rebuildAutoCompletion(){this._autoCompletionList=this._store.getAutoCompletionList(this._datasets,this.showAggregations)}_applyExternalExpression(){this._applyingExternalExpression=!0;try{let e=this._syncExpressionToStore();if(e===null)return;let t=this._store.getEditor(null),n=this._codeMirrorElement;t?t.dispatch({changes:{from:0,to:t.state.doc.length,insert:e}}):n&&n.setContent(e)}finally{this._applyingExternalExpression=!1}}_handleInputContentChanged(e){e.stopPropagation(),!this.readonly&&(this._rootContent=e.detail.content,this._recomputeExpression())}_renderFormulaCodeMirror(e={}){return this._codeMirrorLoaded?o.html`
21
21
  <luzmo-formula-codemirror
22
22
  part=${(0,u.ifDefined)(e.part)}
23
23
  .store=${this._store}
@@ -0,0 +1,45 @@
1
+ /*! * A kit of modern Luzmo Web Components for analytics in your web application.
2
+ *
3
+ * Copyright © 2026 Luzmo
4
+ * All rights reserved.
5
+ * Luzmo web components (“Luzmo Web Components”)
6
+ * must be used according to the Luzmo Terms of Service.
7
+ * This license allows users with a current active Luzmo account
8
+ * to use the Luzmo Web Components. This license terminates
9
+ * automatically if a user no longer has an active Luzmo account.
10
+ * Please view the Luzmo Terms of Service at: https://www.luzmo.com/information-pages/terms-of-use.
11
+ *
12
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
17
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18
+ * SOFTWARE.
19
+ * */
20
+ const e=require("./decorate-DCJt-2rt.cjs"),t=require("./calculate-data-field-icon-DenGmW74.cjs"),n=require("./localize-D3i4Epy_.cjs"),r=require("./formula-display-store-_432SuSV.cjs"),i=require("./groupings-BdNTQMKX.cjs"),a=require("./resolve-column-presentation-DUETRVCH.cjs");let o=require("@luzmo/icons"),s=require("lit"),c=require("lit/decorators.js"),l=require("@lit/localize");require("@luzmo/lucero/icon"),require("@luzmo/lucero/progress-circle");var u=`:host{box-sizing:border-box;font-family:var(--luzmo-font-family);color:var(--luzmo-font-color);display:inline-block}.formula-text{font-size:var(--luzmo-formula-font-size,var(--luzmo-font-size));white-space:pre-wrap;word-break:break-word;line-height:1.5}.formula-text-column{white-space:nowrap}.formula-text-column-icon{margin-inline-end:var(--luzmo-spacing-1)}.formula-pills{align-items:center;gap:var(--luzmo-spacing-1) 0;font-size:var(--luzmo-formula-font-size,var(--luzmo-font-size));flex-wrap:wrap;line-height:1.5;display:inline-flex}.formula-operator{white-space:pre-wrap}.column-pill-wrapper{vertical-align:middle;padding-inline-end:var(--luzmo-formula-column-pill-trailing-space,var(--luzmo-spacing-1));display:inline-flex}.column-pill{justify-content:center;align-items:center;gap:var(--luzmo-spacing-2);box-sizing:border-box;max-width:16rem;min-height:var(--luzmo-formula-control-height,1.375rem);padding:0 var(--luzmo-formula-column-pill-padding-inline,calc(var(--luzmo-spacing-2) + var(--luzmo-spacing-1)));border-radius:var(--luzmo-border-radius-s);background-color:var(--luzmo-formula-column-pill-background,var(--luzmo-background-color-highlight));color:var(--luzmo-font-color);white-space:nowrap;font-size:.85em;line-height:1.2;display:inline-flex}.column-pill-icon{flex:none;display:inline-flex}.column-pill-label{text-overflow:ellipsis;overflow:hidden}.column-pill-loading{--luzmo-progress-circle-size:1em;align-items:center;display:inline-flex}.agg-pill{padding-block:var(--luzmo-spacing-1);border-radius:var(--luzmo-border-radius);background-color:var(--agg-accent,var(--luzmo-primary));color:var(--luzmo-primary-inverse-color);font-size:var(--luzmo-formula-font-size,var(--luzmo-font-size));vertical-align:middle;padding-inline:0;display:inline-flex}.agg-pill-row{align-items:center;gap:var(--luzmo-spacing-1);min-height:var(--luzmo-formula-control-height,1.375rem);display:inline-flex}.agg-fn{text-transform:uppercase;padding-inline-start:var(--luzmo-spacing-3);padding-inline-end:var(--luzmo-spacing-3);font-size:.85em}.agg-value{min-height:var(--luzmo-formula-control-height,1.375rem);padding:0 var(--luzmo-spacing-2);border-radius:var(--luzmo-border-radius-s);background-color:var(--luzmo-background-color);color:var(--luzmo-font-color);--luzmo-formula-column-pill-background:transparent;--luzmo-formula-column-pill-padding-inline:0px;align-items:center;line-height:1;display:inline-flex}.agg-grouping{align-items:center;gap:var(--luzmo-spacing-1);padding-inline:var(--luzmo-spacing-2) var(--luzmo-spacing-3);font-size:var(--luzmo-formula-grouping-icon-size,var(--luzmo-icon-size-m));display:inline-flex}.agg-grouping--no-value{padding-inline-start:0}.agg-grouping-count{border-radius:var(--luzmo-border-radius-full,999rem);background:var(--luzmo-primary-inverse-color);min-width:1.25em;color:var(--agg-accent,var(--luzmo-primary));font-size:.6875rem;font-weight:var(--luzmo-font-weight-bold);justify-content:center;align-items:center;padding:0 .25em;line-height:1.4;display:inline-flex}:host{--luzmo-formula-font-size:var(--luzmo-font-size);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-m);--luzmo-formula-control-height:calc(var(--luzmo-component-height) - 2 * var(--luzmo-spacing-1))}:host([size=s]){--luzmo-formula-font-size:var(--luzmo-font-size-s);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-s);--luzmo-formula-control-height:calc(var(--luzmo-component-height-s) - 2 * var(--luzmo-spacing-1))}:host([size=l]){--luzmo-formula-font-size:var(--luzmo-font-size-l);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-l);--luzmo-formula-control-height:calc(var(--luzmo-component-height-l) - 2 * var(--luzmo-spacing-1))}:host([size=xl]){--luzmo-formula-font-size:var(--luzmo-font-size-xl);--luzmo-formula-grouping-icon-size:var(--luzmo-icon-size-xl);--luzmo-formula-control-height:calc(var(--luzmo-component-height-xl) - 2 * var(--luzmo-spacing-1))}`,d=class extends r.o{constructor(...e){super(...e),this.display=`rich`,this._groupingDataMap=i.n()}static{this.styles=(0,s.unsafeCSS)(u)}_createStore(){return new r.t}_shouldLoadInput(){return!1}_canEmitExpression(){return!1}_applyExternalExpression(){if(this.display===`text`){this._rootContent=``;return}this._store.clearWidgets(),this._rootContent=this._store.transformToAggregationWidgetSyntax(this.expression??``)}willUpdate(e){super.willUpdate(e),e.has(`display`)&&!e.has(`expression`)&&this._applyExternalExpression()}render(){return this.display===`text`?this._renderTextFormula():this._renderPillFormula()}_renderPillFormula(){return s.html`<span class="formula-pills" part="formula">${this._renderPillNodes(this._rootContent)}</span>`}_renderPillNodes(e){let t=[],n=new RegExp(r.h.source,`gm`),i=0,a;for(;(a=n.exec(e))!==null;){a.index>i&&t.push(this._renderOperatorText(e.slice(i,a.index)));let r=a[2],o=a[3];r?t.push(this._renderColumnPill(r)):o&&t.push(this._renderAggregationPill(o)),i=n.lastIndex}return i<e.length&&t.push(this._renderOperatorText(e.slice(i))),t}_renderOperatorText(e){return s.html`<span class="formula-operator">${e}</span>`}_renderColumnPill(e){let[t,n]=e.split(`:`),r=this._datasets.find(e=>e.id===t)?.columns.find(e=>e.columnId===n);if(this._store.loading&&!r){let e=(0,l.msg)(`Loading column`,{desc:`Accessible label for a column pill whose label is still loading`});return s.html`<span class="column-pill-wrapper"
21
+ ><span class="column-pill" title=${e}
22
+ ><span class="column-pill-loading">
23
+ <luzmo-progress-circle indeterminate size="s" .label=${e}></luzmo-progress-circle></span
24
+ ></span
25
+ ></span>`}let{icon:i,label:c}=a.t(r,this.contentLanguage,n);return s.html`<span class="column-pill-wrapper"
26
+ ><span class="column-pill" title=${c}
27
+ ><span class="column-pill-icon">${(0,o.luzmoIcon)(i)}</span
28
+ ><span class="column-pill-label">${c}</span></span
29
+ ></span>`}_renderAggregationPill(e){let t=this._store.getWidget(e);if(!t)return s.html`${s.nothing}`;let n=this._groupingDataMap[t.grouping],i=n?.color??``,a=this._store.aggregationFunctionDataMap[t.aggregationFunction]?.arity??0,c=n?.label()??``,l=t.grouping===r.g.GROUPINEX?(t.includedColumns?.length??0)+(t.excludedColumns?.length??0):0;return s.html`<span class="agg-pill" style=${i?`--agg-accent: ${i}`:``}>
30
+ <span class="agg-pill-row">
31
+ <span class="agg-fn">${t.aggregationFunction}</span>
32
+ ${a>0?s.html`<span class="agg-value">${this._renderPillNodes(t.content)}</span>`:s.nothing}
33
+ <span
34
+ class="agg-grouping${a>0?``:` agg-grouping--no-value`}"
35
+ title=${c}
36
+ aria-label=${c}
37
+ >
38
+ ${n?.icon?(0,o.luzmoIcon)(n.icon):s.nothing}
39
+ ${l>0?s.html`<span class="agg-grouping-count">${l}</span>`:s.nothing}
40
+ </span>
41
+ </span>
42
+ </span>`}_renderTextFormula(){let e=this.expression??``,t=[],n=new RegExp(r.f.source,`g`),i=0,a;for(;(a=n.exec(e))!==null;){a.index>i&&t.push(e.slice(i,a.index));let[r,o]=a[1].split(`:`);t.push(this._renderColumnReference(r,o)),i=n.lastIndex}return i<e.length&&t.push(e.slice(i)),s.html`<span class="formula-text" part="formula-text">${t}</span>`}_renderColumnReference(e,r){let i=this._datasets.find(t=>t.id===e),a=i?.columns.find(e=>e.columnId===r),c=a?n.t(a.name,this.contentLanguage):r,l=i?n.t(i.name,this.contentLanguage):``;return s.html`<span class="formula-text-column" part="formula-text-column" title=${l?`${l} · ${c}`:c}>
43
+ <span class="formula-text-column-icon">${(0,o.luzmoIcon)(t.t({type:a?.type??`hierarchy`},`s`))}</span>
44
+ <span class="formula-text-column-name">${c}</span>
45
+ </span>`}};e.t([(0,c.property)({type:String,reflect:!0})],d.prototype,`display`,void 0),d=e.t([(0,l.localized)()],d),customElements.get(`luzmo-formula`)||customElements.define(`luzmo-formula`,d),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return d}});
@@ -17,4 +17,4 @@
17
17
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18
18
  * SOFTWARE.
19
19
  * */
20
- const e=require("./formula-display-store-ianfhYAz.cjs");let t=require("@luzmo/icons"),n=require("@lit/localize");var r=[e.g.GROUP,e.g.GROUPFULL,e.g.GROUPINEX];function i(){return{[e.g.GROUP]:{label:()=>(0,n.msg)(`Grouped`,{desc:`Formula aggregation grouping label for grouped scope`}),description:()=>(0,n.msg)(`Aggregates within the current grouping of the chart.`,{desc:`Formula aggregation grouping description for grouped scope`}),icon:t.luzmoScopeGrouped,color:`var(--luzmo-formula-grouping-color-grouped, #625df6)`},[e.g.GROUPFULL]:{label:()=>(0,n.msg)(`Full`,{desc:`Formula aggregation grouping label for full scope`}),description:()=>(0,n.msg)(`Aggregates across the entire dataset, ignoring the chart grouping.`,{desc:`Formula aggregation grouping description for full scope`}),icon:t.luzmoScopeFull,color:`var(--luzmo-formula-grouping-color-full, #0ca789)`},[e.g.GROUPINEX]:{label:()=>(0,n.msg)(`Include / exclude`,{desc:`Formula aggregation grouping label for include/exclude scope`}),description:()=>(0,n.msg)(`Aggregates over a custom grouping built from included and excluded columns.`,{desc:`Formula aggregation grouping description for include/exclude scope`}),icon:t.luzmoScopeFixed,color:`var(--luzmo-formula-grouping-color-include-exclude, #f00f65)`}}}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}});
20
+ const e=require("./formula-display-store-_432SuSV.cjs");let t=require("@luzmo/icons"),n=require("@lit/localize");var r=[e.g.GROUP,e.g.GROUPFULL,e.g.GROUPINEX];function i(){return{[e.g.GROUP]:{label:()=>(0,n.msg)(`Grouped`,{desc:`Formula aggregation grouping label for grouped scope`}),description:()=>(0,n.msg)(`Aggregates within the current grouping of the chart.`,{desc:`Formula aggregation grouping description for grouped scope`}),icon:t.luzmoScopeGrouped,color:`var(--luzmo-formula-grouping-color-grouped, #625df6)`},[e.g.GROUPFULL]:{label:()=>(0,n.msg)(`Full`,{desc:`Formula aggregation grouping label for full scope`}),description:()=>(0,n.msg)(`Aggregates across the entire dataset, ignoring the chart grouping.`,{desc:`Formula aggregation grouping description for full scope`}),icon:t.luzmoScopeFull,color:`var(--luzmo-formula-grouping-color-full, #0ca789)`},[e.g.GROUPINEX]:{label:()=>(0,n.msg)(`Include / exclude`,{desc:`Formula aggregation grouping label for include/exclude scope`}),description:()=>(0,n.msg)(`Aggregates over a custom grouping built from included and excluded columns.`,{desc:`Formula aggregation grouping description for include/exclude scope`}),icon:t.luzmoScopeFixed,color:`var(--luzmo-formula-grouping-color-include-exclude, #f00f65)`}}}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}});
@@ -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
- import { g as e } from "./formula-display-store-lENPCY-p.js";
20
+ import { g as e } from "./formula-display-store-BtD83k2x.js";
21
21
  import { luzmoScopeFixed as t, luzmoScopeFull as n, luzmoScopeGrouped as r } from "@luzmo/icons";
22
22
  import { msg as i } from "@lit/localize";
23
23
  //#region src/utils/formula/config/groupings.ts