@sisense/sdk-ui 2.28.0 → 2.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/dist/ai.cjs +57 -57
  2. package/dist/ai.js +767 -797
  3. package/dist/analytics-composer/node.cjs +1 -1
  4. package/dist/analytics-composer/node.js +1310 -1230
  5. package/dist/analytics-composer.cjs +7 -7
  6. package/dist/analytics-composer.js +19 -18
  7. package/dist/apply-styled-options-to-query-BK1NnV4P.js +6453 -0
  8. package/dist/apply-styled-options-to-query-Dl8vVNxo.cjs +1 -0
  9. package/dist/{index-C77YCBVd.js → index-DCYw3JUB.js} +29 -7
  10. package/dist/index-DTvxJdqZ.cjs +1 -0
  11. package/dist/index.cjs +611 -518
  12. package/dist/index.js +26556 -24829
  13. package/dist/index.umd.js +952 -829
  14. package/dist/packages/sdk-ui/src/domains/dashboarding/common-filters/utils.d.ts +1 -1
  15. package/dist/packages/sdk-ui/src/domains/dashboarding/components/dashboard-container.d.ts +1 -1
  16. package/dist/packages/sdk-ui/src/domains/dashboarding/components/dashboard-header-config.d.ts +127 -0
  17. package/dist/packages/sdk-ui/src/domains/dashboarding/components/dashboard-header-targets.d.ts +30 -0
  18. package/dist/packages/sdk-ui/src/domains/dashboarding/components/dashboard-header-title.d.ts +20 -0
  19. package/dist/packages/sdk-ui/src/domains/dashboarding/components/dashboard-header.d.ts +10 -1
  20. package/dist/packages/sdk-ui/src/domains/dashboarding/constants.d.ts +2 -2
  21. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-helpers.d.ts +21 -0
  22. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/get-dashboard-model.d.ts +7 -0
  23. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/translate-dashboard-utils.d.ts +45 -3
  24. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/dashboard-model-reducer/persist-dashboard-model-middleware.d.ts +10 -1
  25. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/dashboard-model-reducer/types.d.ts +36 -1
  26. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/dashboard-model-reducer/utils.d.ts +2 -0
  27. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-module/dashboard-module.d.ts +34 -0
  28. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-module/types.d.ts +58 -0
  29. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/duplicate-widget/use-duplicate-widget-menu-item.d.ts +7 -0
  30. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/use-dashboard-header-menu-item.d.ts +9 -0
  31. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/use-widget-updates-persistence.d.ts +27 -0
  32. package/dist/packages/sdk-ui/src/domains/dashboarding/persistence/deep-merge.d.ts +17 -0
  33. package/dist/packages/sdk-ui/src/domains/dashboarding/persistence/types.d.ts +26 -1
  34. package/dist/packages/sdk-ui/src/domains/dashboarding/persistence/update-types.d.ts +51 -0
  35. package/dist/packages/sdk-ui/src/domains/dashboarding/types.d.ts +18 -7
  36. package/dist/packages/sdk-ui/src/domains/dashboarding/utils.d.ts +9 -0
  37. package/dist/packages/sdk-ui/src/domains/data-browser/add-measure-popover/add-measure-data-browser.d.ts +11 -0
  38. package/dist/packages/sdk-ui/src/domains/data-browser/add-measure-popover/add-measure-popover.d.ts +14 -0
  39. package/dist/packages/sdk-ui/src/domains/data-browser/add-measure-popover/measure-ranking-title.d.ts +21 -0
  40. package/dist/packages/sdk-ui/src/domains/data-browser/add-measure-popover/measures.d.ts +13 -0
  41. package/dist/packages/sdk-ui/src/domains/filters/components/criteria-filter-tile/criteria-filter-menu.d.ts +2 -1
  42. package/dist/packages/sdk-ui/src/domains/filters/components/criteria-filter-tile/criteria-filter-operations.d.ts +1 -0
  43. package/dist/packages/sdk-ui/src/domains/filters/components/filter-editor-popover/filter-editor-context.d.ts +1 -0
  44. package/dist/packages/sdk-ui/src/domains/filters/components/filter-editor-popover/filter-editor-popover.d.ts +2 -1
  45. package/dist/packages/sdk-ui/src/domains/filters/components/filter-editor-popover/filter-editor.d.ts +2 -1
  46. package/dist/packages/sdk-ui/src/domains/filters/components/filter-editor-popover/sections/numeric-condition-section/types.d.ts +5 -0
  47. package/dist/packages/sdk-ui/src/domains/filters/components/filter-editor-popover/sections/ranking-condition/index.d.ts +3 -0
  48. package/dist/packages/sdk-ui/src/domains/filters/components/filter-editor-popover/sections/ranking-condition/ranking-condition-controls.d.ts +33 -0
  49. package/dist/packages/sdk-ui/src/domains/filters/components/filter-editor-popover/sections/ranking-condition/ranking-condition-utils.d.ts +13 -0
  50. package/dist/packages/sdk-ui/src/domains/filters/components/filters-panel/hooks/use-existing-filter-editing.d.ts +2 -1
  51. package/dist/packages/sdk-ui/src/domains/narrative/components/narrative-collapsible.d.ts +22 -4
  52. package/dist/packages/sdk-ui/src/domains/narrative/components/narrative-top-slot-shell.d.ts +2 -0
  53. package/dist/packages/sdk-ui/src/domains/narrative/components/narrative-trigger-button.d.ts +17 -0
  54. package/dist/packages/sdk-ui/src/domains/narrative/components/widget-narrative-interactive.d.ts +20 -2
  55. package/dist/packages/sdk-ui/src/domains/narrative/components/widget-narrative.d.ts +11 -9
  56. package/dist/packages/sdk-ui/src/domains/narrative/core/build-narrative-request.d.ts +1 -1
  57. package/dist/packages/sdk-ui/src/domains/narrative/core/get-narrative-dimensions-and-measures.d.ts +2 -2
  58. package/dist/packages/sdk-ui/src/domains/narrative/core/get-widget-narrative-from-widget-props.d.ts +18 -0
  59. package/dist/packages/sdk-ui/src/domains/narrative/core/to-nlg-api-verbosity.d.ts +7 -0
  60. package/dist/packages/sdk-ui/src/domains/narrative/core/widget-narrative-options.d.ts +101 -23
  61. package/dist/packages/sdk-ui/src/domains/narrative/core/widget-props-to-narrative-params.d.ts +35 -32
  62. package/dist/packages/sdk-ui/src/domains/narrative/hooks/use-get-widget-narrative.d.ts +11 -22
  63. package/dist/packages/sdk-ui/src/domains/narrative/hooks/use-line-height.d.ts +10 -0
  64. package/dist/packages/sdk-ui/src/domains/narrative/hooks/use-widget-narrative-state.d.ts +8 -9
  65. package/dist/packages/sdk-ui/src/domains/query-execution/core/execute-query.d.ts +34 -1
  66. package/dist/packages/sdk-ui/src/domains/query-execution/hooks/use-execute-excel-query/excel-export/build-jaql-excel-export.d.ts +13 -5
  67. package/dist/packages/sdk-ui/src/domains/query-execution/hooks/use-execute-excel-query/excel-export/build-xlsx-export-payload.d.ts +5 -0
  68. package/dist/packages/sdk-ui/src/domains/query-execution/hooks/use-execute-query-by-widget-id/use-execute-query-by-widget-id.d.ts +2 -1
  69. package/dist/packages/sdk-ui/src/domains/query-execution/types.d.ts +55 -3
  70. package/dist/packages/sdk-ui/src/domains/shared/header/header-item-size.d.ts +30 -0
  71. package/dist/packages/sdk-ui/src/domains/shared/header/header-items-renderer.d.ts +19 -0
  72. package/dist/packages/sdk-ui/src/domains/shared/header/header-spacer-item.d.ts +9 -0
  73. package/dist/packages/sdk-ui/src/domains/shared/header/index.d.ts +6 -0
  74. package/dist/packages/sdk-ui/src/domains/shared/header/resolve-header-items.d.ts +17 -0
  75. package/dist/packages/sdk-ui/src/domains/shared/header/types.d.ts +98 -0
  76. package/dist/packages/sdk-ui/src/domains/shared/header/use-resolved-header-items.d.ts +10 -0
  77. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/areamap-chart/data/areamap-data.d.ts +3 -1
  78. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/calendar-heatmap-chart/data.d.ts +0 -1
  79. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/cartesians/helpers/data.d.ts +3 -1
  80. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/cartesians/stackable/streamgraph-chart/helpers/chart-data.d.ts +3 -1
  81. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/categoricals/helpers/data.d.ts +3 -1
  82. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/categoricals/sunburst-chart/data/index.d.ts +3 -1
  83. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/categoricals/treemap-chart/data/index.d.ts +3 -1
  84. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/highcharts-based-chart-renderer/build-highchart-options.d.ts +1 -0
  85. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/alerts/index.d.ts +5 -0
  86. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/data/index.d.ts +22 -0
  87. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/data-options/index.d.ts +33 -0
  88. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/design-options/index.d.ts +21 -0
  89. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/highchart-options/highcharts-options-builder.d.ts +3 -0
  90. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/sankey-chart-builder.d.ts +3 -0
  91. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/sankey-node-colors.d.ts +10 -0
  92. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/sankey-chart/types.d.ts +38 -0
  93. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/highchart-based-charts/types.d.ts +2 -1
  94. package/dist/packages/sdk-ui/src/domains/visualizations/components/chart/restructured-charts/types.d.ts +12 -9
  95. package/dist/packages/sdk-ui/src/domains/visualizations/components/pivot-table/formatters/data-cell-formatters/data-cell-value-formatter.d.ts +1 -1
  96. package/dist/packages/sdk-ui/src/domains/visualizations/components/pivot-table/formatters/header-cell-formatters/header-cell-value-formatter.d.ts +1 -1
  97. package/dist/packages/sdk-ui/src/domains/visualizations/components/pivot-table/hooks/use-pivot-data-loading.d.ts +1 -0
  98. package/dist/packages/sdk-ui/src/domains/visualizations/components/pivot-table/resolve-pivot-container-size.d.ts +28 -0
  99. package/dist/packages/sdk-ui/src/domains/visualizations/components/sankey-chart.d.ts +30 -0
  100. package/dist/packages/sdk-ui/src/domains/visualizations/components/table/pure-table/helpers/format-numbers.d.ts +1 -1
  101. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data/cartesian-data.d.ts +1 -1
  102. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data/categorical-data.d.ts +1 -1
  103. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data/chart-data-service.d.ts +1 -1
  104. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data/filter-and-aggregate-chart-data.d.ts +2 -2
  105. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data/scatter-data.d.ts +2 -2
  106. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data/types.d.ts +2 -1
  107. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data-options/apply-styled-options-to-query.d.ts +4 -4
  108. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data-options/types.d.ts +74 -30
  109. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data-options/utils.d.ts +4 -4
  110. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/chart-options-service.d.ts +3 -0
  111. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/tooltip.d.ts +1 -1
  112. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/design-options.d.ts +10 -1
  113. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/funnel-plot-options.d.ts +1 -1
  114. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/number-format-config.d.ts +12 -0
  115. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/pie-plot-options.d.ts +2 -1
  116. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/sunburst/sunburst-levels.d.ts +1 -1
  117. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/sunburst/sunburst-options.d.ts +1 -1
  118. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/treemap/treemap-tooltip.d.ts +2 -2
  119. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-options-processor/translations/types.d.ts +12 -3
  120. package/dist/packages/sdk-ui/src/domains/visualizations/core/query-definition/filter-to-readable-label.d.ts +14 -0
  121. package/dist/packages/sdk-ui/src/domains/visualizations/core/query-definition/index.d.ts +1 -0
  122. package/dist/packages/sdk-ui/src/domains/visualizations/core/query-definition/query-definition.d.ts +5 -0
  123. package/dist/packages/sdk-ui/src/domains/visualizations/core/query-definition/query-pill.d.ts +5 -0
  124. package/dist/packages/sdk-ui/src/domains/visualizations/core/query-definition/truncate-pill-label.d.ts +10 -0
  125. package/dist/packages/sdk-ui/src/domains/widgets/change-events.d.ts +6 -0
  126. package/dist/packages/sdk-ui/src/domains/widgets/components/chart-widget/types.d.ts +8 -1
  127. package/dist/packages/sdk-ui/src/domains/widgets/components/chart-widget/use-chart-widget-excel-download.d.ts +1 -1
  128. package/dist/packages/sdk-ui/src/domains/widgets/components/chart-widget/use-chart-widget-narrative.d.ts +28 -0
  129. package/dist/packages/sdk-ui/src/domains/widgets/components/custom-widget/types.d.ts +11 -0
  130. package/dist/packages/sdk-ui/src/domains/widgets/components/custom-widget/use-custom-widget-excel-download.d.ts +1 -1
  131. package/dist/packages/sdk-ui/src/domains/widgets/components/pivot-table-widget/pivot-table-widget.d.ts +15 -0
  132. package/dist/packages/sdk-ui/src/domains/widgets/components/pivot-table-widget/types.d.ts +7 -1
  133. package/dist/packages/sdk-ui/src/domains/widgets/components/pivot-table-widget/use-pivot-widget-excel-download.d.ts +1 -1
  134. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/index.d.ts +1 -0
  135. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/tabber.d.ts +17 -1
  136. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/to-widget-dto-style.d.ts +41 -2
  137. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/widget-narrative-style.d.ts +31 -0
  138. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/types.d.ts +36 -1
  139. package/dist/packages/sdk-ui/src/domains/widgets/helpers/excel-export-map-dimensions-measures.d.ts +17 -2
  140. package/dist/packages/sdk-ui/src/domains/widgets/helpers/number-format-config-to-numeric-mask.d.ts +5 -0
  141. package/dist/packages/sdk-ui/src/domains/widgets/hooks/use-track-widget-init.d.ts +44 -0
  142. package/dist/packages/sdk-ui/src/domains/widgets/hooks/widget-entity-id.d.ts +30 -0
  143. package/dist/packages/sdk-ui/src/domains/widgets/hooks/widget-tracking-adapters.d.ts +41 -0
  144. package/dist/packages/sdk-ui/src/domains/widgets/shared/widget-container/widget-container.d.ts +7 -1
  145. package/dist/packages/sdk-ui/src/domains/widgets/shared/widget-style-utils.d.ts +29 -0
  146. package/dist/packages/sdk-ui/src/domains/widgets/widget-model/widget-model-translator/to-widget-dto-panels.d.ts +29 -1
  147. package/dist/packages/sdk-ui/src/domains/widgets/widget-model/widget-model.d.ts +6 -1
  148. package/dist/packages/sdk-ui/src/infra/api/narrative/narrative-endpoints.d.ts +2 -2
  149. package/dist/packages/sdk-ui/src/infra/api/rest-api.d.ts +2 -1
  150. package/dist/packages/sdk-ui/src/infra/app/settings/settings.d.ts +1 -7
  151. package/dist/packages/sdk-ui/src/infra/app/settings/types/features.d.ts +1 -9
  152. package/dist/packages/sdk-ui/src/infra/app/types.d.ts +32 -0
  153. package/dist/packages/sdk-ui/src/infra/contexts/sisense-context/sisense-context-provider.d.ts +1 -1
  154. package/dist/packages/sdk-ui/src/infra/formatting/format-data-set.d.ts +21 -0
  155. package/dist/packages/sdk-ui/src/infra/formatting/format-date.d.ts +67 -0
  156. package/dist/packages/sdk-ui/src/infra/formatting/format-number.d.ts +24 -0
  157. package/dist/packages/sdk-ui/src/infra/formatting/index.d.ts +5 -0
  158. package/dist/packages/sdk-ui/src/infra/modules/build-module-graph.d.ts +31 -0
  159. package/dist/packages/sdk-ui/src/infra/modules/build-module-registry.d.ts +31 -0
  160. package/dist/packages/sdk-ui/src/infra/modules/core-module-providers-tree.d.ts +11 -0
  161. package/dist/packages/sdk-ui/src/infra/modules/core-module.d.ts +26 -0
  162. package/dist/packages/sdk-ui/src/infra/modules/index.d.ts +3 -0
  163. package/dist/packages/sdk-ui/src/infra/modules/module-provider.d.ts +17 -0
  164. package/dist/packages/sdk-ui/src/infra/modules/modules-context.d.ts +20 -0
  165. package/dist/packages/sdk-ui/src/infra/modules/types.d.ts +79 -0
  166. package/dist/packages/sdk-ui/src/infra/plugins/types.d.ts +34 -6
  167. package/dist/packages/sdk-ui/src/infra/plugins/widget-plugins/types.d.ts +219 -49
  168. package/dist/packages/sdk-ui/src/infra/plugins/widget-plugins/widget-plugin-registry.d.ts +3 -3
  169. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/de-de.d.ts +22 -0
  170. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/en-us.d.ts +22 -0
  171. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/es-ar.d.ts +22 -0
  172. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/es-es.d.ts +22 -0
  173. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/fr-fr.d.ts +22 -0
  174. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/it-it.d.ts +22 -0
  175. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/ja-jp.d.ts +22 -0
  176. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/ko-kr.d.ts +22 -0
  177. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/nl-nl.d.ts +22 -0
  178. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/pt-br.d.ts +22 -0
  179. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/ru-ru.d.ts +22 -0
  180. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/tr-tr.d.ts +22 -0
  181. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/zh-cn.d.ts +22 -0
  182. package/dist/packages/sdk-ui/src/infra/translation/resources/en.d.ts +22 -0
  183. package/dist/packages/sdk-ui/src/infra/translation/resources/index.d.ts +44 -0
  184. package/dist/packages/sdk-ui/src/modules/ai/common/collapsible.d.ts +38 -2
  185. package/dist/packages/sdk-ui/src/modules/ai/get-nlg-insights-from-widget.d.ts +4 -13
  186. package/dist/packages/sdk-ui/src/modules/ai/index.d.ts +1 -1
  187. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/constructs/dimensions/get-dimension-name.d.ts +9 -0
  188. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/constructs/dimensions/translate-dimensions-to-json.d.ts +4 -3
  189. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/constructs/filters/get-filter-name.d.ts +10 -0
  190. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/constructs/filters/translate-filters-to-json.d.ts +3 -3
  191. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/constructs/get-query-element-summary.d.ts +23 -0
  192. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/constructs/measures/get-measure-name.d.ts +10 -0
  193. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/constructs/measures/translate-measures-to-json.d.ts +4 -3
  194. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/index.d.ts +3 -1
  195. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/query/translate-query-from-json.d.ts +1 -1
  196. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/query/translate-query-to-json.d.ts +4 -3
  197. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/data-options/adapters.d.ts +3 -2
  198. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/data-options/index.d.ts +1 -1
  199. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/shared/expression/process-measured-value.d.ts +14 -0
  200. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/types.d.ts +70 -9
  201. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/widget/helpers/to-widget-props.d.ts +3 -3
  202. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/widget/helpers/translate-envelope-widget-from-json.d.ts +2 -3
  203. package/dist/packages/sdk-ui/src/modules/analytics-composer/types.d.ts +1 -18
  204. package/dist/packages/sdk-ui/src/props.d.ts +55 -2
  205. package/dist/packages/sdk-ui/src/public-api/alpha.d.ts +6 -1
  206. package/dist/packages/sdk-ui/src/public-api/beta.d.ts +6 -0
  207. package/dist/packages/sdk-ui/src/public-api/internal.d.ts +1 -1
  208. package/dist/packages/sdk-ui/src/public-api/public.d.ts +3 -1
  209. package/dist/packages/sdk-ui/src/public-api/sisense-internal.d.ts +5 -3
  210. package/dist/packages/sdk-ui/src/shared/components/loading-overlay.d.ts +1 -0
  211. package/dist/packages/sdk-ui/src/shared/hooks/use-element-height.d.ts +19 -0
  212. package/dist/packages/sdk-ui/src/shared/hooks/use-synced-state.d.ts +23 -2
  213. package/dist/packages/sdk-ui/src/shared/utils/filter-relations.d.ts +8 -0
  214. package/dist/packages/sdk-ui/src/shared/utils/gradient.d.ts +5 -0
  215. package/dist/packages/sdk-ui/src/types.d.ts +78 -6
  216. package/dist/{use-hover-B6VmMb06.js → quota-notification-DqabeDbO.js} +24790 -22993
  217. package/dist/quota-notification-gYE6PTWA.cjs +750 -0
  218. package/dist/translations/de-de.cjs +1 -1
  219. package/dist/translations/de-de.js +27 -5
  220. package/dist/translations/en-us.cjs +1 -1
  221. package/dist/translations/en-us.js +1 -1
  222. package/dist/translations/es-ar.cjs +1 -1
  223. package/dist/translations/es-ar.js +27 -5
  224. package/dist/translations/es-es.cjs +1 -1
  225. package/dist/translations/es-es.js +27 -5
  226. package/dist/translations/fr-fr.cjs +1 -1
  227. package/dist/translations/fr-fr.js +27 -5
  228. package/dist/translations/it-it.cjs +1 -1
  229. package/dist/translations/it-it.js +29 -7
  230. package/dist/translations/ja-jp.cjs +1 -1
  231. package/dist/translations/ja-jp.js +27 -5
  232. package/dist/translations/ko-kr.cjs +1 -1
  233. package/dist/translations/ko-kr.js +27 -5
  234. package/dist/translations/nl-nl.cjs +1 -1
  235. package/dist/translations/nl-nl.js +29 -7
  236. package/dist/translations/pt-br.cjs +1 -1
  237. package/dist/translations/pt-br.js +27 -5
  238. package/dist/translations/ru-ru.cjs +1 -1
  239. package/dist/translations/ru-ru.js +27 -5
  240. package/dist/translations/tr-tr.cjs +1 -1
  241. package/dist/translations/tr-tr.js +27 -5
  242. package/dist/translations/zh-cn.cjs +1 -1
  243. package/dist/translations/zh-cn.js +27 -5
  244. package/dist/{types-CzgBH2kL.cjs → types-DSNnndG6.cjs} +1 -1
  245. package/dist/types-DecTaxy7.js +74 -0
  246. package/dist/{utils-BwGnDoB0.cjs → utils-Cpeyj9TN.cjs} +52 -52
  247. package/dist/{utils-CsV-iYtb.js → utils-L-HO2pCd.js} +2521 -2469
  248. package/dist/{widget-composer-C72Io-3c.cjs → widget-composer-CyWQaInf.cjs} +1 -1
  249. package/dist/{widget-composer-Bv_OVu1o.js → widget-composer-u6NMLm1C.js} +3 -3
  250. package/package.json +9 -8
  251. package/dist/apply-styled-options-to-query-23D9br-S.cjs +0 -1
  252. package/dist/apply-styled-options-to-query-BagjzMqm.js +0 -5992
  253. package/dist/dimensions-Bn1EaWiP.js +0 -204
  254. package/dist/dimensions-D8r34WRI.cjs +0 -1
  255. package/dist/index-C9G8giSk.cjs +0 -1
  256. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/use-dashboard-header-toolbar.d.ts +0 -25
  257. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/use-widget-scroll-persistence.d.ts +0 -16
  258. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/with-navigator-scroll-save.d.ts +0 -10
  259. package/dist/types-D3fPN43o.js +0 -74
  260. package/dist/use-hover-CaSOzp0i.cjs +0 -720
@@ -1 +1 @@
1
- "use strict";var Xt=Object.defineProperty,Zt=Object.defineProperties;var er=Object.getOwnPropertyDescriptors;var ne=Object.getOwnPropertySymbols;var _e=Object.prototype.hasOwnProperty,ze=Object.prototype.propertyIsEnumerable;var Be=(e,t,r)=>t in e?Xt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,d=(e,t)=>{for(var r in t||(t={}))_e.call(t,r)&&Be(e,r,t[r]);if(ne)for(var r of ne(t))ze.call(t,r)&&Be(e,r,t[r]);return e},T=(e,t)=>Zt(e,er(t));var pe=(e,t)=>{var r={};for(var n in e)_e.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&ne)for(var n of ne(e))t.indexOf(n)<0&&ze.call(e,n)&&(r[n]=e[n]);return r};Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const B=require("../types-CzgBH2kL.cjs"),l=require("../apply-styled-options-to-query-23D9br-S.cjs"),X=require("../dimensions-D8r34WRI.cjs");function tr(e,t){const r=e.length,n=t.length,s=Array.from({length:r+1},(i,o)=>Array.from({length:n+1},(a,u)=>o===0?u:u===0?o:0));for(let i=1;i<=r;i++)for(let o=1;o<=n;o++)s[i][o]=Math.min(s[i-1][o]+1,s[i][o-1]+1,s[i-1][o-1]+(e[i-1]===t[o-1]?0:1));return s[r][n]}function Oe(e,t){const r=[];let n="",s=0,i=!1,o=null;for(let a=0;a<e.length;a++){const u=e[a],c=e[a+1];if(i){if(u!==o){n+=u;continue}if(c===o){n+=u+c,a++;continue}i=!1,o=null,n+=u;continue}else{if(u==="'"||u==='"'){i=!0,o=u,n+=u;continue}if("([{".includes(u)&&s++,")]}".includes(u)&&s--,u===t&&s===0){r.push(n.trim()),n="";continue}}n+=u}return n.trim()&&r.push(n.trim()),r}function rr(e,t){let r=0,n=!1,s=null;for(let i=0;i<e.length;i++){const o=e[i],a=e[i+1];if(n){if(o!==s)continue;if(a===s){i++;continue}n=!1,s=null}else{if(o==="'"||o==='"'){n=!0,s=o;continue}if("([{".includes(o)&&r++,")]}".includes(o)&&r--,o===t&&r===0)return i}}return-1}function nr(e,t){if(e[t]!=="(")return-1;let r=1,n=t+1,s=!1,i=null;for(;n<e.length;){const o=e[n],a=e[n+1];if(s){if(o!==i){n++;continue}if(a===i){n+=2;continue}s=!1,i=null,n++}else{if(o==="'"||o==='"'){s=!0,i=o,n++;continue}if("([{".includes(o)&&r++,")]}".includes(o)&&--r===0)return n;n++}}return-1}function sr(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function V(e){if(!e||typeof e!="string")throw new Error(`Invalid composeCode: expected non-empty string, got ${typeof e}`);const t=e.trim();if(!t)throw new Error("Invalid composeCode: empty string");const r=t.match(/^([a-zA-Z_$][a-zA-Z0-9_.$]*)\s*\((.*)\)$/);if(!r)throw new Error(`Invalid composeCode format: expected function call, got '${t}'`);const n=r[1],s=r[2],i=st(s);return{function:n,args:i}}function st(e){return e.trim()?Oe(e,",").map(it):[]}function it(e){if(!e)throw new Error("Cannot parse empty argument value");if(e==="null")return null;if(e==="undefined")return;if(e==="true")return!0;if(e==="false")return!1;if(e.match(/^-?\d+(\.\d+)?$/))return parseFloat(e);if(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')){const r=e[0];return e.slice(1,-1).replace(new RegExp(`${r}${r}`,"g"),r)}if(e.startsWith("[")&&e.endsWith("]")){const r=e.slice(1,-1).trim();if(!r)return[];const n=st(r);return n.every(s=>typeof s=="string"),n}if(e.startsWith("{")&&e.endsWith("}")){const r=e.slice(1,-1).trim();return r?or(r):{}}return e.includes("(")&&e.includes(")")?V(e):(e.startsWith("DM."),e)}function ir(e){const t=rr(e,":");if(t===-1)throw new Error(`Invalid object property: expected 'key: value', got '${e}'`);const r=sr(e.slice(0,t).trim()),n=it(e.slice(t+1).trim());return[r,n]}function or(e){if(!e.trim())return{};const t=Oe(e,",").map(ir).filter(([,r])=>r!==null);return Object.fromEntries(t)}class ar{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(t,r){this.keyToValue.set(t,r),this.valueToKey.set(r,t)}getByKey(t){return this.keyToValue.get(t)}getByValue(t){return this.valueToKey.get(t)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}}class ot{constructor(t){this.generateIdentifier=t,this.kv=new ar}register(t,r){this.kv.getByValue(t)||(r||(r=this.generateIdentifier(t)),this.kv.set(r,t))}clear(){this.kv.clear()}getIdentifier(t){return this.kv.getByValue(t)}getValue(t){return this.kv.getByKey(t)}}class ur extends ot{constructor(){super(t=>t.name),this.classToAllowedProps=new Map}register(t,r){typeof r=="object"?(r.allowProps&&this.classToAllowedProps.set(t,r.allowProps),super.register(t,r.identifier)):super.register(t,r)}getAllowedProps(t){return this.classToAllowedProps.get(t)}}function cr(e){if("values"in Object)return Object.values(e);const t=[];for(const r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t}function lr(e,t){const r=cr(e);if("find"in r)return r.find(t);const n=r;for(let s=0;s<n.length;s++){const i=n[s];if(t(i))return i}}function j(e,t){Object.entries(e).forEach(([r,n])=>t(n,r))}function se(e,t){return e.indexOf(t)!==-1}function Pe(e,t){for(let r=0;r<e.length;r++){const n=e[r];if(t(n))return n}}class dr{constructor(){this.transfomers={}}register(t){this.transfomers[t.name]=t}findApplicable(t){return lr(this.transfomers,r=>r.isApplicable(t))}findByName(t){return this.transfomers[t]}}const fr=e=>Object.prototype.toString.call(e).slice(8,-1),at=e=>typeof e=="undefined",pr=e=>e===null,K=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,Ee=e=>K(e)&&Object.keys(e).length===0,L=e=>Array.isArray(e),mr=e=>typeof e=="string",gr=e=>typeof e=="number"&&!isNaN(e),yr=e=>typeof e=="boolean",hr=e=>e instanceof RegExp,G=e=>e instanceof Map,Q=e=>e instanceof Set,ut=e=>fr(e)==="Symbol",br=e=>e instanceof Date&&!isNaN(e.valueOf()),Er=e=>e instanceof Error,Ue=e=>typeof e=="number"&&isNaN(e),Fr=e=>yr(e)||pr(e)||at(e)||gr(e)||mr(e)||ut(e),Tr=e=>typeof e=="bigint",Ar=e=>e===1/0||e===-1/0,Sr=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),wr=e=>e instanceof URL,ct=e=>e.replace(/\./g,"\\."),me=e=>e.map(String).map(ct).join("."),Y=e=>{const t=[];let r="";for(let s=0;s<e.length;s++){let i=e.charAt(s);if(i==="\\"&&e.charAt(s+1)==="."){r+=".",s++;continue}if(i==="."){t.push(r),r="";continue}r+=i}const n=r;return t.push(n),t};function I(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const lt=[I(at,"undefined",()=>null,()=>{}),I(Tr,"bigint",e=>e.toString(),e=>typeof BigInt!="undefined"?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),I(br,"Date",e=>e.toISOString(),e=>new Date(e)),I(Er,"Error",(e,t)=>{const r={name:e.name,message:e.message};return t.allowedErrorProps.forEach(n=>{r[n]=e[n]}),r},(e,t)=>{const r=new Error(e.message);return r.name=e.name,r.stack=e.stack,t.allowedErrorProps.forEach(n=>{r[n]=e[n]}),r}),I(hr,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),r=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,r)}),I(Q,"set",e=>[...e.values()],e=>new Set(e)),I(G,"map",e=>[...e.entries()],e=>new Map(e)),I(e=>Ue(e)||Ar(e),"number",e=>Ue(e)?"NaN":e>0?"Infinity":"-Infinity",Number),I(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),I(wr,"URL",e=>e.toString(),e=>new URL(e))];function ue(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const dt=ue((e,t)=>ut(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,r)=>{const n=r.symbolRegistry.getValue(t[1]);if(!n)throw new Error("Trying to deserialize unknown symbol");return n}),Cr=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),ft=ue(Sr,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const r=Cr[t[1]];if(!r)throw new Error("Trying to deserialize unknown typed array");return new r(e)});function pt(e,t){return e!=null&&e.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}const mt=ue(pt,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const r=t.classRegistry.getAllowedProps(e.constructor);if(!r)return d({},e);const n={};return r.forEach(s=>{n[s]=e[s]}),n},(e,t,r)=>{const n=r.classRegistry.getValue(t[1]);if(!n)throw new Error(`Trying to deserialize unknown class '${t[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);return Object.assign(Object.create(n.prototype),e)}),gt=ue((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,r)=>{const n=r.customTransformerRegistry.findByName(t[1]);if(!n)throw new Error("Trying to deserialize unknown custom value");return n.deserialize(e)}),Or=[mt,dt,gt,ft],We=(e,t)=>{const r=Pe(Or,s=>s.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation(e,t)};const n=Pe(lt,s=>s.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation}},yt={};lt.forEach(e=>{yt[e.annotation]=e});const qr=(e,t,r)=>{if(L(t))switch(t[0]){case"symbol":return dt.untransform(e,t,r);case"class":return mt.untransform(e,t,r);case"custom":return gt.untransform(e,t,r);case"typed-array":return ft.untransform(e,t,r);default:throw new Error("Unknown transformation: "+t)}else{const n=yt[t];if(!n)throw new Error("Unknown transformation: "+t);return n.untransform(e,r)}},W=(e,t)=>{if(t>e.size)throw new Error("index out of bounds");const r=e.keys();for(;t>0;)r.next(),t--;return r.next().value};function ht(e){if(se(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(se(e,"prototype"))throw new Error("prototype is not allowed as a property");if(se(e,"constructor"))throw new Error("constructor is not allowed as a property")}const $r=(e,t)=>{ht(t);for(let r=0;r<t.length;r++){const n=t[r];if(Q(e))e=W(e,+n);else if(G(e)){const s=+n,i=+t[++r]==0?"key":"value",o=W(e,s);switch(i){case"key":e=o;break;case"value":e=e.get(o);break}}else e=e[n]}return e},Fe=(e,t,r)=>{if(ht(t),t.length===0)return r(e);let n=e;for(let i=0;i<t.length-1;i++){const o=t[i];if(L(n)){const a=+o;n=n[a]}else if(K(n))n=n[o];else if(Q(n)){const a=+o;n=W(n,a)}else if(G(n)){if(i===t.length-2)break;const u=+o,c=+t[++i]==0?"key":"value",y=W(n,u);switch(c){case"key":n=y;break;case"value":n=n.get(y);break}}}const s=t[t.length-1];if(L(n)?n[+s]=r(n[+s]):K(n)&&(n[s]=r(n[s])),Q(n)){const i=W(n,+s),o=r(i);i!==o&&(n.delete(i),n.add(o))}if(G(n)){const i=+t[t.length-2],o=W(n,i);switch(+s==0?"key":"value"){case"key":{const u=r(o);n.set(u,n.get(o)),u!==o&&n.delete(o);break}case"value":{n.set(o,r(n.get(o)));break}}}return e};function Te(e,t,r=[]){if(!e)return;if(!L(e)){j(e,(i,o)=>Te(i,t,[...r,...Y(o)]));return}const[n,s]=e;s&&j(s,(i,o)=>{Te(i,t,[...r,...Y(o)])}),t(n,r)}function Dr(e,t,r){return Te(t,(n,s)=>{e=Fe(e,s,i=>qr(i,n,r))}),e}function xr(e,t){function r(n,s){const i=$r(e,Y(s));n.map(Y).forEach(o=>{e=Fe(e,o,()=>i)})}if(L(t)){const[n,s]=t;n.forEach(i=>{e=Fe(e,Y(i),()=>e)}),s&&j(s,r)}else j(t,r);return e}const vr=(e,t)=>K(e)||L(e)||G(e)||Q(e)||pt(e,t);function Nr(e,t,r){const n=r.get(e);n?n.push(t):r.set(e,[t])}function Mr(e,t){const r={};let n;return e.forEach(s=>{if(s.length<=1)return;t||(s=s.map(a=>a.map(String)).sort((a,u)=>a.length-u.length));const[i,...o]=s;i.length===0?n=o.map(me):r[me(i)]=o.map(me)}),n?Ee(r)?[n]:[n,r]:Ee(r)?void 0:r}const bt=(e,t,r,n,s=[],i=[],o=new Map)=>{var b;const a=Fr(e);if(!a){Nr(e,s,t);const E=o.get(e);if(E)return n?{transformedValue:null}:E}if(!vr(e,r)){const E=We(e,r),m=E?{transformedValue:E.value,annotations:[E.type]}:{transformedValue:e};return a||o.set(e,m),m}if(se(i,e))return{transformedValue:null};const u=We(e,r),c=(b=u==null?void 0:u.value)!=null?b:e,y=L(c)?[]:{},f={};j(c,(E,m)=>{if(m==="__proto__"||m==="constructor"||m==="prototype")throw new Error(`Detected property ${m}. This is a prototype pollution risk, please remove it from your object.`);const F=bt(E,t,r,n,[...s,m],[...i,e],o);y[m]=F.transformedValue,L(F.annotations)?f[m]=F.annotations:K(F.annotations)&&j(F.annotations,(O,v)=>{f[ct(m)+"."+v]=O})});const g=Ee(f)?{transformedValue:y,annotations:u?[u.type]:void 0}:{transformedValue:y,annotations:u?[u.type,f]:f};return a||o.set(e,g),g};function Et(e){return Object.prototype.toString.call(e).slice(8,-1)}function Ve(e){return Et(e)==="Array"}function Rr(e){if(Et(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function Ir(e,t,r,n,s){const i={}.propertyIsEnumerable.call(n,t)?"enumerable":"nonenumerable";i==="enumerable"&&(e[t]=r),s&&i==="nonenumerable"&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0})}function Ae(e,t={}){if(Ve(e))return e.map(s=>Ae(s,t));if(!Rr(e))return e;const r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertySymbols(e);return[...r,...n].reduce((s,i)=>{if(Ve(t.props)&&!t.props.includes(i))return s;const o=e[i],a=Ae(o,t);return Ir(s,i,a,e,t.nonenumerable),s},{})}class h{constructor({dedupe:t=!1}={}){this.classRegistry=new ur,this.symbolRegistry=new ot(r=>{var n;return(n=r.description)!=null?n:""}),this.customTransformerRegistry=new dr,this.allowedErrorProps=[],this.dedupe=t}serialize(t){const r=new Map,n=bt(t,r,this,this.dedupe),s={json:n.transformedValue};n.annotations&&(s.meta=T(d({},s.meta),{values:n.annotations}));const i=Mr(r,this.dedupe);return i&&(s.meta=T(d({},s.meta),{referentialEqualities:i})),s}deserialize(t){const{json:r,meta:n}=t;let s=Ae(r);return n!=null&&n.values&&(s=Dr(s,n.values,this)),n!=null&&n.referentialEqualities&&(s=xr(s,n.referentialEqualities)),s}stringify(t){return JSON.stringify(this.serialize(t))}parse(t){return this.deserialize(JSON.parse(t))}registerClass(t,r){this.classRegistry.register(t,r)}registerSymbol(t,r){this.symbolRegistry.register(t,r)}registerCustom(t,r){this.customTransformerRegistry.register(d({name:r},t))}allowErrorProps(...t){this.allowedErrorProps.push(...t)}}h.defaultInstance=new h;h.serialize=h.defaultInstance.serialize.bind(h.defaultInstance);h.deserialize=h.defaultInstance.deserialize.bind(h.defaultInstance);h.stringify=h.defaultInstance.stringify.bind(h.defaultInstance);h.parse=h.defaultInstance.parse.bind(h.defaultInstance);h.registerClass=h.defaultInstance.registerClass.bind(h.defaultInstance);h.registerSymbol=h.defaultInstance.registerSymbol.bind(h.defaultInstance);h.registerCustom=h.defaultInstance.registerCustom.bind(h.defaultInstance);h.allowErrorProps=h.defaultInstance.allowErrorProps.bind(h.defaultInstance);const P=e=>e===void 0?l.Sort.None:e,Lr=e=>new B.JaqlElement(e.metadataItem,e.type),qe=e=>new l.DimensionalAttribute(e.name,e.expression,e.type,e.description,P(e.sort),e.dataSource,e.composeCode),$e=e=>new l.DimensionalLevelAttribute(e.name,e.expression,e.granularity,e.format,e.description,P(e.sort),e.dataSource,e.composeCode),N=e=>{switch(e.__serializable){case"DimensionalAttribute":return qe(e);case"DimensionalLevelAttribute":return $e(e);default:return e}},Ft=e=>new X.DimensionalDimension(e.name,e.expression,e.attributes.map(N),e.dimensions.map(kr),e.type,e.description,P(e.sort),e.dataSource,e.composeCode,e.defaultAttribute?N(e.defaultAttribute):void 0),Tt=e=>new X.DimensionalDateDimension(e.name,e.expression,e.description,P(e.sort),e.dataSource,e.composeCode,e.indexed,e.merged),kr=e=>{switch(e.__serializable){case"DimensionalDimension":return Ft(e);case"DimensionalDateDimension":return Tt(e);default:return e}},De=e=>new l.DimensionalBaseMeasure(e.name,N(e.attribute),e.aggregation,e.format,e.description,P(e.sort),e.dataSource,e.composeCode),xe=e=>{const t=Object.fromEntries(Object.entries(e.context).map(([r,n])=>{if(n&&typeof n=="object"&&"__serializable"in n)switch(n.__serializable){case"DimensionalAttribute":return[r,qe(n)];case"DimensionalLevelAttribute":return[r,$e(n)];case"DimensionalBaseMeasure":return[r,De(n)];case"DimensionalCalculatedMeasure":return[r,xe(n)];default:return[r,n]}return[r,n]}));return new l.DimensionalCalculatedMeasure(e.name,e.expression,t,e.format,e.description,P(e.sort),e.dataSource,e.composeCode)},At=e=>new l.DimensionalMeasureTemplate(e.name,N(e.attribute),e.format,e.description,P(e.sort),e.dataSource,e.composeCode),ge=e=>{switch(e.__serializable){case"DimensionalBaseMeasure":return De(e);case"DimensionalCalculatedMeasure":return xe(e);case"DimensionalMeasureTemplate":return At(e);default:return e}},C=e=>{switch(e.__serializable){case"MembersFilter":return new l.MembersFilter(N(e.attribute),e.members,e.config.backgroundFilter?T(d({},e.config),{backgroundFilter:C(e.config.backgroundFilter)}):e.config,e.composeCode);case"LogicalAttributeFilter":return new l.LogicalAttributeFilter(e.filters.map(r=>C(r)),e.operator,e.config,e.composeCode);case"CascadingFilter":return new l.CascadingFilter(e._filters.map(r=>C(r)),e.config,e.composeCode);case"ExcludeFilter":return new l.ExcludeFilter(C(e.filter),e.input?C(e.input):void 0,e.config,e.composeCode);case"MeasureFilter":return new l.MeasureFilter(N(e.attribute),ge(e.measure),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"RankingFilter":return new l.RankingFilter(N(e.attribute),ge(e.measure),e.operator,e.count,e.config,e.composeCode);case"MeasureRankingFilter":return new l.MeasureRankingFilter(ge(e.measure),e.operator,e.count,e.config,e.composeCode);case"NumericFilter":return new l.NumericFilter(N(e.attribute),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"TextFilter":return new l.TextFilter(N(e.attribute),e.operatorA,e.valueA,e.config,e.composeCode);case"DateRangeFilter":{const{valueA:r,valueB:n}=e;return new l.DateRangeFilter(N(e.attribute),r,n,e.config,e.composeCode)}case"RelativeDateFilter":return new l.RelativeDateFilter(N(e.attribute),e.offset,e.count,e.operator,e.anchor,e.config,e.composeCode);case"CustomFilter":return new l.CustomFilter(N(e.attribute),e.jaqlExpression,e.config,e.composeCode);default:return e}};h.registerCustom({isApplicable:B.isJaqlElement,serialize:e=>e.serialize(),deserialize:e=>Lr(e)},"JaqlElement");h.registerCustom({isApplicable:l.isDimensionalAttribute,serialize:e=>e.serialize(),deserialize:e=>qe(e)},"DimensionalAttribute");h.registerCustom({isApplicable:l.isDimensionalLevelAttribute,serialize:e=>e.serialize(),deserialize:e=>$e(e)},"DimensionalLevelAttribute");h.registerCustom({isApplicable:X.isDimensionalDimension,serialize:e=>e.serialize(),deserialize:e=>Ft(e)},"DimensionalDimension");h.registerCustom({isApplicable:X.isDimensionalDateDimension,serialize:e=>e.serialize(),deserialize:e=>Tt(e)},"DimensionalDateDimension");h.registerCustom({isApplicable:l.isDimensionalBaseMeasure,serialize:e=>e.serialize(),deserialize:e=>De(e)},"DimensionalBaseMeasure");h.registerCustom({isApplicable:l.isDimensionalCalculatedMeasure,serialize:e=>e.serialize(),deserialize:e=>xe(e)},"DimensionalCalculatedMeasure");h.registerCustom({isApplicable:l.isDimensionalMeasureTemplate,serialize:e=>e.serialize(),deserialize:e=>At(e)},"DimensionalMeasureTemplate");h.registerCustom({isApplicable:l.isMembersFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"MembersFilter");h.registerCustom({isApplicable:l.isLogicalAttributeFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"LogicalAttributeFilter");h.registerCustom({isApplicable:l.isCascadingFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"CascadingFilter");h.registerCustom({isApplicable:l.isExcludeFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"ExcludeFilter");h.registerCustom({isApplicable:l.isMeasureFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"MeasureFilter");h.registerCustom({isApplicable:l.isRankingFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"RankingFilter");h.registerCustom({isApplicable:l.isMeasureRankingFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"MeasureRankingFilter");h.registerCustom({isApplicable:l.isNumericFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"NumericFilter");h.registerCustom({isApplicable:l.isTextFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"TextFilter");h.registerCustom({isApplicable:l.isDateRangeFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"DateRangeFilter");h.registerCustom({isApplicable:l.isRelativeDateFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"RelativeDateFilter");h.registerCustom({isApplicable:l.isCustomFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"CustomFilter");const Br=h,S="DM.";function $(e){return typeof e=="object"&&e!==null}function q(e){return typeof e=="object"&&e!==null&&"function"in e&&"args"in e}function St(e){return e.every(q)}function ce(e){return"attribute"in e&&"config"in e}function Z(e){return"left"in e&&"right"in e&&"operator"in e}function ve(e){return!ce(e)&&!Z(e)}function _r(e){return $(e)&&"column"in e&&typeof e.column=="string"&&!("function"in e&&"args"in e)}function zr(e){return!$(e)||!("column"in e)?!1:q(e.column)}const w=3;function x(e,t,r){if(t.length===0)return;let n=Number.MAX_SAFE_INTEGER,s;for(const i of t){const o=r(i),a=tr(e,o);a<n&&(n=a,s=i)}return s!==void 0?{best:s,distance:n}:void 0}const wt="en";function ye(e,t){return e.localeCompare(t,wt,{sensitivity:"accent"})===0}function je(e,t){return t.length<=e.length&&e.slice(0,t.length).localeCompare(t,wt,{sensitivity:"accent"})===0}function ee(e){const t=[...e].sort((i,o)=>o.name.length-i.name.length),r=new Map,n=new Map,s=new Map;for(const i of e){r.set(i.name,i);const o=[...i.columns].sort((u,c)=>c.name.length-u.name.length);s.set(i.name,o);const a=new Map;for(const u of i.columns)a.set(u.name,u);n.set(i.name,a)}return{sortedTables:t,tableColumnMap:s,tableMap:r,columnMap:n}}function Ne(e,t){if(!e.startsWith(S))throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`);const r=e.slice(S.length);if(!r)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`);let n,s;for(const m of t.sortedTables)if(je(r,m.name+".")){const F=r.slice(m.name.length+1);if(!F)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`);n=m,s=F;break}if(!n){const m=r.indexOf(".");if(m===-1)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`);const F=r.slice(0,m),O=x(F,t.sortedTables,U=>U.name),v=O&&O.distance<=w?` Did you mean '${O.best.name}'?`:"";throw new Error(`Table '${F}' not found in the data model.${v}`)}const i=t.tableColumnMap.get(n.name);if(!i)throw new Error(`Table '${n.name}' found but has no columns`);let o,a;const u=l.DateLevels.all;for(const m of i){if(ye(s,m.name))return{table:n,column:m};if(!je(s,m.name+"."))continue;const F=s.slice(m.name.length+1);if(!F)continue;const O=u.includes(F),v=l.isDatetime(m.dataType);if(O){if(v)return{table:n,column:m,level:F};o||(o=m,a=F);continue}v&&!o&&(o=m,a=F)}if(o&&a){if(u.includes(a))throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Column '${n.name}.${o.name}' is not a datetime column`);const m=x(a,u,O=>O),F=m&&m.distance<=w?` Did you mean '${m.best}'?`:"";throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Valid levels are: ${u.join(", ")}.${F}`)}const c=s.indexOf("."),y=c===-1?s:s.slice(0,c),f=x(s,i,m=>m.name),g=f&&f.distance<=w&&!ye(f.best.name,y),b=g?` Did you mean '${f.best.name}'?`:"",E=!g&&s.endsWith(".")&&f!==void 0&&ye(f.best.name,y)?` Use '${y}' without a trailing dot.`:"";throw new Error(`Column '${y}' not found in table '${n.name}'.${b}${E}`)}function Pr(e,t){const{table:r,column:n,level:s}=Ne(e,t);if(s){if(!l.isDatetime(n.dataType))throw new Error(`Invalid date level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is not a datetime column`);const i=l.DateLevels.all;if(!i.includes(s))throw new Error(`Invalid date level '${s}' in dimensional element '${e}'. Valid levels are: ${i.join(", ")}`);const o=l.DateLevels.dateOnly;if(n.dataType==="date"&&!o.includes(s))throw new Error(`Invalid level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is only a date column, not a datetime column`);const a=l.DateLevels.timeOnly;if(n.dataType==="time"&&!a.includes(s))throw new Error(`Invalid level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is only a time column, not a date column`)}return{table:r,column:n,level:s}}function H(e,t,r,n){const{table:s,column:i,level:o}=Pr(e,r);let a=o;if(l.isDatetime(i.dataType)&&a===void 0&&(n!=null&&n.inferredDateLevel)){const u=n.inferredDateLevel,c=l.DateLevels.all;if(!c.includes(u))throw new Error(`Invalid inferred date level '${u}'. Valid levels are: ${c.join(", ")}`);const y=`${e}.${u}`,f=l.DateLevels.dateOnly;if(i.dataType==="date"&&!f.includes(u))throw new Error(`Invalid level '${u}' in dimensional element '${y}'. Column '${s.name}.${i.name}' is only a date column, not a datetime column`);const g=l.DateLevels.timeOnly;if(i.dataType==="time"&&!g.includes(u))throw new Error(`Invalid level '${u}' in dimensional element '${y}'. Column '${s.name}.${i.name}' is only a time column, not a date column`);a=u}return l.createAttributeHelper({expression:i.expression,dataType:i.dataType,granularity:a,format:void 0,sort:void 0,dataSource:t})}function Ur(e,t,r){const{column:n,level:s}=Ne(e,r);if(s)throw new Error(`Invalid DateDimension name format: '${e}'. Expected format: '${S}TableName.ColumnName'`);if(!l.isDatetime(n.dataType))throw new Error(`Invalid DateDimension name '${e}'. Column '${n.name}' is not a datetime column (got ${n.dataType}).`);return X.createDateDimension({name:n.name,expression:n.expression,dataSource:t})}const Wr=(e,t)=>{if(!e)return;const r=typeof e=="object"?e.direction:e;if(!l.isSortDirection(r))return T(d({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${r}'.`})},Vr=(e,t,r,n)=>{const s=Wr(e.sortType,n);if(s)return{attribute:H(e.column,t,r),style:{},error:s};const i=H(e.column,t,r),o=l.omit(e,"column");return{attribute:i,style:o}},jr=(e,t,r,n)=>typeof e=="string"?{attribute:H(e,t,r)}:_r(e)?Vr(e,t,r,n):{error:T(d({},n),{message:"Invalid dimension item. Expected a string (composeCode) or object with 'column' and optional 'sortType'."})},Ct=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;if(!t)return{success:!0,data:[]};if(!Array.isArray(t))return{success:!1,errors:[{path:"dimensions",input:t,message:"Invalid dimensions JSON. Expected an array."}]};const s=[],i=[];return t.forEach((o,a)=>{const u={path:`dimensions[${a}]`,input:o};try{const c=jr(o,r,n,u);if(c.error){i.push(c.error);return}c.attribute&&s.push(c.style!==void 0?{attribute:c.attribute,style:c.style}:{attribute:c.attribute})}catch(c){const y=c instanceof Error?c.message:"Unknown error";i.push(T(d({},u),{message:y}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}};function Me(e,t){const r=Reflect.get(e,t);if(typeof r!="function")throw new Error(`Function '${t}' not found or is not a function`);return r}function Jr(e,t){const r=e.replace("measureFactory.",""),s=Me(l.measureFactory,r)(...t);if(!ve(s))throw new Error(`Function '${e}' did not return a valid Measure`);return s}function Yr(e,t){const r=e.replace("filterFactory.logic.",""),s=Me(l.logic,r)(...t);if(!Z(s))throw new Error(`Function '${e}' did not return a valid FilterRelations`);return s}function Kr(e,t){if(e.startsWith("filterFactory.logic."))return Yr(e,t);const r=e.replace("filterFactory.",""),s=Me(l.filterFactory,r)(...t);if(!ce(s)&&!Z(s))throw new Error(`Function '${e}' did not return a valid Filter or FilterRelations`);return s}function Gr(e,t){const n=e.split(".")[0];if(n==="measureFactory")return Jr(e,t);if(n==="filterFactory")return Kr(e,t);throw new Error(`Unsupported factory: '${n}'. Supported factories: measureFactory, filterFactory`)}const p=(e,t,r,n)=>d({category:e,minArgs:t,maxArgs:r},n),Qr=new Set(["CORREL","COVARP","COVAR","EXPONDIST","INTERCEPT","LARGEST","NORMDIST","POISSONDIST","SKEWP","SKEW","SLOPE","TDIST","COSH","SINH","TANH","ORDERING","RDOUBLE","RINT"]),oe={SDIFF:p("xdiff",2,2,{requiredDateLevel:l.DateLevels.Seconds,argType:"datetime"}),MNDIFF:p("xdiff",2,2,{requiredDateLevel:l.DateLevels.Minutes,argType:"datetime"}),HDIFF:p("xdiff",2,2,{requiredDateLevel:l.DateLevels.Hours,argType:"datetime"}),DDIFF:p("xdiff",2,2,{requiredDateLevel:l.DateLevels.Days,argType:"datetime"}),MDIFF:p("xdiff",2,2,{requiredDateLevel:l.DateLevels.Months,argType:"datetime"}),QDIFF:p("xdiff",2,2,{requiredDateLevel:l.DateLevels.Quarters,argType:"datetime"}),YDIFF:p("xdiff",2,2,{requiredDateLevel:l.DateLevels.Years,argType:"datetime"}),ANYVALUE:p("aggregative",1,1),SUM:p("aggregative",1,2),AVG:p("aggregative",1,2),MIN:p("aggregative",1,2),MAX:p("aggregative",1,2),COUNT:p("aggregative",1,2),DUPCOUNT:p("aggregative",1,1),COUNTDUPLICATES:p("aggregative",1,1),STDEV:p("aggregative",1,2),STDEVP:p("aggregative",1,2),VAR:p("aggregative",1,2),VARP:p("aggregative",1,2),MEDIAN:p("aggregative",1,2),QUARTILE:p("aggregative",2,3),PERCENTILE:p("aggregative",2,3),LOWERWHISKERMAX_IQR:p("aggregative",1,1),LOWERWHISKERMAX_STDEVP:p("aggregative",1,1),UPPERWHISKERMIN_IQR:p("aggregative",1,1),UPPERWHISKERMIN_STDEVP:p("aggregative",1,1),OUTLIERSCOUNT_IQR:p("aggregative",1,1),OUTLIERSCOUNT_STDEVP:p("aggregative",1,1),MODE:p("aggregative",1,1),NOAGGFUNCTION:p("aggregative",1,1),RANK:p("window",0,Number.POSITIVE_INFINITY),RSUM:p("window",1,2),RAVG:p("window",1,2),YTDSUM:p("window",1,1),QTDSUM:p("window",1,1),MTDSUM:p("window",1,1),WTDSUM:p("window",1,1),YTDAVG:p("window",1,1),QTDAVG:p("window",1,1),MTDAVG:p("window",1,1),WTDAVG:p("window",1,1),CONCAT:p("string",2,Number.POSITIVE_INFINITY),LEFT:p("string",2,2),RIGHT:p("string",2,2),ABS:p("scalar",1,1),ACOS:p("scalar",1,1),ASIN:p("scalar",1,1),ATAN:p("scalar",1,1),CEILING:p("scalar",1,1),CONTRIBUTION:p("scalar",1,1),COS:p("scalar",1,1),COT:p("scalar",1,1),DIFFPASTDAY:p("scalar",1,1),DIFFPASTMONTH:p("scalar",1,1),DIFFPASTPERIOD:p("scalar",1,1),DIFFPASTQUARTER:p("scalar",1,1),DIFFPASTWEEK:p("scalar",1,1),DIFFPASTYEAR:p("scalar",1,1),EXP:p("scalar",1,1),FLOOR:p("scalar",1,1),GROWTH:p("growth",1,1),GROWTHPASTMONTH:p("growth",1,1),GROWTHPASTQUARTER:p("growth",1,1),GROWTHPASTWEEK:p("growth",1,1),GROWTHPASTYEAR:p("growth",1,1),GROWTHRATE:p("growth",1,1),LN:p("scalar",1,1),LOG10:p("scalar",1,1),MINUS:p("scalar",1,1),MOD:p("scalar",2,2),QUOTIENT:p("scalar",2,2),PASTDAY:p("date",1,2),PASTMONTH:p("date",1,2),PASTPERIOD:p("date",1,2),PASTQUARTER:p("date",1,2),PASTWEEK:p("date",1,2),PASTYEAR:p("date",1,2),PERCENTILEDISCFORINTERNALUSEONLY:p("scalar",1,1),PERCENTILECONTFORINTERNALUSEONLY:p("scalar",1,1),POWER:p("scalar",2,2),ROUND:p("scalar",2,2),SIN:p("scalar",1,1),SQRT:p("scalar",1,1),TAN:p("scalar",1,1)},Hr=Object.keys(oe).filter(e=>oe[e].category==="xdiff");function Ot(){return Hr}function qt(e){const t=oe[e.toUpperCase()];return t==null?void 0:t.requiredDateLevel}function Xr(e,t){return e===t?e===1?"1 parameter":`${e} parameters`:t===Number.POSITIVE_INFINITY?e<=1?"any number of parameters":`at least ${e} parameters`:`${e} or ${t} parameters`}const Zr=/\[(\w[\w.-]*)\]/g,$t=new Set(["AVG","COUNT","DUPCOUNT","MAX","MEDIAN","MIN","MODE","SUM","WTDAVG","WTDSUM","MTDAVG","MTDSUM","QTDAVG","QTDSUM","YTDAVG","YTDSUM"]),en=new RegExp(`\\b(${Array.from($t).join("|")})\\s*\\(`,"i");function Dt(e){return q(e)?!0:typeof e=="string"&&e.startsWith(S)?!1:$(e)&&"kind"in e?e.kind==="measure":!0}function tn(e){const t=/\b(\w+)\s*\(/g,r=new Set;let n;for(;(n=t.exec(e))!==null;){const s=n[1];$t.has(s.toUpperCase())||r.add(s)}return Array.from(r)}function rn(e){return e.length===1?`[${e[0]}]`:e.map(t=>`[${t}]`).join(", ")}function nn(e){return e.length===0?"":e.length===1?`${e[0]} is not an aggregative function. `:`${e.join(", ")} are not aggregative functions. `}const J=e=>e.startsWith("[")?e:`[${e}]`,xt=e=>e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e;function vt(e,t){if(t.length===0)return[];const r=t.map(s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),n=new RegExp(`\\b(${r})\\s*\\(\\s*\\[([^\\]]+)\\]\\s*,\\s*\\[([^\\]]+)\\]\\s*\\)`,"gi");return[...e.matchAll(n)].map(s=>({functionName:s[1].toUpperCase(),ref1:s[2].trim(),ref2:s[3].trim()}))}function sn(e,t,r){var o,a,u;const n=Object.keys(t),s=((o=r.errorPrefix)!=null?o:"customFormula validation").trim(),i=s===""?"":s.endsWith(" ")?s:`${s} `;return{formula:e,context:t,contextKeys:n,canonicalContextKeys:new Set(n.map(J)),errorPrefix:i,warnUnusedContext:(a=r.warnUnusedContext)!=null?a:!0,errorOnUnusedContext:(u=r.errorOnUnusedContext)!=null?u:!0,schemaIndex:r.schemaIndex,result:{isValid:!0,errors:[],warnings:[],references:[],unusedContextKeys:[]}}}function R(e,t){e.result.errors.push(t),e.result.isValid=!1}const on=new Set(["CASE","WHEN","THEN","ELSE","END","AND","OR"]);function an(e){const t=/\b(\w+)\s*\[/gi,r=[...e.formula.matchAll(t)].find(n=>!on.has(n[1].toUpperCase()));r&&R(e,`${e.errorPrefix}args[1]: Invalid syntax: '${r[1]}' - operator cannot be used before bracket reference without parentheses`)}function un(e,t){const r=e[t];let n=t+1;for(;n<e.length;){const s=e[n],i=e[n+1];if(s!==r){n++;continue}if(i===r){n+=2;continue}return n+1}return e.length}function cn(e){return Oe(e,",").filter(t=>t.trim().length>0).length}function ln(e,t,r,n){for(;t<e.length&&/\s/.test(e[t]);)t++;if(e[t]!=="(")return t;const s=t,i=nr(e,s);if(i===-1)return s+1;const o=e.slice(s+1,i);return n.push({name:r.toUpperCase(),argCount:cn(o)}),n.push(...Nt(o)),i+1}function Nt(e){const t=[];let r=0;for(;r<e.length;){const n=e[r];if(n==="'"||n==='"'){r=un(e,r);continue}if(/[A-Za-z_]/.test(n)){const s=r;for(r++;r<e.length&&/[A-Za-z0-9_]/.test(e[r]);)r++;const i=e.slice(s,r);r=ln(e,r,i,t);continue}r++}return t}function dn(e){const t=Nt(e.formula),r=new Set,n=new Set;for(const{name:s,argCount:i}of t){if(Qr.has(s)){r.has(s)||(r.add(s),R(e,`${e.errorPrefix}args[1]: Function ${s} is not supported in custom formulas`));continue}const o=oe[s];if(o&&(i<o.minArgs||i>o.maxArgs)&&!n.has(s)){n.add(s);const a=Xr(o.minArgs,o.maxArgs);R(e,`${e.errorPrefix}args[1]: Function ${s} accepts ${a}`)}}}function fn(e){return[...new Set([...e.matchAll(new RegExp(Zr.source,"g"))].map(t=>t[1]))]}function pn(e){const t=e.result.references.filter(s=>!e.canonicalContextKeys.has(J(s)));if(t.length===0)return;const r=e.contextKeys.map(s=>`[${xt(s)}]`).join(", "),n=t.length===1?`Reference [${t[0]}]`:`References [${t.join("], [")}]`;R(e,`${e.errorPrefix}args[1]: ${n} not found in context. Available keys: ${r}`)}function mn(e){if(en.test(e.formula))return;const t=e.result.references.filter(r=>{var s;const n=(s=e.context[J(r)])!=null?s:e.context[r];return n!==void 0&&!Dt(n)});t.length!==0&&R(e,`${e.errorPrefix}args[1]: ${nn(tn(e.formula))}Bracket reference(s) ${rn(t)} point to raw attributes and must be wrapped in an aggregative function (e.g. SUM, AVG)`)}function gn(e){if(!e.warnUnusedContext&&!e.errorOnUnusedContext||e.contextKeys.length===0)return;const t=new Set(e.result.references.map(J)),r=e.contextKeys.filter(i=>!t.has(J(i)));if(e.result.unusedContextKeys=r,r.length===0)return;const n=r.map(i=>`[${xt(i)}]`).join(", "),s=`${e.errorPrefix}args[2]: Context keys ${n} are defined but not used in formula`;e.errorOnUnusedContext?R(e,s):e.warnUnusedContext&&e.result.warnings.push(s)}function Je(e,t,r,n){var o;const s=(o=n.context[J(e)])!=null?o:n.context[e];if(s===void 0)return;if(!(typeof s=="string"&&s.startsWith(S))){Dt(s)&&R(n,`${n.errorPrefix}args[1]: ${t.functionName} requires datetime dimension attributes. Reference [${e}] points to a measure; use an attribute (e.g. ${S}Table.Column.Level).`);return}if(n.schemaIndex)try{const a=Ne(s,n.schemaIndex);l.isDatetime(a.column.dataType)?r&&a.level&&a.level!==r&&R(n,`${n.errorPrefix}args[1]: ${t.functionName} expects date level '${r}'. Reference [${e}] has level '${a.level}'.`):R(n,`${n.errorPrefix}args[1]: ${t.functionName} requires datetime dimensions. Reference [${e}] resolves to non-datetime column '${a.column.name}'.`)}catch(a){const u=a instanceof Error?a.message:"Unknown error";R(n,`${n.errorPrefix}args[1]: ${t.functionName} reference [${e}]: ${u}`)}}function yn(e){const t=Ot(),r=vt(e.formula,t);for(const n of r){const s=qt(n.functionName);Je(n.ref1,n,s,e),Je(n.ref2,n,s,e)}}function hn(e,t,r={}){var s;const n=sn(e,t,r);return!e||e.trim().length===0?((s=r.allowEmptyFormula)!=null&&s||R(n,`${n.errorPrefix}args[1]: Formula cannot be empty`),n.result):(an(n),dn(n),n.result.references=fn(e),n.result.references.length===0?(n.result.warnings.push(`${n.errorPrefix}args[1]: No bracket references found in formula - ensure this is intentional`),n.result):n.contextKeys.length===0?(R(n,`${n.errorPrefix}args[2]: Context cannot be empty - custom formulas require context definitions`),n.result):(pn(n),mn(n),gn(n),yn(n),n.result))}function bn(e,t,r={}){const n=hn(e,t,r);if(!n.isValid)throw new Error(n.errors.join("; "));n.warnings.length>0&&console.warn("Formula validation warnings:",n.warnings.join("; "))}function En(e,t){if(e.length<3||e.length>5)throw new Error(`${t.pathPrefix}Expected 3, 4, or 5 arguments for customFormula (title, formula, context, format?, description?)`);const r=e[1];if(typeof r!="string")throw new Error(`${t.pathPrefix}args[1]: Expected formula string, got ${typeof r}`);const n=r,s=e[2];if(!$(s))throw new Error(`${t.pathPrefix}args[2]: Expected context object, got ${s===null?"null":typeof s}`);const i=s;bn(n,i,{errorPrefix:`${t.pathPrefix}`,errorOnUnusedContext:!0,allowEmptyFormula:!1,schemaIndex:t.schemaIndex});const o=Fn(n),a={};for(const[u,c]of Object.entries(i)){const y=`args[2].${u}`;if(q(c))a[`${u}`]=M({data:c,context:{dataSource:t.dataSource,schemaIndex:t.schemaIndex,pathPrefix:y}});else if(typeof c=="string"&&c.startsWith(S)){const f=u.startsWith("[")&&u.endsWith("]")?u.slice(1,-1):u,g=o[f];try{a[`${u}`]=H(c,t.dataSource,t.schemaIndex,g!==void 0?{inferredDateLevel:g}:void 0)}catch(b){const E=b instanceof Error?b.message:"Unknown error";throw new Error(`${y}: ${E}`)}}else if(c&&typeof c=="object"&&"kind"in c)a[`${u}`]=c;else throw new Error(`${y}: Invalid context value for key '${u}'. Expected a function call or attribute reference (${S}...), but got: ${typeof c}`)}return[e[0],e[1],a,...e.slice(3)]}function Fn(e){const t=Ot(),r=vt(e,t),n={};for(const s of r){const i=qt(s.functionName);if(i!==void 0)for(const o of[s.ref1,s.ref2]){const a=n[o];if(a!==void 0&&a!==i)throw new Error(`Reference [${o}] is used in xdiff functions with conflicting date levels ('${a}' and '${i}'). Specify the date level in the context (e.g. DM.Table.Column.${i}).`);n[o]=i}}return n}function Mt(e){return e.type===l.MetadataTypes.TextAttribute}function Rt(e){return e.type===l.MetadataTypes.NumericAttribute}function Tn(e){return e.type===l.MetadataTypes.DateLevel}function An(e){return Mt(e)||Rt(e)}function le(e){return e.type===l.MetadataTypes.TextAttribute?"text":e.type===l.MetadataTypes.NumericAttribute?"numeric":e.type===l.MetadataTypes.DateLevel?"date/datetime":"unknown"}function Re(e,t){const r=e[0];if(!r||typeof r!="object"||!("type"in r))throw new Error(`${t.pathPrefix}args[0]: Expected attribute as first argument`);return r}function Ye(e,t){const r=Re(e,t);if(!An(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string or numeric type, got ${le(r)} attribute`);return e}function _(e,t){const r=Re(e,t);if(!Rt(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be numeric type, got ${le(r)} attribute`);return e}function z(e,t){const r=Re(e,t);if(!Mt(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string type, got ${le(r)} attribute`);return e}function Sn(e,t){const r=e[0];if(!r||typeof r!="object"||!("attribute"in r))throw new Error(`${t.pathPrefix}args[0]: Expected filter as first argument`);return r}function wn(e,t){const r=Sn(e,t);if(!l.isMembersFilter(r))throw new Error(`${t.pathPrefix}args[0]: exclude filter only accepts members filter, got ${r.__serializable||"unknown"} filter`);return e}const Cn={"measureFactory.customFormula":En,"filterFactory.equals":Ye,"filterFactory.doesntEqual":Ye,"filterFactory.greaterThan":_,"filterFactory.greaterThanOrEqual":_,"filterFactory.lessThan":_,"filterFactory.lessThanOrEqual":_,"filterFactory.between":_,"filterFactory.betweenNotEqual":_,"filterFactory.numeric":_,"filterFactory.contains":z,"filterFactory.doesntContain":z,"filterFactory.startsWith":z,"filterFactory.doesntStartWith":z,"filterFactory.endsWith":z,"filterFactory.doesntEndWith":z,"filterFactory.like":z,"filterFactory.exclude":wn};function On(e){return Cn[`${e}`]}const It={"measureFactory.sum":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.average":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.avg":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.min":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.max":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.median":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.count":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.countDistinct":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.aggregate":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.constant":[{type:"number",required:!0}],"measureFactory.customFormula":[{type:"string",required:!0},{type:"string",required:!0},{type:"CustomFormulaContext",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.add":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1},{type:"boolean",required:!1}],"measureFactory.subtract":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1},{type:"boolean",required:!1}],"measureFactory.multiply":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1},{type:"boolean",required:!1}],"measureFactory.divide":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1},{type:"boolean",required:!1}],"measureFactory.measuredValue":[{type:"Measure",required:!0},{type:"Filter[]",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.rank":[{type:"Measure",required:!0},{type:"string",required:!1},{type:"string",required:!1},{type:"string",required:!1},{type:"Attribute[]",required:!1}],"measureFactory.trend":[{type:"Measure",required:!0},{type:"string",required:!1},{type:"any",required:!1}],"measureFactory.forecast":[{type:"Measure",required:!0},{type:"string",required:!1},{type:"any",required:!1}],"measureFactory.yearToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.quarterToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.monthToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.weekToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.runningSum":[{type:"Measure",required:!0},{type:"boolean",required:!1},{type:"string",required:!1}],"measureFactory.growth":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthRate":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.growthPastYear":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.difference":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.diffPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.diffPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.diffPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.diffPastYear":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastDay":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastWeek":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastMonth":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.pastYear":[{type:"Measure",required:!0},{type:"string",required:!1}],"measureFactory.contribution":[{type:"Measure",required:!0},{type:"string",required:!1}],"filterFactory.union":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.intersection":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.exclude":[{type:"Filter",required:!0},{type:"Filter",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.contains":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntContain":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.startsWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntStartWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.endsWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntEndWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.like":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.equals":[{type:"Attribute",required:!0},{type:"string | number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntEqual":[{type:"Attribute",required:!0},{type:"string | number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.greaterThan":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.greaterThanOrEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.lessThan":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.lessThanOrEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.between":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.betweenNotEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.numeric":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"number",required:!1},{type:"string",required:!1},{type:"number",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.members":[{type:"Attribute",required:!0},{type:"string[]",required:!0},{type:"MembersFilterConfig",required:!1}],"filterFactory.dateFrom":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateTo":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRange":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!1},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelative":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelativeFrom":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelativeTo":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisYear":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisMonth":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisQuarter":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.today":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureEquals":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureGreaterThan":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureGreaterThanOrEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureLessThan":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureLessThanOrEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBetween":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBetweenNotEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.topRanking":[{type:"Attribute",required:!0},{type:"Measure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.bottomRanking":[{type:"Attribute",required:!0},{type:"Measure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureTopRanking":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBottomRanking":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.cascading":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.logic.and":[{type:"FilterRelationsNode",required:!0},{type:"FilterRelationsNode",required:!0}],"filterFactory.logic.or":[{type:"FilterRelationsNode",required:!0},{type:"FilterRelationsNode",required:!0}]};function Ie(e){return It[`${e}`]}function qn(e){const t=Ie(e);return t?t.filter(r=>r.required).length:0}function $n(e){const t=Ie(e);return t?t.length:0}function Dn(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}/.test(e))return!1;const r=Date.parse(e);if(isNaN(r)||e.length<10)return!1;const n=new Date(e);return!isNaN(n.getTime())}function he(e,t,r,n){if(e.startsWith(S))try{return H(e,t,r)}catch(s){const i=s instanceof Error?s.message:"Unknown error";throw new Error(`${n}: ${i}`)}throw new Error(`${n}: Invalid attribute '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`)}function xn(e,t,r,n){if(e.startsWith(S))try{return Ur(e,t,r)}catch(s){const i=s instanceof Error?s.message:"Unknown error";throw new Error(`${n}: ${i}`)}throw new Error(`${n}: Invalid date dimension string '${e}'. Expected format: '${S}TableName.ColumnName'`)}function vn(e){const t=e.data,{argSchema:r,dataSource:n,schemaIndex:s,pathPrefix:i}=e.context,o=i;if(t===void 0){if(r.required)throw new Error(`${o}: Required argument is missing (expected ${r.type})`);return}if(!(t===null&&!r.required))switch(r.type){case"string":if(typeof t!="string")throw new Error(`${o}: Expected string, got ${typeof t}`);return t;case"number":if(typeof t!="number")throw new Error(`${o}: Expected number, got ${typeof t}`);return t;case"boolean":if(typeof t!="boolean")throw new Error(`${o}: Expected boolean, got ${typeof t}`);return t;case"string[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of strings, got ${typeof t}. Example: ['value1', 'value2']`);if(!t.every(a=>typeof a=="string"))throw new Error(`${o}: Expected array of strings, but contains non-string values`);return t;case"number[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of numbers, got ${typeof t}. Example: [10, 20]`);if(!t.every(a=>typeof a=="number"))throw new Error(`${o}: Expected array of numbers, but contains non-number values`);return t;case"Attribute":if(typeof t!="string")throw new Error(`${o}: Expected attribute string, got ${typeof t}. Example: 'DM.Commerce.Revenue'`);return he(t,n,s,o);case"Attribute[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of attributes, got ${typeof t}. Example: ['DM.Commerce.AgeRange']`);return t.map((a,u)=>{if(typeof a!="string")throw new Error(`${o}[${u}]: Expected attribute string, got ${typeof a}`);return he(a,n,s,`${o}[${u}]`)});case"Measure":case"BaseMeasure":if(!q(t))throw new Error(`${o}: Expected measure function call, got ${typeof t}. Example: {'function': 'measureFactory.sum', 'args': ['DM.Commerce.Revenue']}`);return M({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});case"Measure[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of measure function calls, got ${typeof t}`);return t.map((a,u)=>{if(!q(a))throw new Error(`${o}[${u}]: Expected measure function call, got ${typeof a}`);return M({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});case"Filter":if(!q(t))throw new Error(`${o}: Expected filter function call, got ${typeof t}. Example: {'function': 'filterFactory.contains', 'args': ['DM.Brand.Brand', 'Apple']}`);return M({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});case"Filter[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of filter function calls, got ${typeof t}`);return t.map((a,u)=>{if(!q(a))throw new Error(`${o}[${u}]: Expected filter function call, got ${typeof a}`);return M({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});case"FilterRelationsNode":if(Array.isArray(t))return t.map((a,u)=>{if(!q(a))throw new Error(`${o}[${u}]: Expected filter function call, got ${typeof a}`);return M({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});if(q(t))return M({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});throw new Error(`${o}: Expected filter function call or array of filters, got ${typeof t}`);case"DateDimension":if(typeof t!="string")throw new Error(`${o}: Expected date dimension string, got ${typeof t}. Example: 'DM.Commerce.Date'`);return xn(t,n,s,o);case"LevelAttribute":{if(typeof t!="string")throw new Error(`${o}: Expected date attribute string, got ${typeof t}. Example: 'DM.Commerce.Date.Years'`);const a=he(t,n,s,o);if(!Tn(a))throw new Error(`${o}: Attribute must be date/datetime type, got ${le(a)} attribute`);return a}case"Measure | number":if(typeof t=="number")return t;if(q(t))return M({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});throw new Error(`${o}: Expected measure function call or number, got ${typeof t}`);case"Date | string":if(typeof t=="string"){if(Dn(t))return t;throw new Error(`${o}: Expected valid ISO date string or Date object, got invalid date string '${t}'`)}else{if(t instanceof Date)return t;throw new Error(`${o}: Expected date string or Date object, got ${typeof t}`)}case"string | number":if(typeof t=="string"||typeof t=="number")return t;throw new Error(`${o}: Expected string or number, got ${typeof t}`);case"BaseFilterConfig":case"MembersFilterConfig":case"CustomFormulaContext":case"any":if(t==null&&r.required)throw new Error(`${o}: Required argument is null/undefined`);return t;default:return t}}function M(e){const{data:t}=e,{dataSource:r,schemaIndex:n,pathPrefix:s}=e.context,{function:i,args:o}=t,a=s?`${s}.`:"",u=Ie(i);if(!u){const m=Object.keys(It),F=x(i,m,v=>v),O=F&&F.distance<=w?` Did you mean '${F.best}'?`:"";throw new Error(`${a}function: Unknown function '${i}'.${O}`)}const c=qn(i),y=$n(i);if(o.length<c)throw new Error(`${a}function: Expected at least ${c} arguments, got ${o.length}`);if(o.length>y)throw new Error(`${a}function: Expected at most ${y} arguments, got ${o.length}`);const f=[],g=[];for(let m=0;m<Math.max(o.length,u.length);m++){const F=u[`${m}`],O=o[`${m}`],v=a?`${a}args[${m}]`:`args[${m}]`;if(O===void 0){F!=null&&F.required&&g.push(`${v}: Missing required argument (expected ${F.type})`);continue}if(!F){g.push(`${v}: Unexpected argument`);continue}try{const U=vn({data:O,context:{dataSource:r,schemaIndex:n,pathPrefix:v,argSchema:F}});f.push(U)}catch(U){const Ht=U instanceof Error?U.message:"Unknown error";g.push(Ht)}}if(g.length>0){const m=g.join("; ");throw new Error(m)}let b=f;const E=On(i);if(E)try{b=E(f,{dataSource:r,schemaIndex:n,pathPrefix:a})}catch(m){const F=m instanceof Error?m.message:"Unknown validation error";throw new Error(F)}return Gr(i,b)}function Lt(e){const{attribute:t,config:r}=e;if(l.isMembersFilter(e)&&l.isLevelAttribute(t)){const{granularity:n}=t,s=e.members.map(a=>n==="Years"&&!isNaN(Number(a))?`${a}-01-01T00:00:00`:a),i=l.simplifyFilterConfig(r),o=Object.keys(i).length===0?void 0:i;return l.members(t,s,o)}return e}function Nn(e){let t=[];for(const r of e)Z(r)?t=l.mergeFiltersOrFilterRelations(r,t):t=l.mergeFiltersOrFilterRelations([Lt(r)],t);return t!=null?t:[]}const Mn=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context,s=[],i=[];return t.forEach((o,a)=>{const u={path:`filters[${a}]`,input:o};try{const c=M({data:o,context:{dataSource:r,schemaIndex:n,pathPrefix:""}});!Z(c)&&!ce(c)?i.push(T(d({},u),{message:"Invalid filter JSON"})):s.push(c)}catch(c){const y=c instanceof Error?c.message:"Unknown error";i.push(T(d({},u),{message:y}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:Nn(s)}},te=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;return t?St(t)?Mn({data:t,context:{dataSource:r,schemaIndex:n}}):{success:!1,errors:[{path:"filters",input:t,message:"Invalid filters JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},Rn=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context,s=[],i=[];return t.forEach((o,a)=>{const u={path:`highlights[${a}]`,input:o};try{const c=M({data:o,context:{dataSource:r,schemaIndex:n,pathPrefix:""}});ce(c)?s.push(Lt(c)):i.push(T(d({},u),{message:"Invalid filter JSON"}))}catch(c){const y=c instanceof Error?c.message:"Unknown error";i.push(T(d({},u),{message:y}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}},de=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;return t?St(t)?Rn({data:t,context:{dataSource:r,schemaIndex:n}}):{success:!1,errors:[{path:"highlights",input:t,message:"Invalid highlights JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},In=(e,t)=>{if(e&&!l.isSortDirection(e))return T(d({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${e}'.`})},Ln=(e,t,r)=>{const{dataSource:n,schemaIndex:s}=t;try{const i=M({data:e,context:{dataSource:n,schemaIndex:s,pathPrefix:""}});return ve(i)?{success:!0,data:i}:{success:!1,errors:[T(d({},r),{message:"Invalid measure JSON"})]}}catch(i){const o=i instanceof Error?i.message:"Unknown error";return{success:!1,errors:[T(d({},r),{message:o})]}}},kn=(e,t,r,n)=>{const s=M({data:e.column,context:{dataSource:t,schemaIndex:r,pathPrefix:""}});if(!ve(s))return{style:{},error:T(d({},n),{message:"Invalid measure JSON"})};const i=In(e.sortType,n);if(i){const a=l.omit(e,"column");return{measure:s,style:a,error:i}}const o=l.omit(e,"column");return{measure:s,style:o}},Bn=(e,t,r,n)=>{if(zr(e))return kn(e,t,r,n);if(q(e)){const s=Ln(e,{dataSource:t,schemaIndex:r},n);return s.success?{measure:s.data}:{error:s.errors[0]}}return{error:T(d({},n),{message:"Invalid measure item. Expected a function call (function/args) or object with 'column' and optional 'sortType'."})}},kt=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;if(!t)return{success:!0,data:[]};if(!Array.isArray(t))return{success:!1,errors:[{path:"measures",input:t,message:"Invalid measures JSON. Expected an array."}]};const s=[],i=[];return t.forEach((o,a)=>{const u={path:`measures[${a}]`,input:o};try{const c=Bn(o,r,n,u);if(c.error){i.push(c.error);return}c.measure&&s.push(c.style!==void 0?{measure:c.measure,style:c.style}:{measure:c.measure})}catch(c){const y=c instanceof Error?c.message:"Unknown error";i.push(T(d({},u),{message:y}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}};function ie(e){return typeof e=="string"?e:e.title}function _n(e){const t={};for(const[r,n]of Object.entries(e)){const s={};n.filtersOptions!==void 0&&(s.filtersOptions=n.filtersOptions),n.partialDtoOptions!==void 0&&(s.partialDtoOptions=n.partialDtoOptions),Object.keys(s).length>0&&(t[r]=s)}return Object.keys(t).length>0?t:void 0}function Bt(e){return typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"?e.toJSON():e}function k(e){return typeof e=="string"?e.replace(/\[\[([^\]]+)\]\]/g,"$1"):Array.isArray(e)?e.map(k):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t,k(r)])):e}function A(e,t,r){const n=e();if(!n.success){const s=r?n.errors.map(r):n.errors;return t.push(...s),null}return n.data}const zn=e=>{const{data:t}=e,{dataSource:r,tables:n}=e.context,s=ee(n),i=[],o=A(()=>Ct({data:t.dimensions||[],context:{dataSource:r,schemaIndex:s}}),i),a=A(()=>kt({data:t.measures||[],context:{dataSource:r,schemaIndex:s}}),i),u=A(()=>te({data:t.filters||[],context:{dataSource:r,schemaIndex:s}}),i);let c=null;return t.highlights&&(c=A(()=>de({data:t.highlights||[],context:{dataSource:r,schemaIndex:s}}),i)),i.length>0?{success:!1,errors:i}:{success:!0,data:d({dataSource:l.convertDataSource(r),dimensions:o?l.adaptDimensionsForQuery(o):[],measures:a?l.adaptMeasuresForQuery(a):[],filters:u||[]},c&&{highlights:c})}};function Ke(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function Le(e){const t=[],r=[];return e.forEach((n,s)=>{var f,g,b;const i=Ke(n)?n.column:n,o=Ke(n)?n:void 0,a=()=>Bt(i);if(!i.composeCode){r.push({path:`dimensions[${s}]`,input:a(),message:`Dimension at index ${s} (${i.name||"unnamed"}) is missing composeCode`});return}if(!i.composeCode.startsWith(S)){r.push({path:`dimensions[${s}]`,input:a(),message:`Expected composeCode to start with '${S}' for dimension at index ${s} (${i.name||"unnamed"}). Got: '${i.composeCode}'`});return}const u=(b=o!=null&&o.sortType?l.convertSortDirectionToSort(o.sortType):void 0)!=null?b:((f=i.getSort)==null?void 0:f.call(i))!==void 0&&((g=i.getSort)==null?void 0:g.call(i))!==l.Sort.None?i.getSort():void 0,c=o?l.omit(o,"column"):{};if(u!==void 0&&u!==l.Sort.None||o&&Object.keys(c).length>0){const E=d(d({column:i.composeCode},u!==void 0&&u!==l.Sort.None&&{sortType:l.convertSortToSortDirection(u)}),c);t.push(E)}else t.push(i.composeCode)}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}const Se="Unknown error";function re(e){if(!e)return{success:!0,data:[]};const t=[];if(l.isFilterRelations(e)){if(!e.composeCode)return{success:!1,errors:[{path:"filters",input:e,message:`FilterRelations is missing composeCode. Operator: ${e.operator||"unknown"}`}]};try{return{success:!0,data:[V(e.composeCode)]}}catch(n){const s=n instanceof Error?n.message:Se;return{success:!1,errors:[{path:"filters",input:e,message:`Failed to parse composeCode for FilterRelations: ${s}. ComposeCode: '${e.composeCode}'`}]}}}const r=[];return e.forEach((n,s)=>{var i;if(!n.composeCode){t.push({path:`filters[${s}]`,input:n,message:`Filter at index ${s} (${(i=n.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=V(n.composeCode);r.push(o)}catch(o){const a=o instanceof Error?o.message:Se;t.push({path:`filters[${s}]`,input:n,message:`Failed to parse composeCode for filter at index ${s}: ${a}. ComposeCode: '${n.composeCode}'`})}}),t.length>0?{success:!1,errors:t}:{success:!0,data:r}}function fe(e){if(!e)return{success:!0,data:[]};const t=[],r=[];return e.forEach((n,s)=>{var i;if(!n.composeCode){r.push({path:`highlights[${s}]`,input:n,message:`Highlight filter at index ${s} (${(i=n.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=V(n.composeCode);t.push(o)}catch(o){const a=o instanceof Error?o.message:Se;r.push({path:`highlights[${s}]`,input:n,message:`Failed to parse composeCode for highlight filter at index ${s}: ${a}. ComposeCode: '${n.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function Ge(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function ke(e){const t=[],r=[];return e.forEach((n,s)=>{var u,c,y;const i=Ge(n)?n.column:n,o=Ge(n)?n:void 0,a=()=>Bt(i);if(!i.composeCode){r.push({path:`measures[${s}]`,input:a(),message:`Measure at index ${s} (${i.name||"unnamed"}) is missing composeCode`});return}try{const f=V(i.composeCode),g=(y=o!=null&&o.sortType?l.convertSortDirectionToSort(o.sortType):void 0)!=null?y:((u=i.getSort)==null?void 0:u.call(i))!==void 0&&((c=i.getSort)==null?void 0:c.call(i))!==l.Sort.None?i.getSort():void 0;if(g!==void 0&&g!==l.Sort.None||o&&Object.keys(l.omit(o,"column")).length>0){const E=o?l.omit(o,"column"):{},m=d(d({column:f},g!==void 0&&g!==l.Sort.None&&{sortType:l.convertSortToSortDirection(g)}),E);t.push(m)}else t.push(f)}catch(f){const g=f instanceof Error?f.message:"Unknown error";r.push({path:`measures[${s}]`,input:a(),message:`Failed to parse composeCode for measure at index ${s} (${i.name||"unnamed"}): ${g}. ComposeCode: '${i.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function Qe(e){var t,r,n,s;return((r=(t=e.composeCode)==null?void 0:t.includes("measureFactory.trend"))!=null?r:!1)||((s=(n=e.name)==null?void 0:n.startsWith(l.TREND_PREFIX))!=null?s:!1)}function He(e){var t,r,n,s;return((r=(t=e.composeCode)==null?void 0:t.includes("measureFactory.forecast"))!=null?r:!1)||((s=(n=e.name)==null?void 0:n.startsWith(l.FORECAST_PREFIX))!=null?s:!1)}function Xe(e){try{const t=V(e.trim());return t.args[2]!=null&&typeof t.args[2]=="object"?t.args[2]:void 0}catch(t){return}}function Pn(e){var n,s,i;if(!(e!=null&&e.length))return[];const t=new Set,r=[];for(let o=0;o<e.length;o++){if(t.has(o))continue;const a=e[o];if(Qe(a)||He(a)){r.push(a);continue}const u=(n=a.name)!=null?n:"Measure",c=`${l.TREND_PREFIX}_${u}`,y=`${l.FORECAST_PREFIX}_${u}`;let f,g,b=o+1;if(b<e.length&&!t.has(b)&&Qe(e[b])&&e[b].name===c){const E=(s=e[b].composeCode)==null?void 0:s.trim();E&&(f=Xe(E),t.add(b),b++)}if(b<e.length&&!t.has(b)&&He(e[b])&&e[b].name===y){const E=(i=e[b].composeCode)==null?void 0:i.trim();E&&(g=Xe(E),t.add(b))}f!==void 0||g!==void 0?r.push(d(d({column:a},f&&Object.keys(f).length>0&&{trend:f}),g&&Object.keys(g).length>0&&{forecast:g})):r.push(a)}return r}function Un(e){const t=[],r=A(()=>Le(e.dimensions||[]),t),n=Pn(e.measures||[]),s=A(()=>ke(n),t),i=A(()=>re(e.filters),t);let o=null;if(e.highlights&&e.highlights.length>0&&(o=A(()=>fe(e.highlights),t)),t.length>0)return{success:!1,errors:t};const a=d({dimensions:r||[],measures:s||[],filters:i||[]},o&&{highlights:o});return{success:!0,data:k(a)}}const _t=new Set(l.ALL_CHART_TYPES.filter(e=>e!=="image")),Ze=Object.freeze([..._t]),be=new Set(["category","value","breakBy","breakByPoint","x","y","breakByColor","size","boxType","outliers","geo","colorBy","details","color","date","columns","rows","values","secondary","min","max","seriesToColorMap"]),Wn={line:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},area:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},bar:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},column:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},streamgraph:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},polar:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},pie:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},funnel:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},treemap:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},sunburst:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},scatter:{validAxes:new Set(["x","y","breakByPoint","breakByColor","size","seriesToColorMap"]),requiredAxes:[]},table:{validAxes:new Set(["columns"]),requiredAxes:["columns"]},indicator:{validAxes:new Set(["value","secondary","min","max"]),requiredAxes:[]},boxplot:{validAxes:new Set(["category","value","boxType","outliers"]),requiredAxes:["value"]},areamap:{validAxes:new Set(["geo","color"]),requiredAxes:["geo"]},scattermap:{validAxes:new Set(["geo","size","colorBy","details"]),requiredAxes:["geo"]},"calendar-heatmap":{validAxes:new Set(["date","value"]),requiredAxes:["date","value"]},arearange:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]}},Vn=new Set(["category","breakBy","breakByPoint","rows","geo","details","date"]),jn=new Set(["value","size","colorBy","boxType","outliers","values","secondary","min","max","color"]);function Jn(e){const t=Wn[e];if(t)return{validAxes:new Set(t.validAxes),requiredAxes:Object.freeze([...t.requiredAxes])}}function zt(e){return typeof e=="string"&&_t.has(e)}function Yn(e,t,r){if(r==="boxplot"&&e==="value"||r==="calendar-heatmap"&&e==="date"||Vn.has(e))return!0;if(jn.has(e))return!1;const n=Array.isArray(t)?t[0]:t;if(!n)return!0;let s;return $(n)&&"column"in n&&(s=n.column),!(q(n)||s!==void 0&&q(s))}function Kn(e){const t=[],r={chartType:"",dataOptions:{}};if(!$(e))return t.push({path:"chartType",input:e,message:"Expected an object"}),{normalized:r,errors:t};const n=e.chartType;if(n===void 0){const i=Object.keys(e),o=x("chartType",i,c=>c),a=o&&o.distance<=w?` Did you mean 'chartType'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=w?{[o.best]:e[o.best]}:e;t.push({path:"chartType",input:u,message:`chartType is required.${a}`})}else if(zt(n))r.chartType=n;else{const i=x(String(n),Ze,u=>u),o=i&&i.distance<=w?` Did you mean '${i.best}'?`:"",a=Ze.slice(0,8).join(", ");t.push({path:"chartType",input:n,message:`Invalid chartType '${n}'. Valid types: ${a}, ...${o}`})}const s=e.dataOptions;if(s===void 0){const i=Object.keys(e),o=x("dataOptions",i,c=>c),a=o&&o.distance<=w?` Did you mean 'dataOptions'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=w?{[o.best]:e[o.best]}:e;t.push({path:"dataOptions",input:u,message:`dataOptions is required.${a}`})}else s!==null&&typeof s=="object"&&(r.dataOptions=s);return e.styleOptions!==void 0&&(r.styleOptions=e.styleOptions),e.filters!==void 0&&Array.isArray(e.filters)&&(r.filters=e.filters),e.highlights!==void 0&&Array.isArray(e.highlights)&&(r.highlights=e.highlights),{normalized:r,errors:t}}function D(e,t){return e===-1?"dataOptions":typeof e=="number"?`dataOptions[${e}]`:t!==void 0?`dataOptions.${e}[${t}]`:`dataOptions.${e}`}function Pt(e,t){return e?t?`${e}.${t}`:e:t!=null?t:""}function Gn(e){return t=>T(d({},t),{path:Pt(e,t.path)})}function Ut(e){return Gn(`widgets[${e}]`)}function Wt(e,t){return e.map(t)}function Qn(e){return e.map(({attribute:t,style:r})=>r?d({column:t},r):t)}function Hn(e){return e.map(({measure:t,style:r})=>r?d({column:t},r):t)}function Vt(e){return Array.isArray(e)?e:[e]}const Xn=/^(dimensions|measures|filters|highlights)(\[\d+\])?$/;function we(e){return t=>{const r=t.path.match(/\[(\d+)\]$/),n=r?Number(r[1]):void 0,s=D(e,n);if(Xn.test(t.path)||t.path.startsWith("dataOptions"))return T(d({},t),{path:s});const i=t.path.replace(/\[\d+\]$/,"");return T(d({},t),{path:Pt(i,s)})}}function ae(e,t,r,n,s){const i=t?Vt(t):[];if(i.length===0)return[];if(r==="dimension"){const a=A(()=>Ct({data:i,context:n}),s,we(e));return a!==null?Qn(a):null}const o=A(()=>kt({data:i,context:n}),s,we(e));return o!==null?Hn(o):null}const et=(e,t)=>{const r=t.path.match(/\[(\d+)\]$/),n=r?Number(r[1]):void 0;return T(d({},t),{path:D(e,n)})};function tt(e,t,r){const n=Array.isArray(t)?t:t!=null?[t]:[];if(r==="dimension"){const i=Le(n);return i.success?{success:!0,data:i.data}:{success:!1,errors:i.errors.map(o=>et(e,o))}}const s=ke(n);return s.success?{success:!0,data:s.data}:{success:!1,errors:s.errors.map(i=>et(e,i))}}function Zn(e,t){let r;$(e)&&"column"in e&&(r=e.column);const s=!(q(e)||r!==void 0&&q(r))?"dimension":"measure",i=[],o=ae("columns",[e],s,t,i);return o!==null?{success:!0,data:o}:{success:!1,errors:i}}function es(e,t,r,n){const s=[];for(const i of e){const o=A(()=>Zn(i,t),r,n);o&&s.push(...o)}return s}function ts(e,t,r){if(!e||!$(e))return r.push({path:D(-1),input:e,message:"dataOptions is required"}),null;const n={},{chartType:s}=t,i=r.length,o=e,a=Object.keys(e),u=new Map;for(const f of a)if(!be.has(f)){const g=x(f,[...be],E=>E),b=g&&g.distance<=w?` Did you mean '${g.best}'?`:"";g&&g.distance<=w&&u.set(f,g.best),r.push({path:D(f),input:o[f],message:`Unknown dataOptions key '${f}'.${b}`})}const c=s?Jn(s):void 0;if(c){for(const f of a)if(f!=="seriesToColorMap"&&!c.validAxes.has(f)&&be.has(f)){const g=x(f,[...c.validAxes],m=>m),b=g&&g.distance<=w?` Did you mean '${g.best}'?`:"",E=[...c.validAxes].join(", ");r.push({path:D(f),input:o[f],message:`Axis '${f}' is not valid for chart type '${s}'. Valid axes: ${E}.${b}`})}for(const f of c.requiredAxes)[...u.values()].includes(f)||(!(f in o)||o[f]==null)&&r.push({path:D(f),input:null,message:`Chart type '${s}' requires '${c.requiredAxes.join("' and '")}'. Missing: ${f}.`});s==="indicator"&&(["value","secondary","min","max"].some(b=>b in o&&o[b]!=null)||r.push({path:D(-1),input:e,message:"Indicator chart requires at least one of: value, secondary, min, max."})),s==="scatter"&&("x"in e&&e.x!=null||"y"in e&&e.y!=null||r.push({path:D(-1),input:e,message:"Scatter chart requires at least one of: x, y."}))}if(r.length>i)return null;const y=Object.entries(e);for(const[f,g]of y){if(!g)continue;if(f==="seriesToColorMap"){n[f]=g;continue}if(f==="columns"){n[f]=es(Vt(g),t,r,we("columns"));continue}const b=Yn(f,g,s)?"dimension":"measure",E=ae(f,g,b,t,r);if(E!==null){const m=s==="calendar-heatmap"&&f==="value";n[f]=m||!Array.isArray(g)?E[0]:E}}return r.length>i?null:n}function rs(e){if(typeof e!="string")return"iqr";const t=e.split("/")[1];return t==="iqr"||t==="extremums"||t==="standardDeviation"?t:"iqr"}const jt=e=>{var m;const{data:t,context:r}=e,{dataSource:n,tables:s}=r,{normalized:i,errors:o}=Kn(t);if(o.length>0)return{success:!1,errors:o};const a=i.chartType,u=ee(s),c=[];let y=ts(i.dataOptions,{dataSource:n,schemaIndex:u,chartType:a},c);if(a==="boxplot"&&y){const F=rs((m=i.styleOptions)==null?void 0:m.subtype),O=F==="iqr"||F==="standardDeviation";y=T(d({},y),{boxType:F,outliersEnabled:O})}let f=null;i.filters&&i.filters.length>0&&(f=A(()=>te({data:i.filters||[],context:{dataSource:n,schemaIndex:u}}),c));let g=null;if(i.highlights&&i.highlights.length>0&&(g=A(()=>de({data:i.highlights||[],context:{dataSource:n,schemaIndex:u}}),c)),c.length>0||y===null)return{success:!1,errors:c};if(!zt(i.chartType))return{success:!1,errors:[{path:"chartType",input:i.chartType,message:"Invalid chartType"}]};const b=i.chartType;return{success:!0,data:d(d(d({dataSet:l.convertDataSource(n),chartType:b,dataOptions:y},i.styleOptions&&{styleOptions:i.styleOptions}),f&&{filters:f}),g&&{highlights:g})}},Jt=e=>{const t=[];if(!e.chartType)return{success:!1,errors:[{path:"chartType",input:e,message:"chartType is required"}]};if(!e.dataOptions)return{success:!1,errors:[{path:"dataOptions",input:e,message:"dataOptions is required"}]};let r=null;const n=ns(e.dataOptions);n.success?r=n.data:t.push(...n.errors);let s;if(e.filters){const a=A(()=>re(e.filters),t);s=a!=null?a:void 0}let i;if(e.highlights&&e.highlights.length>0){const a=A(()=>fe(e.highlights),t);i=a!=null?a:void 0}if(t.length>0||r===null)return{success:!1,errors:t};const o=d(d(d({chartType:e.chartType,dataOptions:r},e.styleOptions&&{styleOptions:e.styleOptions}),s&&s.length>0&&{filters:s}),i&&i.length>0&&{highlights:i});return{success:!0,data:k(o)}};function ns(e){const t={},r=[],n=new Set(["seriesToColorMap","boxType","outliersEnabled","valueTitle"]);for(const[s,i]of Object.entries(e)){if(s==="seriesToColorMap"&&i){t[s]=i;continue}if(n.has(s)||i==null){i!=null&&(t[s]=i);continue}const o=Array.isArray(i)?i:[i],a=Array.isArray(i),u=[],c=[];for(let y=0;y<o.length;y++){const f=o[y],b=ss(f)?Le([f]):ke([f]);b.success?u.push(...b.data):b.errors.forEach(E=>{var m;c.push(T(d({},E),{path:D(s,y),input:(m=E.input)!=null?m:f}))})}if(c.length>0){r.push(...c);continue}t[s]=a?u:u[0]}return r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function ss(e){const t=Array.isArray(e)?e[0]:e;if(!t||!$(t))return!0;const r="column"in t&&t.column!=null&&$(t.column)?t.column:t;if("composeCode"in r){const n=r.composeCode;if(typeof n=="string"&&n.startsWith("DM."))return!0;if(typeof n=="string"&&(n.includes("measureFactory")||n.includes("Formula")))return!1}if("type"in r){const n=r.type;if(n==="basemeasure"||n==="calculatedmeasure")return!1}return!("aggregation"in r||"attribute"in r&&"aggregation"in r)}const rt=["rows","columns","values","grandTotals"];function is(e){if(!$(e))return!1;const t=Object.keys(e);return t.every(r=>r==="rows"||r==="columns")&&t.every(r=>typeof e[r]=="boolean")}function os(e){const t=[],r={dataOptions:{}};if(!$(e))return t.push({path:"dataOptions",input:e,message:"Expected an object"}),{normalized:r,errors:t};const n=e.dataOptions;if(n===void 0){const s=Object.keys(e),i=x("dataOptions",s,u=>u),o=i&&i.distance<=w?` Did you mean 'dataOptions'? (You may have typed '${i.best}')`:"",a=i&&i.distance<=w?{[i.best]:e[i.best]}:e;t.push({path:"dataOptions",input:a,message:`dataOptions is required.${o}`})}else if($(n)){const s=n;r.dataOptions=s;for(const o of Object.keys(s))if(!rt.includes(o)){const a=x(o,[...rt],c=>c),u=a&&a.distance<=w?` Did you mean '${a.best}'?`:"";t.push({path:D(o),input:s[o],message:`Unknown dataOptions key '${o}'. Valid keys: rows, columns, values, grandTotals.${u}`})}for(const o of["rows","columns","values"]){const a=s[o];a!=null&&!Array.isArray(a)&&t.push({path:D(o),input:a,message:`dataOptions.${o} must be an array`})}const i=s.grandTotals;i!=null&&!is(i)&&t.push({path:D("grandTotals"),input:i,message:"grandTotals must be an object with optional rows?: boolean, columns?: boolean"})}return e.styleOptions!==void 0&&(r.styleOptions=e.styleOptions),e.filters!==void 0&&Array.isArray(e.filters)&&(r.filters=e.filters),e.highlights!==void 0&&Array.isArray(e.highlights)&&(r.highlights=e.highlights),{normalized:r,errors:t}}function as(e,t,r){if(!e||typeof e!="object")return r.push({path:D(-1),input:e,message:"dataOptions is required"}),null;const n={},s=r.length;for(const o of["rows","columns"]){const a=ae(o,e[o],"dimension",t,r);a&&(n[o]=a)}const i=ae("values",e.values,"measure",t,r);return i&&(n.values=i),e.grandTotals!==void 0&&(n.grandTotals=e.grandTotals),r.length>s?null:n}const Yt=e=>{const{data:t,context:r}=e,{dataSource:n,tables:s}=r,{normalized:i,errors:o}=os(t);if(o.length>0)return{success:!1,errors:o};const a=ee(s),u=[],c=as(i.dataOptions,{dataSource:n,schemaIndex:a},u);let y=null;i.filters&&i.filters.length>0&&(y=A(()=>te({data:i.filters||[],context:{dataSource:n,schemaIndex:a}}),u));let f=null;return i.highlights&&i.highlights.length>0&&(f=A(()=>de({data:i.highlights||[],context:{dataSource:n,schemaIndex:a}}),u)),u.length>0||c===null?{success:!1,errors:u}:{success:!0,data:d(d(d({dataSet:l.convertDataSource(n),dataOptions:c},i.styleOptions&&{styleOptions:i.styleOptions}),y&&{filters:y}),f&&{highlights:f})}},Kt=e=>{const t=[];if(!e.dataOptions)return{success:!1,errors:[{path:"dataOptions",input:e,message:"dataOptions is required"}]};const r=e.dataOptions,n={};for(const u of["rows","columns"]){const c=r[u];if(c&&c.length>0){const y=tt(u,c,"dimension");y.success?n[u]=y.data:t.push(...y.errors)}}const s=r.values;if(s&&s.length>0){const u=tt("values",s,"measure");u.success?n.values=u.data:t.push(...u.errors)}r.grandTotals!==void 0&&(n.grandTotals=r.grandTotals);let i;if(e.filters){const u=A(()=>re(e.filters),t);i=u!=null?u:void 0}let o;if(e.highlights&&e.highlights.length>0){const u=A(()=>fe(e.highlights),t);o=u!=null?u:void 0}if(t.length>0)return{success:!1,errors:t};const a=d(d(d({dataOptions:n},e.styleOptions&&{styleOptions:e.styleOptions}),i&&i.length>0&&{filters:i}),o&&o.length>0&&{highlights:o});return{success:!0,data:k(a)}},us=(e,t,r)=>{const n=ee(r.tables),s={dataSource:r.dataSource,schemaIndex:n},i=[],o=e&&e.length>0?A(()=>te({data:e,context:s}),i):void 0,a=t&&t.length>0?A(()=>de({data:t,context:s}),i):void 0;return i.length>0?{success:!1,errors:i}:{success:!0,data:d(d({},o!=null&&{filters:o}),a!=null&&{highlights:a})}},cs=["widgetType","id","title","description","dataSource","config","highlightSelectionDisabled"],nt=(e,t,r,n)=>{const{id:s,title:i,description:o,dataSource:a,config:u,highlightSelectionDisabled:c}=e,y=l.omit(e,cs),f=r({data:y,context:t});return f.success?{success:!0,data:n(f.data,{id:s,title:i,description:o,dataSource:a,config:u,highlightSelectionDisabled:c})}:f},ls=(e,t)=>{const s=e,{dataSet:r}=s,n=pe(s,["dataSet"]);return d(d(d(d(d(T(d({},n),{widgetType:"chart",id:t.id}),t.dataSource!==void 0?{dataSource:t.dataSource}:r!==void 0&&l.isDataSource(r)&&{dataSource:r}),t.config!==void 0&&{config:t.config}),t.highlightSelectionDisabled!==void 0&&{highlightSelectionDisabled:t.highlightSelectionDisabled}),t.title!==void 0&&{title:t.title}),t.description!==void 0&&{description:t.description})},ds=(e,t)=>{const s=e,{dataSet:r}=s,n=pe(s,["dataSet"]);return d(d(d(d(T(d({},n),{widgetType:"pivot",id:t.id}),t.dataSource!==void 0?{dataSource:t.dataSource}:r!==void 0&&l.isDataSource(r)&&{dataSource:r}),t.config!==void 0&&{config:t.config}),t.title!==void 0&&{title:t.title}),t.description!==void 0&&{description:t.description})},Ce=["chart","pivot","text","custom"],fs=e=>typeof e=="string"&&Ce.includes(e);function ps(e){if(!$(e))return{path:"widgetType",input:e,message:"Expected an object"};const t=e.widgetType;if(t===void 0){const r=Object.keys(e),n=x("widgetType",r,o=>o),s=n&&n.distance<=w?` Did you mean 'widgetType'? (You may have typed '${n.best}')`:"";return{path:"widgetType",input:n&&n.distance<=w?{[n.best]:e[n.best]}:e,message:`widgetType is required.${s}`}}if(!fs(t)){const r=x(String(t),Ce,i=>i),n=r&&r.distance<=w?` Did you mean '${r.best}'?`:"",s=Ce.join(", ");return{path:"widgetType",input:t,message:`Invalid widgetType '${String(t)}'. Valid types: ${s}${n}`}}return null}const ms=e=>({path:"id",input:e,message:"Widget id is required"}),gs=e=>!!e.id,Gt=e=>{const{data:t,context:r}=e,n=ps(t);if(n)return{success:!1,errors:[n]};if(!gs(t))return{success:!1,errors:[ms(t)]};switch(t.widgetType){case"chart":return nt(t,r,jt,ls);case"pivot":return nt(t,r,Yt,ds);case"text":return{success:!0,data:d({widgetType:"text",id:t.id,styleOptions:t.styleOptions},t.config!==void 0&&{config:t.config})};case"custom":{const{id:s,customWidgetType:i,title:o,description:a,dataSource:u,config:c,filters:y,highlights:f,dataOptions:g,styleOptions:b,customOptions:E}=t,m=us(y,f,r);return m.success?{success:!0,data:d(d(d(d(d(d({widgetType:"custom",id:s,customWidgetType:i,dataSource:u!==void 0?u:l.convertDataSource(r.dataSource),dataOptions:g!=null?g:{}},o!==void 0&&{title:o}),a!==void 0&&{description:a}),c!==void 0&&{config:c}),b!==void 0&&{styleOptions:b}),E!==void 0&&{customOptions:E}),m.data)}:m}default:return{success:!1,errors:[{path:"widgetType",input:t,message:`Unknown widgetType: ${String(t.widgetType)}`}]}}},Qt=e=>{const{widgetType:t}=e;switch(t){case"chart":{const r=Jt(e);if(!r.success)return r;const n=d(d(d(d(d(T(d({},r.data),{widgetType:"chart",id:e.id}),e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:ie(e.dataSource)}),e.config!==void 0&&{config:e.config}),e.highlightSelectionDisabled!==void 0&&{highlightSelectionDisabled:e.highlightSelectionDisabled});return{success:!0,data:k(n)}}case"pivot":{const r=Kt(e);if(!r.success)return r;const n=d(d(d(d(T(d({},r.data),{widgetType:"pivot",id:e.id}),e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:ie(e.dataSource)}),e.config!==void 0&&{config:e.config});return{success:!0,data:k(n)}}case"text":return{success:!0,data:d({widgetType:"text",id:e.id,styleOptions:e.styleOptions},e.config!==void 0&&{config:e.config})};case"custom":{const r=[],n=e.filters!==void 0?A(()=>re(e.filters),r):void 0,s=e.highlights!==void 0?A(()=>fe(e.highlights),r):void 0;return r.length>0?{success:!1,errors:r}:{success:!0,data:d(d(d(d(d(d(d(d(d({widgetType:"custom",customWidgetType:e.customWidgetType,id:e.id},e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:ie(e.dataSource)}),e.config!==void 0&&{config:e.config}),e.dataOptions!==void 0&&{dataOptions:e.dataOptions}),e.styleOptions!==void 0&&{styleOptions:e.styleOptions}),e.customOptions!==void 0&&{customOptions:e.customOptions}),n&&n.length>0&&{filters:n}),s&&s.length>0&&{highlights:s})}}default:return{success:!1,errors:[{path:"widgetType",input:e,message:`Unknown widgetType: ${String(t)}`}]}}},ys=e=>{const{data:t,context:r}=e,n=[],s=[];Array.isArray(t.widgets)?t.widgets.forEach((a,u)=>{const c=Gt({data:a,context:r});if(!c.success){n.push(...Wt(c.errors,Ut(u)));return}s.push(c.data)}):n.push({path:"widgets",input:t.widgets,message:"Invalid dashboard JSON. Expected widgets to be an array."});let i=null;if(t.filters&&t.filters.length>0){const a=ee(r.tables);i=A(()=>te({data:t.filters,context:{dataSource:r.dataSource,schemaIndex:a}}),n)}return n.length>0?{success:!1,errors:n}:{success:!0,data:d(d(d(d(d(d(d(d({widgets:s},t.id!==void 0&&{id:t.id}),t.title!==void 0&&{title:t.title}),i!==null&&{filters:i}),t.layoutOptions!==void 0&&{layoutOptions:t.layoutOptions}),t.config!==void 0&&{config:t.config}),t.defaultDataSource!==void 0&&{defaultDataSource:t.defaultDataSource}),t.styleOptions!==void 0&&{styleOptions:t.styleOptions}),t.widgetsOptions!==void 0&&{widgetsOptions:t.widgetsOptions})}},hs=e=>{const t=[],r=[];e.widgets.forEach((o,a)=>{const u=Qt(o);if(!u.success){t.push(...Wt(u.errors,Ut(a)));return}r.push(u.data)});let n;if(e.filters){const o=A(()=>re(e.filters),t);n=o!=null?o:void 0}if(t.length>0)return{success:!1,errors:t};const s=e.widgetsOptions!==void 0?_n(e.widgetsOptions):void 0,i=d(d(d(d(d(d(d(d({widgets:r},e.id!==void 0&&{id:e.id}),e.title!==void 0&&{title:e.title}),n&&n.length>0&&{filters:n}),e.layoutOptions!==void 0&&{layoutOptions:e.layoutOptions}),e.config!==void 0&&{config:e.config}),e.defaultDataSource!==void 0&&{defaultDataSource:ie(e.defaultDataSource)}),e.styleOptions!==void 0&&{styleOptions:e.styleOptions}),s!==void 0&&{widgetsOptions:s});return{success:!0,data:k(i)}};function bs(e){const{filters:t,relations:r}=l.getFilterListAndRelationsJaql(e.filters||[]);return{dataSource:e.dataSource,dimensions:e.dimensions,measures:e.measures,filters:t,filterRelations:r,highlights:e.highlights}}function Es(e,t,r=!1){const n=bs(e),s=l.prepareQueryParams(n,t);return l.getJaqlQueryPayload(s,r)}exports.EMPTY_EXPANDED_QUERY_MODEL=B.EMPTY_EXPANDED_QUERY_MODEL;exports.EMPTY_SIMPLE_QUERY_MODEL=B.EMPTY_SIMPLE_QUERY_MODEL;exports.isByIdDashboardCodeParams=B.isByIdDashboardCodeParams;exports.isByIdWidgetCodeParams=B.isByIdWidgetCodeParams;exports.isClientSideDashboardCodeParams=B.isClientSideDashboardCodeParams;exports.isClientSideWidgetCodeParams=B.isClientSideWidgetCodeParams;exports.CustomSuperJSON=Br;exports.translateChartFromJSON=jt;exports.translateChartToJSON=Jt;exports.translateDashboardFromJSON=ys;exports.translateDashboardToJSON=hs;exports.translatePivotTableFromJSON=Yt;exports.translatePivotTableToJSON=Kt;exports.translateQueryFromJSON=zn;exports.translateQueryToJSON=Un;exports.translateQueryToJaql=Es;exports.translateWidgetFromJSON=Gt;exports.translateWidgetToJSON=Qt;
1
+ "use strict";var nr=Object.defineProperty,sr=Object.defineProperties;var ir=Object.getOwnPropertyDescriptors;var se=Object.getOwnPropertySymbols;var ze=Object.prototype.hasOwnProperty,We=Object.prototype.propertyIsEnumerable;var Pe=(e,t,r)=>t in e?nr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,f=(e,t)=>{for(var r in t||(t={}))ze.call(t,r)&&Pe(e,r,t[r]);if(se)for(var r of se(t))We.call(t,r)&&Pe(e,r,t[r]);return e},T=(e,t)=>sr(e,ir(t));var ye=(e,t)=>{var r={};for(var n in e)ze.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&se)for(var n of se(e))t.indexOf(n)<0&&We.call(e,n)&&(r[n]=e[n]);return r};Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("../types-DSNnndG6.cjs"),l=require("../apply-styled-options-to-query-Dl8vVNxo.cjs");function or(e,t){const r=e.length,n=t.length,s=Array.from({length:r+1},(i,o)=>Array.from({length:n+1},(a,u)=>o===0?u:u===0?o:0));for(let i=1;i<=r;i++)for(let o=1;o<=n;o++)s[i][o]=Math.min(s[i-1][o]+1,s[i][o-1]+1,s[i-1][o-1]+(e[i-1]===t[o-1]?0:1));return s[r][n]}function De(e,t){const r=[];let n="",s=0,i=!1,o=null;for(let a=0;a<e.length;a++){const u=e[a],c=e[a+1];if(i){if(u!==o){n+=u;continue}if(c===o){n+=u+c,a++;continue}i=!1,o=null,n+=u;continue}else{if(u==="'"||u==='"'){i=!0,o=u,n+=u;continue}if("([{".includes(u)&&s++,")]}".includes(u)&&s--,u===t&&s===0){r.push(n.trim()),n="";continue}}n+=u}return n.trim()&&r.push(n.trim()),r}function ar(e,t){let r=0,n=!1,s=null;for(let i=0;i<e.length;i++){const o=e[i],a=e[i+1];if(n){if(o!==s)continue;if(a===s){i++;continue}n=!1,s=null}else{if(o==="'"||o==='"'){n=!0,s=o;continue}if("([{".includes(o)&&r++,")]}".includes(o)&&r--,o===t&&r===0)return i}}return-1}function ur(e,t){if(e[t]!=="(")return-1;let r=1,n=t+1,s=!1,i=null;for(;n<e.length;){const o=e[n],a=e[n+1];if(s){if(o!==i){n++;continue}if(a===i){n+=2;continue}s=!1,i=null,n++}else{if(o==="'"||o==='"'){s=!0,i=o,n++;continue}if("([{".includes(o)&&r++,")]}".includes(o)&&--r===0)return n;n++}}return-1}function cr(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function j(e){if(!e||typeof e!="string")throw new Error(`Invalid composeCode: expected non-empty string, got ${typeof e}`);const t=e.trim();if(!t)throw new Error("Invalid composeCode: empty string");const r=t.match(/^([a-zA-Z_$][a-zA-Z0-9_.$]*)\s*\((.*)\)$/);if(!r)throw new Error(`Invalid composeCode format: expected function call, got '${t}'`);const n=r[1],s=r[2],i=ct(s);return{function:n,args:i}}function ct(e){return e.trim()?De(e,",").map(lt):[]}function lt(e){if(!e)throw new Error("Cannot parse empty argument value");if(e==="null")return null;if(e==="undefined")return;if(e==="true")return!0;if(e==="false")return!1;if(e.match(/^-?\d+(\.\d+)?$/))return parseFloat(e);if(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')){const r=e[0];return e.slice(1,-1).replace(new RegExp(`${r}${r}`,"g"),r)}if(e.startsWith("[")&&e.endsWith("]")){const r=e.slice(1,-1).trim();if(!r)return[];const n=ct(r);return n.every(s=>typeof s=="string"),n}if(e.startsWith("{")&&e.endsWith("}")){const r=e.slice(1,-1).trim();return r?fr(r):{}}return e.includes("(")&&e.includes(")")?j(e):(e.startsWith("DM."),e)}function lr(e){const t=ar(e,":");if(t===-1)throw new Error(`Invalid object property: expected 'key: value', got '${e}'`);const r=cr(e.slice(0,t).trim()),n=lt(e.slice(t+1).trim());return[r,n]}function fr(e){if(!e.trim())return{};const t=De(e,",").map(lr).filter(([,r])=>r!==null);return Object.fromEntries(t)}class dr{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(t,r){this.keyToValue.set(t,r),this.valueToKey.set(r,t)}getByKey(t){return this.keyToValue.get(t)}getByValue(t){return this.valueToKey.get(t)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}}class ft{constructor(t){this.generateIdentifier=t,this.kv=new dr}register(t,r){this.kv.getByValue(t)||(r||(r=this.generateIdentifier(t)),this.kv.set(r,t))}clear(){this.kv.clear()}getIdentifier(t){return this.kv.getByValue(t)}getValue(t){return this.kv.getByKey(t)}}class mr extends ft{constructor(){super(t=>t.name),this.classToAllowedProps=new Map}register(t,r){typeof r=="object"?(r.allowProps&&this.classToAllowedProps.set(t,r.allowProps),super.register(t,r.identifier)):super.register(t,r)}getAllowedProps(t){return this.classToAllowedProps.get(t)}}function pr(e){if("values"in Object)return Object.values(e);const t=[];for(const r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t}function gr(e,t){const r=pr(e);if("find"in r)return r.find(t);const n=r;for(let s=0;s<n.length;s++){const i=n[s];if(t(i))return i}}function J(e,t){Object.entries(e).forEach(([r,n])=>t(n,r))}function ie(e,t){return e.indexOf(t)!==-1}function Ve(e,t){for(let r=0;r<e.length;r++){const n=e[r];if(t(n))return n}}class yr{constructor(){this.transfomers={}}register(t){this.transfomers[t.name]=t}findApplicable(t){return gr(this.transfomers,r=>r.isApplicable(t))}findByName(t){return this.transfomers[t]}}const hr=e=>Object.prototype.toString.call(e).slice(8,-1),dt=e=>typeof e=="undefined",br=e=>e===null,H=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,Ae=e=>H(e)&&Object.keys(e).length===0,L=e=>Array.isArray(e),Fr=e=>typeof e=="string",Er=e=>typeof e=="number"&&!isNaN(e),Tr=e=>typeof e=="boolean",Ar=e=>e instanceof RegExp,X=e=>e instanceof Map,Z=e=>e instanceof Set,mt=e=>hr(e)==="Symbol",Sr=e=>e instanceof Date&&!isNaN(e.valueOf()),wr=e=>e instanceof Error,je=e=>typeof e=="number"&&isNaN(e),Cr=e=>Tr(e)||br(e)||dt(e)||Er(e)||Fr(e)||mt(e),Or=e=>typeof e=="bigint",qr=e=>e===1/0||e===-1/0,$r=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),Dr=e=>e instanceof URL,pt=e=>e.replace(/\./g,"\\."),he=e=>e.map(String).map(pt).join("."),G=e=>{const t=[];let r="";for(let s=0;s<e.length;s++){let i=e.charAt(s);if(i==="\\"&&e.charAt(s+1)==="."){r+=".",s++;continue}if(i==="."){t.push(r),r="";continue}r+=i}const n=r;return t.push(n),t};function I(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const gt=[I(dt,"undefined",()=>null,()=>{}),I(Or,"bigint",e=>e.toString(),e=>typeof BigInt!="undefined"?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),I(Sr,"Date",e=>e.toISOString(),e=>new Date(e)),I(wr,"Error",(e,t)=>{const r={name:e.name,message:e.message};return t.allowedErrorProps.forEach(n=>{r[n]=e[n]}),r},(e,t)=>{const r=new Error(e.message);return r.name=e.name,r.stack=e.stack,t.allowedErrorProps.forEach(n=>{r[n]=e[n]}),r}),I(Ar,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),r=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,r)}),I(Z,"set",e=>[...e.values()],e=>new Set(e)),I(X,"map",e=>[...e.entries()],e=>new Map(e)),I(e=>je(e)||qr(e),"number",e=>je(e)?"NaN":e>0?"Infinity":"-Infinity",Number),I(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),I(Dr,"URL",e=>e.toString(),e=>new URL(e))];function le(e,t,r,n){return{isApplicable:e,annotation:t,transform:r,untransform:n}}const yt=le((e,t)=>mt(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,r)=>{const n=r.symbolRegistry.getValue(t[1]);if(!n)throw new Error("Trying to deserialize unknown symbol");return n}),Nr=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),ht=le($r,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const r=Nr[t[1]];if(!r)throw new Error("Trying to deserialize unknown typed array");return new r(e)});function bt(e,t){return e!=null&&e.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}const Ft=le(bt,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const r=t.classRegistry.getAllowedProps(e.constructor);if(!r)return f({},e);const n={};return r.forEach(s=>{n[s]=e[s]}),n},(e,t,r)=>{const n=r.classRegistry.getValue(t[1]);if(!n)throw new Error(`Trying to deserialize unknown class '${t[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);return Object.assign(Object.create(n.prototype),e)}),Et=le((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,r)=>{const n=r.customTransformerRegistry.findByName(t[1]);if(!n)throw new Error("Trying to deserialize unknown custom value");return n.deserialize(e)}),xr=[Ft,yt,Et,ht],Je=(e,t)=>{const r=Ve(xr,s=>s.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation(e,t)};const n=Ve(gt,s=>s.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation}},Tt={};gt.forEach(e=>{Tt[e.annotation]=e});const vr=(e,t,r)=>{if(L(t))switch(t[0]){case"symbol":return yt.untransform(e,t,r);case"class":return Ft.untransform(e,t,r);case"custom":return Et.untransform(e,t,r);case"typed-array":return ht.untransform(e,t,r);default:throw new Error("Unknown transformation: "+t)}else{const n=Tt[t];if(!n)throw new Error("Unknown transformation: "+t);return n.untransform(e,r)}},V=(e,t)=>{if(t>e.size)throw new Error("index out of bounds");const r=e.keys();for(;t>0;)r.next(),t--;return r.next().value};function At(e){if(ie(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(ie(e,"prototype"))throw new Error("prototype is not allowed as a property");if(ie(e,"constructor"))throw new Error("constructor is not allowed as a property")}const Mr=(e,t)=>{At(t);for(let r=0;r<t.length;r++){const n=t[r];if(Z(e))e=V(e,+n);else if(X(e)){const s=+n,i=+t[++r]==0?"key":"value",o=V(e,s);switch(i){case"key":e=o;break;case"value":e=e.get(o);break}}else e=e[n]}return e},Se=(e,t,r)=>{if(At(t),t.length===0)return r(e);let n=e;for(let i=0;i<t.length-1;i++){const o=t[i];if(L(n)){const a=+o;n=n[a]}else if(H(n))n=n[o];else if(Z(n)){const a=+o;n=V(n,a)}else if(X(n)){if(i===t.length-2)break;const u=+o,c=+t[++i]==0?"key":"value",y=V(n,u);switch(c){case"key":n=y;break;case"value":n=n.get(y);break}}}const s=t[t.length-1];if(L(n)?n[+s]=r(n[+s]):H(n)&&(n[s]=r(n[s])),Z(n)){const i=V(n,+s),o=r(i);i!==o&&(n.delete(i),n.add(o))}if(X(n)){const i=+t[t.length-2],o=V(n,i);switch(+s==0?"key":"value"){case"key":{const u=r(o);n.set(u,n.get(o)),u!==o&&n.delete(o);break}case"value":{n.set(o,r(n.get(o)));break}}}return e};function we(e,t,r=[]){if(!e)return;if(!L(e)){J(e,(i,o)=>we(i,t,[...r,...G(o)]));return}const[n,s]=e;s&&J(s,(i,o)=>{we(i,t,[...r,...G(o)])}),t(n,r)}function Rr(e,t,r){return we(t,(n,s)=>{e=Se(e,s,i=>vr(i,n,r))}),e}function Ir(e,t){function r(n,s){const i=Mr(e,G(s));n.map(G).forEach(o=>{e=Se(e,o,()=>i)})}if(L(t)){const[n,s]=t;n.forEach(i=>{e=Se(e,G(i),()=>e)}),s&&J(s,r)}else J(t,r);return e}const Lr=(e,t)=>H(e)||L(e)||X(e)||Z(e)||bt(e,t);function _r(e,t,r){const n=r.get(e);n?n.push(t):r.set(e,[t])}function kr(e,t){const r={};let n;return e.forEach(s=>{if(s.length<=1)return;t||(s=s.map(a=>a.map(String)).sort((a,u)=>a.length-u.length));const[i,...o]=s;i.length===0?n=o.map(he):r[he(i)]=o.map(he)}),n?Ae(r)?[n]:[n,r]:Ae(r)?void 0:r}const St=(e,t,r,n,s=[],i=[],o=new Map)=>{var b;const a=Cr(e);if(!a){_r(e,s,t);const F=o.get(e);if(F)return n?{transformedValue:null}:F}if(!Lr(e,r)){const F=Je(e,r),p=F?{transformedValue:F.value,annotations:[F.type]}:{transformedValue:e};return a||o.set(e,p),p}if(ie(i,e))return{transformedValue:null};const u=Je(e,r),c=(b=u==null?void 0:u.value)!=null?b:e,y=L(c)?[]:{},d={};J(c,(F,p)=>{if(p==="__proto__"||p==="constructor"||p==="prototype")throw new Error(`Detected property ${p}. This is a prototype pollution risk, please remove it from your object.`);const E=St(F,t,r,n,[...s,p],[...i,e],o);y[p]=E.transformedValue,L(E.annotations)?d[p]=E.annotations:H(E.annotations)&&J(E.annotations,(q,x)=>{d[pt(p)+"."+x]=q})});const g=Ae(d)?{transformedValue:y,annotations:u?[u.type]:void 0}:{transformedValue:y,annotations:u?[u.type,d]:d};return a||o.set(e,g),g};function wt(e){return Object.prototype.toString.call(e).slice(8,-1)}function Ye(e){return wt(e)==="Array"}function Br(e){if(wt(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function Ur(e,t,r,n,s){const i={}.propertyIsEnumerable.call(n,t)?"enumerable":"nonenumerable";i==="enumerable"&&(e[t]=r),s&&i==="nonenumerable"&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0})}function Ce(e,t={}){if(Ye(e))return e.map(s=>Ce(s,t));if(!Br(e))return e;const r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertySymbols(e);return[...r,...n].reduce((s,i)=>{if(Ye(t.props)&&!t.props.includes(i))return s;const o=e[i],a=Ce(o,t);return Ur(s,i,a,e,t.nonenumerable),s},{})}class h{constructor({dedupe:t=!1}={}){this.classRegistry=new mr,this.symbolRegistry=new ft(r=>{var n;return(n=r.description)!=null?n:""}),this.customTransformerRegistry=new yr,this.allowedErrorProps=[],this.dedupe=t}serialize(t){const r=new Map,n=St(t,r,this,this.dedupe),s={json:n.transformedValue};n.annotations&&(s.meta=T(f({},s.meta),{values:n.annotations}));const i=kr(r,this.dedupe);return i&&(s.meta=T(f({},s.meta),{referentialEqualities:i})),s}deserialize(t){const{json:r,meta:n}=t;let s=Ce(r);return n!=null&&n.values&&(s=Rr(s,n.values,this)),n!=null&&n.referentialEqualities&&(s=Ir(s,n.referentialEqualities)),s}stringify(t){return JSON.stringify(this.serialize(t))}parse(t){return this.deserialize(JSON.parse(t))}registerClass(t,r){this.classRegistry.register(t,r)}registerSymbol(t,r){this.symbolRegistry.register(t,r)}registerCustom(t,r){this.customTransformerRegistry.register(f({name:r},t))}allowErrorProps(...t){this.allowedErrorProps.push(...t)}}h.defaultInstance=new h;h.serialize=h.defaultInstance.serialize.bind(h.defaultInstance);h.deserialize=h.defaultInstance.deserialize.bind(h.defaultInstance);h.stringify=h.defaultInstance.stringify.bind(h.defaultInstance);h.parse=h.defaultInstance.parse.bind(h.defaultInstance);h.registerClass=h.defaultInstance.registerClass.bind(h.defaultInstance);h.registerSymbol=h.defaultInstance.registerSymbol.bind(h.defaultInstance);h.registerCustom=h.defaultInstance.registerCustom.bind(h.defaultInstance);h.allowErrorProps=h.defaultInstance.allowErrorProps.bind(h.defaultInstance);const P=e=>e===void 0?l.Sort.None:e,z=e=>{var t,r;return(r=(t=e.title)!=null?t:e.name)!=null?r:""},Pr=e=>new k.JaqlElement(e.metadataItem,e.type),Ne=e=>new l.DimensionalAttribute(e.name,e.expression,e.type,e.description,P(e.sort),e.dataSource,e.composeCode,e.panel,e.indexed,e.merged,z(e)),xe=e=>new l.DimensionalLevelAttribute(e.name,e.expression,e.granularity,e.format,e.description,P(e.sort),e.dataSource,e.composeCode,e.panel,e.indexed,e.merged,z(e)),v=e=>{switch(e.__serializable){case"DimensionalAttribute":return Ne(e);case"DimensionalLevelAttribute":return xe(e);default:return e}},Ct=e=>new l.DimensionalDimension(e.name,e.expression,e.attributes.map(v),e.dimensions.map(zr),e.type,e.description,P(e.sort),e.dataSource,e.composeCode,e.defaultAttribute?v(e.defaultAttribute):void 0,z(e)),Ot=e=>new l.DimensionalDateDimension(e.name,e.expression,e.description,P(e.sort),e.dataSource,e.composeCode,e.indexed,e.merged,z(e)),zr=e=>{switch(e.__serializable){case"DimensionalDimension":return Ct(e);case"DimensionalDateDimension":return Ot(e);default:return e}},ve=e=>new l.DimensionalBaseMeasure(e.name,v(e.attribute),e.aggregation,e.format,e.description,P(e.sort),e.dataSource,e.composeCode,z(e)),Me=e=>{const t=Object.fromEntries(Object.entries(e.context).map(([r,n])=>{if(n&&typeof n=="object"&&"__serializable"in n)switch(n.__serializable){case"DimensionalAttribute":return[r,Ne(n)];case"DimensionalLevelAttribute":return[r,xe(n)];case"DimensionalBaseMeasure":return[r,ve(n)];case"DimensionalCalculatedMeasure":return[r,Me(n)];case"DimensionalMeasureTemplate":return[r,Re(n)];case"MembersFilter":case"LogicalAttributeFilter":case"CascadingFilter":case"ExcludeFilter":case"MeasureFilter":case"RankingFilter":case"MeasureRankingFilter":case"NumericFilter":case"TextFilter":case"DateRangeFilter":case"RelativeDateFilter":case"CustomFilter":return[r,C(n)];default:return[r,n]}return[r,n]}));return new l.DimensionalCalculatedMeasure(e.name,e.expression,t,e.format,e.description,P(e.sort),e.dataSource,e.composeCode,z(e))},Re=e=>new l.DimensionalMeasureTemplate(e.name,v(e.attribute),e.format,e.description,P(e.sort),e.dataSource,e.composeCode,z(e)),be=e=>{switch(e.__serializable){case"DimensionalBaseMeasure":return ve(e);case"DimensionalCalculatedMeasure":return Me(e);case"DimensionalMeasureTemplate":return Re(e);default:return e}},C=e=>{switch(e.__serializable){case"MembersFilter":return new l.MembersFilter(v(e.attribute),e.members,e.config.backgroundFilter?T(f({},e.config),{backgroundFilter:C(e.config.backgroundFilter)}):e.config,e.composeCode);case"LogicalAttributeFilter":return new l.LogicalAttributeFilter(e.filters.map(r=>C(r)),e.operator,e.config,e.composeCode);case"CascadingFilter":return new l.CascadingFilter(e._filters.map(r=>C(r)),e.config,e.composeCode);case"ExcludeFilter":return new l.ExcludeFilter(C(e.filter),e.input?C(e.input):void 0,e.config,e.composeCode);case"MeasureFilter":return new l.MeasureFilter(v(e.attribute),be(e.measure),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"RankingFilter":return new l.RankingFilter(v(e.attribute),be(e.measure),e.operator,e.count,e.config,e.composeCode);case"MeasureRankingFilter":return new l.MeasureRankingFilter(be(e.measure),e.operator,e.count,e.config,e.composeCode);case"NumericFilter":return new l.NumericFilter(v(e.attribute),e.operatorA,e.valueA,e.operatorB,e.valueB,e.config,e.composeCode);case"TextFilter":return new l.TextFilter(v(e.attribute),e.operatorA,e.valueA,e.config,e.composeCode);case"DateRangeFilter":{const{valueA:r,valueB:n}=e;return new l.DateRangeFilter(v(e.attribute),r,n,e.config,e.composeCode)}case"RelativeDateFilter":return new l.RelativeDateFilter(v(e.attribute),e.offset,e.count,e.operator,e.anchor,e.config,e.composeCode);case"CustomFilter":return new l.CustomFilter(v(e.attribute),e.jaqlExpression,e.config,e.composeCode);default:return e}};h.registerCustom({isApplicable:k.isJaqlElement,serialize:e=>e.serialize(),deserialize:e=>Pr(e)},"JaqlElement");h.registerCustom({isApplicable:l.isDimensionalAttribute,serialize:e=>e.serialize(),deserialize:e=>Ne(e)},"DimensionalAttribute");h.registerCustom({isApplicable:l.isDimensionalLevelAttribute,serialize:e=>e.serialize(),deserialize:e=>xe(e)},"DimensionalLevelAttribute");h.registerCustom({isApplicable:l.isDimensionalDimension,serialize:e=>e.serialize(),deserialize:e=>Ct(e)},"DimensionalDimension");h.registerCustom({isApplicable:l.isDimensionalDateDimension,serialize:e=>e.serialize(),deserialize:e=>Ot(e)},"DimensionalDateDimension");h.registerCustom({isApplicable:l.isDimensionalBaseMeasure,serialize:e=>e.serialize(),deserialize:e=>ve(e)},"DimensionalBaseMeasure");h.registerCustom({isApplicable:l.isDimensionalCalculatedMeasure,serialize:e=>e.serialize(),deserialize:e=>Me(e)},"DimensionalCalculatedMeasure");h.registerCustom({isApplicable:l.isDimensionalMeasureTemplate,serialize:e=>e.serialize(),deserialize:e=>Re(e)},"DimensionalMeasureTemplate");h.registerCustom({isApplicable:l.isMembersFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"MembersFilter");h.registerCustom({isApplicable:l.isLogicalAttributeFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"LogicalAttributeFilter");h.registerCustom({isApplicable:l.isCascadingFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"CascadingFilter");h.registerCustom({isApplicable:l.isExcludeFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"ExcludeFilter");h.registerCustom({isApplicable:l.isMeasureFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"MeasureFilter");h.registerCustom({isApplicable:l.isRankingFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"RankingFilter");h.registerCustom({isApplicable:l.isMeasureRankingFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"MeasureRankingFilter");h.registerCustom({isApplicable:l.isNumericFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"NumericFilter");h.registerCustom({isApplicable:l.isTextFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"TextFilter");h.registerCustom({isApplicable:l.isDateRangeFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"DateRangeFilter");h.registerCustom({isApplicable:l.isRelativeDateFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"RelativeDateFilter");h.registerCustom({isApplicable:l.isCustomFilter,serialize:e=>e.serialize(),deserialize:e=>C(e)},"CustomFilter");const Wr=h,S="DM.";function $(e){return typeof e=="object"&&e!==null}function w(e){return typeof e=="object"&&e!==null&&"function"in e&&"args"in e}function qt(e){return Array.isArray(e)&&e.every(w)}function fe(e){return"attribute"in e&&"config"in e}function K(e){return"left"in e&&"right"in e&&"operator"in e}function Ie(e){return!fe(e)&&!K(e)}function $t(e){return $(e)&&"column"in e&&typeof e.column=="string"&&!("function"in e&&"args"in e)}function Dt(e){return!$(e)||!("column"in e)?!1:w(e.column)}const O=3;function N(e,t,r){if(t.length===0)return;let n=Number.MAX_SAFE_INTEGER,s;for(const i of t){const o=r(i),a=or(e,o);a<n&&(n=a,s=i)}return s!==void 0?{best:s,distance:n}:void 0}const Nt="en";function Fe(e,t){return e.localeCompare(t,Nt,{sensitivity:"accent"})===0}function Ke(e,t){return t.length<=e.length&&e.slice(0,t.length).localeCompare(t,Nt,{sensitivity:"accent"})===0}function te(e){const t=[...e].sort((i,o)=>o.name.length-i.name.length),r=new Map,n=new Map,s=new Map;for(const i of e){r.set(i.name,i);const o=[...i.columns].sort((u,c)=>c.name.length-u.name.length);s.set(i.name,o);const a=new Map;for(const u of i.columns)a.set(u.name,u);n.set(i.name,a)}return{sortedTables:t,tableColumnMap:s,tableMap:r,columnMap:n}}function Le(e,t){if(!e.startsWith(S))throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`);const r=e.slice(S.length);if(!r)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`);let n,s;for(const p of t.sortedTables)if(Ke(r,p.name+".")){const E=r.slice(p.name.length+1);if(!E)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`);n=p,s=E;break}if(!n){const p=r.indexOf(".");if(p===-1)throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`);const E=r.slice(0,p),q=N(E,t.sortedTables,W=>W.name),x=q&&q.distance<=O?` Did you mean '${q.best.name}'?`:"";throw new Error(`Table '${E}' not found in the data model.${x}`)}const i=t.tableColumnMap.get(n.name);if(!i)throw new Error(`Table '${n.name}' found but has no columns`);let o,a;const u=l.DateLevels.all;for(const p of i){if(Fe(s,p.name))return{table:n,column:p};if(!Ke(s,p.name+"."))continue;const E=s.slice(p.name.length+1);if(!E)continue;const q=u.includes(E),x=l.isDatetime(p.dataType);if(q){if(x)return{table:n,column:p,level:E};o||(o=p,a=E);continue}x&&!o&&(o=p,a=E)}if(o&&a){if(u.includes(a))throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Column '${n.name}.${o.name}' is not a datetime column`);const p=N(a,u,q=>q),E=p&&p.distance<=O?` Did you mean '${p.best}'?`:"";throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Valid levels are: ${u.join(", ")}.${E}`)}const c=s.indexOf("."),y=c===-1?s:s.slice(0,c),d=N(s,i,p=>p.name),g=d&&d.distance<=O&&!Fe(d.best.name,y),b=g?` Did you mean '${d.best.name}'?`:"",F=!g&&s.endsWith(".")&&d!==void 0&&Fe(d.best.name,y)?` Use '${y}' without a trailing dot.`:"";throw new Error(`Column '${y}' not found in table '${n.name}'.${b}${F}`)}function Vr(e,t){const{table:r,column:n,level:s}=Le(e,t);if(s){if(!l.isDatetime(n.dataType))throw new Error(`Invalid date level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is not a datetime column`);const i=l.DateLevels.all;if(!i.includes(s))throw new Error(`Invalid date level '${s}' in dimensional element '${e}'. Valid levels are: ${i.join(", ")}`);const o=l.DateLevels.dateOnly;if(n.dataType==="date"&&!o.includes(s))throw new Error(`Invalid level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is only a date column, not a datetime column`);const a=l.DateLevels.timeOnly;if(n.dataType==="time"&&!a.includes(s))throw new Error(`Invalid level '${s}' in dimensional element '${e}'. Column '${r.name}.${n.name}' is only a time column, not a date column`)}return{table:r,column:n,level:s}}function ee(e,t,r,n){const{table:s,column:i,level:o}=Vr(e,r);let a=o;if(l.isDatetime(i.dataType)&&a===void 0&&(n!=null&&n.inferredDateLevel)){const u=n.inferredDateLevel,c=l.DateLevels.all;if(!c.includes(u))throw new Error(`Invalid inferred date level '${u}'. Valid levels are: ${c.join(", ")}`);const y=`${e}.${u}`,d=l.DateLevels.dateOnly;if(i.dataType==="date"&&!d.includes(u))throw new Error(`Invalid level '${u}' in dimensional element '${y}'. Column '${s.name}.${i.name}' is only a date column, not a datetime column`);const g=l.DateLevels.timeOnly;if(i.dataType==="time"&&!g.includes(u))throw new Error(`Invalid level '${u}' in dimensional element '${y}'. Column '${s.name}.${i.name}' is only a time column, not a date column`);a=u}return l.createAttributeHelper({expression:i.expression,dataType:i.dataType,granularity:a,format:void 0,sort:void 0,dataSource:t})}function jr(e,t,r){const{column:n,level:s}=Le(e,r);if(s)throw new Error(`Invalid DateDimension name format: '${e}'. Expected format: '${S}TableName.ColumnName'`);if(!l.isDatetime(n.dataType))throw new Error(`Invalid DateDimension name '${e}'. Column '${n.name}' is not a datetime column (got ${n.dataType}).`);return l.createDateDimension({name:n.name,expression:n.expression,dataSource:t})}const Jr=(e,t)=>{if(!e)return;const r=typeof e=="object"?e.direction:e;if(!l.isSortDirection(r))return T(f({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${r}'.`})},Yr=(e,t,r,n)=>{const s=Jr(e.sortType,n);if(s)return{attribute:ee(e.column,t,r),style:{},error:s};const i=ee(e.column,t,r),o=l.omit(e,"column");return{attribute:i,style:o}},Kr=(e,t,r,n)=>typeof e=="string"?{attribute:ee(e,t,r)}:$t(e)?Yr(e,t,r,n):{error:T(f({},n),{message:"Invalid dimension item. Expected a string (composeCode) or object with 'column' and optional 'sortType'."})},xt=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;if(!t)return{success:!0,data:[]};if(!Array.isArray(t))return{success:!1,errors:[{path:"dimensions",input:t,message:"Invalid dimensions JSON. Expected an array."}]};const s=[],i=[];return t.forEach((o,a)=>{const u={path:`dimensions[${a}]`,input:o};try{const c=Kr(o,r,n,u);if(c.error){i.push(c.error);return}c.attribute&&s.push(c.style!==void 0?{attribute:c.attribute,style:c.style}:{attribute:c.attribute})}catch(c){const y=c instanceof Error?c.message:"Unknown error";i.push(T(f({},u),{message:y}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}};function _e(e,t){const r=Reflect.get(e,t);if(typeof r!="function")throw new Error(`Function '${t}' not found or is not a function`);return r}function Gr(e,t){const r=e.replace("measureFactory.",""),s=_e(l.measureFactory,r)(...t);if(!Ie(s))throw new Error(`Function '${e}' did not return a valid Measure`);return s}function Qr(e,t){const r=e.replace("filterFactory.logic.",""),s=_e(l.logic,r)(...t);if(!K(s))throw new Error(`Function '${e}' did not return a valid FilterRelations`);return s}function Hr(e,t){if(e.startsWith("filterFactory.logic."))return Qr(e,t);const r=e.replace("filterFactory.",""),s=_e(l.filterFactory,r)(...t);if(!fe(s)&&!K(s))throw new Error(`Function '${e}' did not return a valid Filter or FilterRelations`);return s}function Xr(e,t){const n=e.split(".")[0];if(n==="measureFactory")return Gr(e,t);if(n==="filterFactory")return Hr(e,t);throw new Error(`Unsupported factory: '${n}'. Supported factories: measureFactory, filterFactory`)}const m=(e,t,r,n)=>f({category:e,minArgs:t,maxArgs:r},n),Zr=new Set(["CORREL","COVARP","COVAR","EXPONDIST","INTERCEPT","LARGEST","NORMDIST","POISSONDIST","SKEWP","SKEW","SLOPE","TDIST","COSH","SINH","TANH","ORDERING","RDOUBLE","RINT"]),ae={SDIFF:m("xdiff",2,2,{requiredDateLevel:l.DateLevels.Seconds,argType:"datetime"}),MNDIFF:m("xdiff",2,2,{requiredDateLevel:l.DateLevels.Minutes,argType:"datetime"}),HDIFF:m("xdiff",2,2,{requiredDateLevel:l.DateLevels.Hours,argType:"datetime"}),DDIFF:m("xdiff",2,2,{requiredDateLevel:l.DateLevels.Days,argType:"datetime"}),MDIFF:m("xdiff",2,2,{requiredDateLevel:l.DateLevels.Months,argType:"datetime"}),QDIFF:m("xdiff",2,2,{requiredDateLevel:l.DateLevels.Quarters,argType:"datetime"}),YDIFF:m("xdiff",2,2,{requiredDateLevel:l.DateLevels.Years,argType:"datetime"}),ANYVALUE:m("aggregative",1,1),SUM:m("aggregative",1,2),AVG:m("aggregative",1,2),MIN:m("aggregative",1,2),MAX:m("aggregative",1,2),COUNT:m("aggregative",1,2),DUPCOUNT:m("aggregative",1,1),COUNTDUPLICATES:m("aggregative",1,1),STDEV:m("aggregative",1,2),STDEVP:m("aggregative",1,2),VAR:m("aggregative",1,2),VARP:m("aggregative",1,2),MEDIAN:m("aggregative",1,2),QUARTILE:m("aggregative",2,3),PERCENTILE:m("aggregative",2,3),LOWERWHISKERMAX_IQR:m("aggregative",1,1),LOWERWHISKERMAX_STDEVP:m("aggregative",1,1),UPPERWHISKERMIN_IQR:m("aggregative",1,1),UPPERWHISKERMIN_STDEVP:m("aggregative",1,1),OUTLIERSCOUNT_IQR:m("aggregative",1,1),OUTLIERSCOUNT_STDEVP:m("aggregative",1,1),MODE:m("aggregative",1,1),NOAGGFUNCTION:m("aggregative",1,1),RANK:m("window",0,Number.POSITIVE_INFINITY),RSUM:m("window",1,2),RAVG:m("window",1,2),YTDSUM:m("window",1,1),QTDSUM:m("window",1,1),MTDSUM:m("window",1,1),WTDSUM:m("window",1,1),YTDAVG:m("window",1,1),QTDAVG:m("window",1,1),MTDAVG:m("window",1,1),WTDAVG:m("window",1,1),CONCAT:m("string",2,Number.POSITIVE_INFINITY),LEFT:m("string",2,2),RIGHT:m("string",2,2),ABS:m("scalar",1,1),ACOS:m("scalar",1,1),ASIN:m("scalar",1,1),ATAN:m("scalar",1,1),CEILING:m("scalar",1,1),CONTRIBUTION:m("scalar",1,1),COS:m("scalar",1,1),COT:m("scalar",1,1),DIFFPASTDAY:m("scalar",1,1),DIFFPASTMONTH:m("scalar",1,1),DIFFPASTPERIOD:m("scalar",1,1),DIFFPASTQUARTER:m("scalar",1,1),DIFFPASTWEEK:m("scalar",1,1),DIFFPASTYEAR:m("scalar",1,1),EXP:m("scalar",1,1),FLOOR:m("scalar",1,1),GROWTH:m("growth",1,1),GROWTHPASTMONTH:m("growth",1,1),GROWTHPASTQUARTER:m("growth",1,1),GROWTHPASTWEEK:m("growth",1,1),GROWTHPASTYEAR:m("growth",1,1),GROWTHRATE:m("growth",1,1),LN:m("scalar",1,1),LOG10:m("scalar",1,1),MINUS:m("scalar",1,1),MOD:m("scalar",2,2),QUOTIENT:m("scalar",2,2),PASTDAY:m("date",1,2),PASTMONTH:m("date",1,2),PASTPERIOD:m("date",1,2),PASTQUARTER:m("date",1,2),PASTWEEK:m("date",1,2),PASTYEAR:m("date",1,2),PERCENTILEDISCFORINTERNALUSEONLY:m("scalar",1,1),PERCENTILECONTFORINTERNALUSEONLY:m("scalar",1,1),POWER:m("scalar",2,2),ROUND:m("scalar",2,2),SIN:m("scalar",1,1),SQRT:m("scalar",1,1),TAN:m("scalar",1,1)},en=Object.keys(ae).filter(e=>ae[e].category==="xdiff");function vt(){return en}function Mt(e){const t=ae[e.toUpperCase()];return t==null?void 0:t.requiredDateLevel}function tn(e,t){return e===t?e===1?"1 parameter":`${e} parameters`:t===Number.POSITIVE_INFINITY?e<=1?"any number of parameters":`at least ${e} parameters`:`${e} or ${t} parameters`}const rn=/\[(\w[\w.-]*)\]/g,Rt=new Set(["AVG","COUNT","DUPCOUNT","MAX","MEDIAN","MIN","MODE","SUM","WTDAVG","WTDSUM","MTDAVG","MTDSUM","QTDAVG","QTDSUM","YTDAVG","YTDSUM"]),nn=new RegExp(`\\b(${Array.from(Rt).join("|")})\\s*\\(`,"i");function It(e){return w(e)?!0:typeof e=="string"&&e.startsWith(S)?!1:$(e)&&"kind"in e?e.kind==="measure":!0}function sn(e){const t=/\b(\w+)\s*\(/g,r=new Set;let n;for(;(n=t.exec(e))!==null;){const s=n[1];Rt.has(s.toUpperCase())||r.add(s)}return Array.from(r)}function on(e){return e.length===1?`[${e[0]}]`:e.map(t=>`[${t}]`).join(", ")}function an(e){return e.length===0?"":e.length===1?`${e[0]} is not an aggregative function. `:`${e.join(", ")} are not aggregative functions. `}const Y=e=>e.startsWith("[")?e:`[${e}]`,Lt=e=>e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e;function _t(e,t){if(t.length===0)return[];const r=t.map(s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),n=new RegExp(`\\b(${r})\\s*\\(\\s*\\[([^\\]]+)\\]\\s*,\\s*\\[([^\\]]+)\\]\\s*\\)`,"gi");return[...e.matchAll(n)].map(s=>({functionName:s[1].toUpperCase(),ref1:s[2].trim(),ref2:s[3].trim()}))}function un(e,t,r){var o,a,u;const n=Object.keys(t),s=((o=r.errorPrefix)!=null?o:"customFormula validation").trim(),i=s===""?"":s.endsWith(" ")?s:`${s} `;return{formula:e,context:t,contextKeys:n,canonicalContextKeys:new Set(n.map(Y)),errorPrefix:i,warnUnusedContext:(a=r.warnUnusedContext)!=null?a:!0,errorOnUnusedContext:(u=r.errorOnUnusedContext)!=null?u:!0,schemaIndex:r.schemaIndex,result:{isValid:!0,errors:[],warnings:[],references:[],unusedContextKeys:[]}}}function R(e,t){e.result.errors.push(t),e.result.isValid=!1}const cn=new Set(["CASE","WHEN","THEN","ELSE","END","AND","OR"]);function ln(e){const t=/\b(\w+)\s*\[/gi,r=[...e.formula.matchAll(t)].find(n=>!cn.has(n[1].toUpperCase()));r&&R(e,`${e.errorPrefix}args[1]: Invalid syntax: '${r[1]}' - operator cannot be used before bracket reference without parentheses`)}function fn(e,t){const r=e[t];let n=t+1;for(;n<e.length;){const s=e[n],i=e[n+1];if(s!==r){n++;continue}if(i===r){n+=2;continue}return n+1}return e.length}function dn(e){return De(e,",").filter(t=>t.trim().length>0).length}function mn(e,t,r,n){for(;t<e.length&&/\s/.test(e[t]);)t++;if(e[t]!=="(")return t;const s=t,i=ur(e,s);if(i===-1)return s+1;const o=e.slice(s+1,i);return n.push({name:r.toUpperCase(),argCount:dn(o)}),n.push(...kt(o)),i+1}function kt(e){const t=[];let r=0;for(;r<e.length;){const n=e[r];if(n==="'"||n==='"'){r=fn(e,r);continue}if(/[A-Za-z_]/.test(n)){const s=r;for(r++;r<e.length&&/[A-Za-z0-9_]/.test(e[r]);)r++;const i=e.slice(s,r);r=mn(e,r,i,t);continue}r++}return t}function pn(e){const t=kt(e.formula),r=new Set,n=new Set;for(const{name:s,argCount:i}of t){if(Zr.has(s)){r.has(s)||(r.add(s),R(e,`${e.errorPrefix}args[1]: Function ${s} is not supported in custom formulas`));continue}const o=ae[s];if(o&&(i<o.minArgs||i>o.maxArgs)&&!n.has(s)){n.add(s);const a=tn(o.minArgs,o.maxArgs);R(e,`${e.errorPrefix}args[1]: Function ${s} accepts ${a}`)}}}function gn(e){return[...new Set([...e.matchAll(new RegExp(rn.source,"g"))].map(t=>t[1]))]}function yn(e){const t=e.result.references.filter(s=>!e.canonicalContextKeys.has(Y(s)));if(t.length===0)return;const r=e.contextKeys.map(s=>`[${Lt(s)}]`).join(", "),n=t.length===1?`Reference [${t[0]}]`:`References [${t.join("], [")}]`;R(e,`${e.errorPrefix}args[1]: ${n} not found in context. Available keys: ${r}`)}function hn(e){if(nn.test(e.formula))return;const t=e.result.references.filter(r=>{var s;const n=(s=e.context[Y(r)])!=null?s:e.context[r];return n!==void 0&&!It(n)});t.length!==0&&R(e,`${e.errorPrefix}args[1]: ${an(sn(e.formula))}Bracket reference(s) ${on(t)} point to raw attributes and must be wrapped in an aggregative function (e.g. SUM, AVG)`)}function bn(e){if(!e.warnUnusedContext&&!e.errorOnUnusedContext||e.contextKeys.length===0)return;const t=new Set(e.result.references.map(Y)),r=e.contextKeys.filter(i=>!t.has(Y(i)));if(e.result.unusedContextKeys=r,r.length===0)return;const n=r.map(i=>`[${Lt(i)}]`).join(", "),s=`${e.errorPrefix}args[2]: Context keys ${n} are defined but not used in formula`;e.errorOnUnusedContext?R(e,s):e.warnUnusedContext&&e.result.warnings.push(s)}function Ge(e,t,r,n){var o;const s=(o=n.context[Y(e)])!=null?o:n.context[e];if(s===void 0)return;if(!(typeof s=="string"&&s.startsWith(S))){It(s)&&R(n,`${n.errorPrefix}args[1]: ${t.functionName} requires datetime dimension attributes. Reference [${e}] points to a measure; use an attribute (e.g. ${S}Table.Column.Level).`);return}if(n.schemaIndex)try{const a=Le(s,n.schemaIndex);l.isDatetime(a.column.dataType)?r&&a.level&&a.level!==r&&R(n,`${n.errorPrefix}args[1]: ${t.functionName} expects date level '${r}'. Reference [${e}] has level '${a.level}'.`):R(n,`${n.errorPrefix}args[1]: ${t.functionName} requires datetime dimensions. Reference [${e}] resolves to non-datetime column '${a.column.name}'.`)}catch(a){const u=a instanceof Error?a.message:"Unknown error";R(n,`${n.errorPrefix}args[1]: ${t.functionName} reference [${e}]: ${u}`)}}function Fn(e){const t=vt(),r=_t(e.formula,t);for(const n of r){const s=Mt(n.functionName);Ge(n.ref1,n,s,e),Ge(n.ref2,n,s,e)}}function En(e,t,r={}){var s;const n=un(e,t,r);return!e||e.trim().length===0?((s=r.allowEmptyFormula)!=null&&s||R(n,`${n.errorPrefix}args[1]: Formula cannot be empty`),n.result):(ln(n),pn(n),n.result.references=gn(e),n.result.references.length===0?(n.result.warnings.push(`${n.errorPrefix}args[1]: No bracket references found in formula - ensure this is intentional`),n.result):n.contextKeys.length===0?(R(n,`${n.errorPrefix}args[2]: Context cannot be empty - custom formulas require context definitions`),n.result):(yn(n),hn(n),bn(n),Fn(n),n.result))}function Tn(e,t,r={}){const n=En(e,t,r);if(!n.isValid)throw new Error(n.errors.join("; "));n.warnings.length>0&&console.warn("Formula validation warnings:",n.warnings.join("; "))}function An(e,t){if(e.length<3||e.length>5)throw new Error(`${t.pathPrefix}Expected 3, 4, or 5 arguments for customFormula (title, formula, context, format?, description?)`);const r=e[1];if(typeof r!="string")throw new Error(`${t.pathPrefix}args[1]: Expected formula string, got ${typeof r}`);const n=r,s=e[2];if(!$(s))throw new Error(`${t.pathPrefix}args[2]: Expected context object, got ${s===null?"null":typeof s}`);const i=s;Tn(n,i,{errorPrefix:`${t.pathPrefix}`,errorOnUnusedContext:!0,allowEmptyFormula:!1,schemaIndex:t.schemaIndex});const o=Sn(n),a={};for(const[u,c]of Object.entries(i)){const y=`args[2].${u}`;if(w(c))a[`${u}`]=M({data:c,context:{dataSource:t.dataSource,schemaIndex:t.schemaIndex,pathPrefix:y}});else if(typeof c=="string"&&c.startsWith(S)){const d=u.startsWith("[")&&u.endsWith("]")?u.slice(1,-1):u,g=o[d];try{a[`${u}`]=ee(c,t.dataSource,t.schemaIndex,g!==void 0?{inferredDateLevel:g}:void 0)}catch(b){const F=b instanceof Error?b.message:"Unknown error";throw new Error(`${y}: ${F}`)}}else if(c&&typeof c=="object"&&"kind"in c)a[`${u}`]=c;else throw new Error(`${y}: Invalid context value for key '${u}'. Expected a function call or attribute reference (${S}...), but got: ${typeof c}`)}return[e[0],e[1],a,...e.slice(3)]}function Sn(e){const t=vt(),r=_t(e,t),n={};for(const s of r){const i=Mt(s.functionName);if(i!==void 0)for(const o of[s.ref1,s.ref2]){const a=n[o];if(a!==void 0&&a!==i)throw new Error(`Reference [${o}] is used in xdiff functions with conflicting date levels ('${a}' and '${i}'). Specify the date level in the context (e.g. DM.Table.Column.${i}).`);n[o]=i}}return n}function Bt(e){return e.type===l.MetadataTypes.TextAttribute}function Ut(e){return e.type===l.MetadataTypes.NumericAttribute}function wn(e){return e.type===l.MetadataTypes.DateLevel}function Cn(e){return Bt(e)||Ut(e)}function de(e){return e.type===l.MetadataTypes.TextAttribute?"text":e.type===l.MetadataTypes.NumericAttribute?"numeric":e.type===l.MetadataTypes.DateLevel?"date/datetime":"unknown"}function ke(e,t){const r=e[0];if(!r||typeof r!="object"||!("type"in r))throw new Error(`${t.pathPrefix}args[0]: Expected attribute as first argument`);return r}function Qe(e,t){const r=ke(e,t);if(!Cn(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string or numeric type, got ${de(r)} attribute`);return e}function B(e,t){const r=ke(e,t);if(!Ut(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be numeric type, got ${de(r)} attribute`);return e}function U(e,t){const r=ke(e,t);if(!Bt(r))throw new Error(`${t.pathPrefix}args[0]: Attribute must be string type, got ${de(r)} attribute`);return e}function On(e,t){const r=e[0];if(!r||typeof r!="object"||!("attribute"in r))throw new Error(`${t.pathPrefix}args[0]: Expected filter as first argument`);return r}function qn(e,t){const r=On(e,t);if(!l.isMembersFilter(r))throw new Error(`${t.pathPrefix}args[0]: exclude filter only accepts members filter, got ${r.__serializable||"unknown"} filter`);return e}const $n="FilterRelations (filterFactory.logic.or / filterFactory.logic.and) is not supported inside measureFactory.measuredValue filters. Use plain filters only, or apply logical relations at the query filter level.";function Dn(e,t){const r=e[1];return Array.isArray(r)&&r.forEach((n,s)=>{if(!(typeof n!="object"||n===null)&&K(n))throw new Error(`${t.pathPrefix}args[1][${s}]: ${$n}`)}),e}const Nn={"measureFactory.customFormula":An,"measureFactory.measuredValue":Dn,"filterFactory.equals":Qe,"filterFactory.doesntEqual":Qe,"filterFactory.greaterThan":B,"filterFactory.greaterThanOrEqual":B,"filterFactory.lessThan":B,"filterFactory.lessThanOrEqual":B,"filterFactory.between":B,"filterFactory.betweenNotEqual":B,"filterFactory.numeric":B,"filterFactory.contains":U,"filterFactory.doesntContain":U,"filterFactory.startsWith":U,"filterFactory.doesntStartWith":U,"filterFactory.endsWith":U,"filterFactory.doesntEndWith":U,"filterFactory.like":U,"filterFactory.exclude":qn};function xn(e){return Nn[`${e}`]}const Pt={"measureFactory.sum":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.average":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.avg":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.min":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.max":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.median":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.count":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.countDistinct":[{type:"Attribute",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.aggregate":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.constant":[{type:"number",required:!0}],"measureFactory.customFormula":[{type:"string",required:!0,isName:!0},{type:"string",required:!0},{type:"CustomFormulaContext",required:!0},{type:"string",required:!1},{type:"string",required:!1}],"measureFactory.add":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.subtract":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.multiply":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.divide":[{type:"Measure | number",required:!0},{type:"Measure | number",required:!0},{type:"string",required:!1,isName:!0},{type:"boolean",required:!1}],"measureFactory.measuredValue":[{type:"Measure",required:!0},{type:"Filter[]",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1}],"measureFactory.rank":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"string",required:!1},{type:"string",required:!1},{type:"Attribute[]",required:!1}],"measureFactory.trend":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"any",required:!1}],"measureFactory.forecast":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0},{type:"any",required:!1}],"measureFactory.yearToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.quarterToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.monthToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.weekToDateSum":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.runningSum":[{type:"Measure",required:!0},{type:"boolean",required:!1},{type:"string",required:!1,isName:!0}],"measureFactory.growth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthRate":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.growthPastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.difference":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.diffPastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastDay":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastWeek":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastMonth":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastQuarter":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.pastYear":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"measureFactory.contribution":[{type:"Measure",required:!0},{type:"string",required:!1,isName:!0}],"filterFactory.union":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.intersection":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.exclude":[{type:"Filter",required:!0},{type:"Filter",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.contains":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntContain":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.startsWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntStartWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.endsWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntEndWith":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.like":[{type:"Attribute",required:!0},{type:"string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.equals":[{type:"Attribute",required:!0},{type:"string | number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.doesntEqual":[{type:"Attribute",required:!0},{type:"string | number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.greaterThan":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.greaterThanOrEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.lessThan":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.lessThanOrEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.between":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.betweenNotEqual":[{type:"Attribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.numeric":[{type:"Attribute",required:!0},{type:"string",required:!1},{type:"number",required:!1},{type:"string",required:!1},{type:"number",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.members":[{type:"Attribute",required:!0},{type:"string[]",required:!0},{type:"MembersFilterConfig",required:!1}],"filterFactory.dateFrom":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateTo":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRange":[{type:"LevelAttribute",required:!0},{type:"Date | string",required:!1},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelative":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelativeFrom":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.dateRelativeTo":[{type:"LevelAttribute",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"Date | string",required:!1},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisYear":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisMonth":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.thisQuarter":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.today":[{type:"DateDimension",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureEquals":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureGreaterThan":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureGreaterThanOrEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureLessThan":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureLessThanOrEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBetween":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBetweenNotEqual":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.topRanking":[{type:"Attribute",required:!0},{type:"Measure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.bottomRanking":[{type:"Attribute",required:!0},{type:"Measure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureTopRanking":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.measureBottomRanking":[{type:"BaseMeasure",required:!0},{type:"number",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.cascading":[{type:"Filter[]",required:!0},{type:"BaseFilterConfig",required:!1}],"filterFactory.logic.and":[{type:"FilterRelationsNode",required:!0},{type:"FilterRelationsNode",required:!0}],"filterFactory.logic.or":[{type:"FilterRelationsNode",required:!0},{type:"FilterRelationsNode",required:!0}]};function me(e){return Pt[`${e}`]}function vn(e){const t=me(e);return t?t.filter(r=>r.required).length:0}function Mn(e){const t=me(e);return t?t.length:0}function Rn(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}/.test(e))return!1;const r=Date.parse(e);if(isNaN(r)||e.length<10)return!1;const n=new Date(e);return!isNaN(n.getTime())}function Ee(e,t,r,n){if(e.startsWith(S))try{return ee(e,t,r)}catch(s){const i=s instanceof Error?s.message:"Unknown error";throw new Error(`${n}: ${i}`)}throw new Error(`${n}: Invalid attribute '${e}'. Expected format: '${S}TableName.ColumnName[.Level]'`)}function In(e,t,r,n){if(e.startsWith(S))try{return jr(e,t,r)}catch(s){const i=s instanceof Error?s.message:"Unknown error";throw new Error(`${n}: ${i}`)}throw new Error(`${n}: Invalid date dimension string '${e}'. Expected format: '${S}TableName.ColumnName'`)}function Ln(e){const t=e.data,{argSchema:r,dataSource:n,schemaIndex:s,pathPrefix:i}=e.context,o=i;if(t===void 0){if(r.required)throw new Error(`${o}: Required argument is missing (expected ${r.type})`);return}if(!(t===null&&!r.required))switch(r.type){case"string":if(typeof t!="string")throw new Error(`${o}: Expected string, got ${typeof t}`);return t;case"number":if(typeof t!="number")throw new Error(`${o}: Expected number, got ${typeof t}`);return t;case"boolean":if(typeof t!="boolean")throw new Error(`${o}: Expected boolean, got ${typeof t}`);return t;case"string[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of strings, got ${typeof t}. Example: ['value1', 'value2']`);if(!t.every(a=>typeof a=="string"))throw new Error(`${o}: Expected array of strings, but contains non-string values`);return t;case"number[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of numbers, got ${typeof t}. Example: [10, 20]`);if(!t.every(a=>typeof a=="number"))throw new Error(`${o}: Expected array of numbers, but contains non-number values`);return t;case"Attribute":if(typeof t!="string")throw new Error(`${o}: Expected attribute string, got ${typeof t}. Example: 'DM.Commerce.Revenue'`);return Ee(t,n,s,o);case"Attribute[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of attributes, got ${typeof t}. Example: ['DM.Commerce.AgeRange']`);return t.map((a,u)=>{if(typeof a!="string")throw new Error(`${o}[${u}]: Expected attribute string, got ${typeof a}`);return Ee(a,n,s,`${o}[${u}]`)});case"Measure":case"BaseMeasure":if(!w(t))throw new Error(`${o}: Expected measure function call, got ${typeof t}. Example: {'function': 'measureFactory.sum', 'args': ['DM.Commerce.Revenue']}`);return M({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});case"Measure[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of measure function calls, got ${typeof t}`);return t.map((a,u)=>{if(!w(a))throw new Error(`${o}[${u}]: Expected measure function call, got ${typeof a}`);return M({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});case"Filter":if(!w(t))throw new Error(`${o}: Expected filter function call, got ${typeof t}. Example: {'function': 'filterFactory.contains', 'args': ['DM.Brand.Brand', 'Apple']}`);return M({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});case"Filter[]":if(!Array.isArray(t))throw new Error(`${o}: Expected array of filter function calls, got ${typeof t}`);return t.map((a,u)=>{if(!w(a))throw new Error(`${o}[${u}]: Expected filter function call, got ${typeof a}`);return M({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});case"FilterRelationsNode":if(Array.isArray(t))return t.map((a,u)=>{if(!w(a))throw new Error(`${o}[${u}]: Expected filter function call, got ${typeof a}`);return M({data:a,context:{dataSource:n,schemaIndex:s,pathPrefix:`${o}[${u}]`}})});if(w(t))return M({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});throw new Error(`${o}: Expected filter function call or array of filters, got ${typeof t}`);case"DateDimension":if(typeof t!="string")throw new Error(`${o}: Expected date dimension string, got ${typeof t}. Example: 'DM.Commerce.Date'`);return In(t,n,s,o);case"LevelAttribute":{if(typeof t!="string")throw new Error(`${o}: Expected date attribute string, got ${typeof t}. Example: 'DM.Commerce.Date.Years'`);const a=Ee(t,n,s,o);if(!wn(a))throw new Error(`${o}: Attribute must be date/datetime type, got ${de(a)} attribute`);return a}case"Measure | number":if(typeof t=="number")return t;if(w(t))return M({data:t,context:{dataSource:n,schemaIndex:s,pathPrefix:o}});throw new Error(`${o}: Expected measure function call or number, got ${typeof t}`);case"Date | string":if(typeof t=="string"){if(Rn(t))return t;throw new Error(`${o}: Expected valid ISO date string or Date object, got invalid date string '${t}'`)}else{if(t instanceof Date)return t;throw new Error(`${o}: Expected date string or Date object, got ${typeof t}`)}case"string | number":if(typeof t=="string"||typeof t=="number")return t;throw new Error(`${o}: Expected string or number, got ${typeof t}`);case"BaseFilterConfig":case"MembersFilterConfig":case"CustomFormulaContext":case"any":if(t==null&&r.required)throw new Error(`${o}: Required argument is null/undefined`);return t;default:return t}}function M(e){const{data:t}=e,{dataSource:r,schemaIndex:n,pathPrefix:s}=e.context,{function:i,args:o}=t,a=s?`${s}.`:"",u=me(i);if(!u){const p=Object.keys(Pt),E=N(i,p,x=>x),q=E&&E.distance<=O?` Did you mean '${E.best}'?`:"";throw new Error(`${a}function: Unknown function '${i}'.${q}`)}const c=vn(i),y=Mn(i);if(o.length<c)throw new Error(`${a}function: Expected at least ${c} arguments, got ${o.length}`);if(o.length>y)throw new Error(`${a}function: Expected at most ${y} arguments, got ${o.length}`);const d=[],g=[];for(let p=0;p<Math.max(o.length,u.length);p++){const E=u[`${p}`],q=o[`${p}`],x=a?`${a}args[${p}]`:`args[${p}]`;if(q===void 0){E!=null&&E.required&&g.push(`${x}: Missing required argument (expected ${E.type})`);continue}if(!E){g.push(`${x}: Unexpected argument`);continue}try{const W=Ln({data:q,context:{dataSource:r,schemaIndex:n,pathPrefix:x,argSchema:E}});d.push(W)}catch(W){const rr=W instanceof Error?W.message:"Unknown error";g.push(rr)}}if(g.length>0){const p=g.join("; ");throw new Error(p)}let b=d;const F=xn(i);if(F)try{b=F(d,{dataSource:r,schemaIndex:n,pathPrefix:a})}catch(p){const E=p instanceof Error?p.message:"Unknown validation error";throw new Error(E)}return Xr(i,b)}function zt(e){const{attribute:t,config:r}=e;if(l.isMembersFilter(e)&&l.isLevelAttribute(t)){const{granularity:n}=t,s=e.members.map(a=>n==="Years"&&!isNaN(Number(a))?`${a}-01-01T00:00:00`:a),i=l.simplifyFilterConfig(r),o=Object.keys(i).length===0?void 0:i;return l.members(t,s,o)}return e}function _n(e){let t=[];for(const r of e)K(r)?t=l.mergeFiltersOrFilterRelations(r,t):t=l.mergeFiltersOrFilterRelations([zt(r)],t);return t!=null?t:[]}const kn=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context,s=[],i=[];return t.forEach((o,a)=>{const u={path:`filters[${a}]`,input:o};try{const c=M({data:o,context:{dataSource:r,schemaIndex:n,pathPrefix:""}});!K(c)&&!fe(c)?i.push(T(f({},u),{message:"Invalid filter JSON"})):s.push(c)}catch(c){const y=c instanceof Error?c.message:"Unknown error";i.push(T(f({},u),{message:y}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:_n(s)}},re=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;return t?qt(t)?kn({data:t,context:{dataSource:r,schemaIndex:n}}):{success:!1,errors:[{path:"filters",input:t,message:"Invalid filters JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},Bn=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context,s=[],i=[];return t.forEach((o,a)=>{const u={path:`highlights[${a}]`,input:o};try{const c=M({data:o,context:{dataSource:r,schemaIndex:n,pathPrefix:""}});fe(c)?s.push(zt(c)):i.push(T(f({},u),{message:"Invalid filter JSON"}))}catch(c){const y=c instanceof Error?c.message:"Unknown error";i.push(T(f({},u),{message:y}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}},pe=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;return t?qt(t)?Bn({data:t,context:{dataSource:r,schemaIndex:n}}):{success:!1,errors:[{path:"highlights",input:t,message:"Invalid highlights JSON. Expected an array of function calls with 'function' and 'args' properties."}]}:{success:!0,data:[]}},Un=(e,t)=>{if(e&&!l.isSortDirection(e))return T(f({},t),{message:`Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${e}'.`})},Pn=(e,t,r)=>{const{dataSource:n,schemaIndex:s}=t;try{const i=M({data:e,context:{dataSource:n,schemaIndex:s,pathPrefix:""}});return Ie(i)?{success:!0,data:i}:{success:!1,errors:[T(f({},r),{message:"Invalid measure JSON"})]}}catch(i){const o=i instanceof Error?i.message:"Unknown error";return{success:!1,errors:[T(f({},r),{message:o})]}}},zn=(e,t,r,n)=>{const s=M({data:e.column,context:{dataSource:t,schemaIndex:r,pathPrefix:""}});if(!Ie(s))return{style:{},error:T(f({},n),{message:"Invalid measure JSON"})};const i=Un(e.sortType,n);if(i){const a=l.omit(e,"column");return{measure:s,style:a,error:i}}const o=l.omit(e,"column");return{measure:s,style:o}},Wn=(e,t,r,n)=>{if(Dt(e))return zn(e,t,r,n);if(w(e)){const s=Pn(e,{dataSource:t,schemaIndex:r},n);return s.success?{measure:s.data}:{error:s.errors[0]}}return{error:T(f({},n),{message:"Invalid measure item. Expected a function call (function/args) or object with 'column' and optional 'sortType'."})}},Wt=e=>{const{data:t}=e,{dataSource:r,schemaIndex:n}=e.context;if(!t)return{success:!0,data:[]};if(!Array.isArray(t))return{success:!1,errors:[{path:"measures",input:t,message:"Invalid measures JSON. Expected an array."}]};const s=[],i=[];return t.forEach((o,a)=>{const u={path:`measures[${a}]`,input:o};try{const c=Wn(o,r,n,u);if(c.error){i.push(c.error);return}c.measure&&s.push(c.style!==void 0?{measure:c.measure,style:c.style}:{measure:c.measure})}catch(c){const y=c instanceof Error?c.message:"Unknown error";i.push(T(f({},u),{message:y}))}}),i.length>0?{success:!1,errors:i}:{success:!0,data:s}};function oe(e){return typeof e=="string"?e:e.title}function Vn(e){const t={};for(const[r,n]of Object.entries(e)){const s={};n.filtersOptions!==void 0&&(s.filtersOptions=n.filtersOptions),n.partialDtoOptions!==void 0&&(s.partialDtoOptions=n.partialDtoOptions),Object.keys(s).length>0&&(t[r]=s)}return Object.keys(t).length>0?t:void 0}function Vt(e){return typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"?e.toJSON():e}function _(e){return typeof e=="string"?e.replace(/\[\[([^\]]+)\]\]/g,"$1"):Array.isArray(e)?e.map(_):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,r])=>[t,_(r)])):e}function A(e,t,r){const n=e();if(!n.success){const s=r?n.errors.map(r):n.errors;return t.push(...s),null}return n.data}const jn=e=>{const{data:t}=e,{dataSource:r,tables:n}=e.context,s=te(n),i=[],o=A(()=>xt({data:t.dimensions||[],context:{dataSource:r,schemaIndex:s}}),i),a=A(()=>Wt({data:t.measures||[],context:{dataSource:r,schemaIndex:s}}),i),u=A(()=>re({data:t.filters||[],context:{dataSource:r,schemaIndex:s}}),i);let c=null;return t.highlights&&(c=A(()=>pe({data:t.highlights||[],context:{dataSource:r,schemaIndex:s}}),i)),i.length>0?{success:!1,errors:i}:{success:!0,data:f({dataSource:l.convertDataSource(r),dimensions:o?l.adaptDimensionsForQuery(o):[],measures:a?l.adaptMeasuresForQuery(a):[],filters:u||[]},c&&{highlights:c})}};function He(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function Be(e){const t=[],r=[];return e.forEach((n,s)=>{var d,g,b;const i=He(n)?n.column:n,o=He(n)?n:void 0,a=()=>Vt(i);if(!i.composeCode){r.push({path:`dimensions[${s}]`,input:a(),message:`Dimension at index ${s} (${i.name||"unnamed"}) is missing composeCode`});return}if(!i.composeCode.startsWith(S)){r.push({path:`dimensions[${s}]`,input:a(),message:`Expected composeCode to start with '${S}' for dimension at index ${s} (${i.name||"unnamed"}). Got: '${i.composeCode}'`});return}const u=(b=o!=null&&o.sortType?l.convertSortDirectionToSort(o.sortType):void 0)!=null?b:((d=i.getSort)==null?void 0:d.call(i))!==void 0&&((g=i.getSort)==null?void 0:g.call(i))!==l.Sort.None?i.getSort():void 0,c=o?l.omit(o,"column"):{};if(u!==void 0&&u!==l.Sort.None||o&&Object.keys(c).length>0){const F=f(f({column:i.composeCode},u!==void 0&&u!==l.Sort.None&&{sortType:l.convertSortToSortDirection(u)}),c);t.push(F)}else t.push(i.composeCode)}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}const Oe="Unknown error";function ne(e){if(!e)return{success:!0,data:[]};const t=[];if(l.isFilterRelations(e)){if(!e.composeCode)return{success:!1,errors:[{path:"filters",input:e,message:`FilterRelations is missing composeCode. Operator: ${e.operator||"unknown"}`}]};try{return{success:!0,data:[j(e.composeCode)]}}catch(n){const s=n instanceof Error?n.message:Oe;return{success:!1,errors:[{path:"filters",input:e,message:`Failed to parse composeCode for FilterRelations: ${s}. ComposeCode: '${e.composeCode}'`}]}}}const r=[];return e.forEach((n,s)=>{var i;if(!n.composeCode){t.push({path:`filters[${s}]`,input:n,message:`Filter at index ${s} (${(i=n.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=j(n.composeCode);r.push(o)}catch(o){const a=o instanceof Error?o.message:Oe;t.push({path:`filters[${s}]`,input:n,message:`Failed to parse composeCode for filter at index ${s}: ${a}. ComposeCode: '${n.composeCode}'`})}}),t.length>0?{success:!1,errors:t}:{success:!0,data:r}}function ge(e){if(!e)return{success:!0,data:[]};const t=[],r=[];return e.forEach((n,s)=>{var i;if(!n.composeCode){r.push({path:`highlights[${s}]`,input:n,message:`Highlight filter at index ${s} (${(i=n.name)!=null?i:"unnamed"}) is missing composeCode`});return}try{const o=j(n.composeCode);t.push(o)}catch(o){const a=o instanceof Error?o.message:Oe;r.push({path:`highlights[${s}]`,input:n,message:`Failed to parse composeCode for highlight filter at index ${s}: ${a}. ComposeCode: '${n.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function Xe(e){return typeof e=="object"&&e!==null&&"column"in e&&e.column!==void 0}function Ue(e){const t=[],r=[];return e.forEach((n,s)=>{var u,c,y;const i=Xe(n)?n.column:n,o=Xe(n)?n:void 0,a=()=>Vt(i);if(!i.composeCode){r.push({path:`measures[${s}]`,input:a(),message:`Measure at index ${s} (${i.name||"unnamed"}) is missing composeCode`});return}try{const d=j(i.composeCode),g=(y=o!=null&&o.sortType?l.convertSortDirectionToSort(o.sortType):void 0)!=null?y:((u=i.getSort)==null?void 0:u.call(i))!==void 0&&((c=i.getSort)==null?void 0:c.call(i))!==l.Sort.None?i.getSort():void 0;if(g!==void 0&&g!==l.Sort.None||o&&Object.keys(l.omit(o,"column")).length>0){const F=o?l.omit(o,"column"):{},p=f(f({column:d},g!==void 0&&g!==l.Sort.None&&{sortType:l.convertSortToSortDirection(g)}),F);t.push(p)}else t.push(d)}catch(d){const g=d instanceof Error?d.message:"Unknown error";r.push({path:`measures[${s}]`,input:a(),message:`Failed to parse composeCode for measure at index ${s} (${i.name||"unnamed"}): ${g}. ComposeCode: '${i.composeCode}'`})}}),r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function Ze(e){var t,r,n,s;return((r=(t=e.composeCode)==null?void 0:t.includes("measureFactory.trend"))!=null?r:!1)||((s=(n=e.name)==null?void 0:n.startsWith(l.TREND_PREFIX))!=null?s:!1)}function et(e){var t,r,n,s;return((r=(t=e.composeCode)==null?void 0:t.includes("measureFactory.forecast"))!=null?r:!1)||((s=(n=e.name)==null?void 0:n.startsWith(l.FORECAST_PREFIX))!=null?s:!1)}function tt(e){try{const t=j(e.trim());return t.args[2]!=null&&typeof t.args[2]=="object"?t.args[2]:void 0}catch(t){return}}function Jn(e){var n,s,i;if(!(e!=null&&e.length))return[];const t=new Set,r=[];for(let o=0;o<e.length;o++){if(t.has(o))continue;const a=e[o];if(Ze(a)||et(a)){r.push(a);continue}const u=(n=a.name)!=null?n:"Measure",c=`${l.TREND_PREFIX}_${u}`,y=`${l.FORECAST_PREFIX}_${u}`;let d,g,b=o+1;if(b<e.length&&!t.has(b)&&Ze(e[b])&&e[b].name===c){const F=(s=e[b].composeCode)==null?void 0:s.trim();F&&(d=tt(F),t.add(b),b++)}if(b<e.length&&!t.has(b)&&et(e[b])&&e[b].name===y){const F=(i=e[b].composeCode)==null?void 0:i.trim();F&&(g=tt(F),t.add(b))}d!==void 0||g!==void 0?r.push(f(f({column:a},d&&Object.keys(d).length>0&&{trend:d}),g&&Object.keys(g).length>0&&{forecast:g})):r.push(a)}return r}function Yn(e){const t=[],r=A(()=>Be(e.dimensions||[]),t),n=Jn(e.measures||[]),s=A(()=>Ue(n),t),i=A(()=>ne(e.filters),t);let o=null;if(e.highlights&&e.highlights.length>0&&(o=A(()=>ge(e.highlights),t)),t.length>0)return{success:!1,errors:t};const a=f({dimensions:r||[],measures:s||[],filters:i||[]},o&&{highlights:o});return{success:!0,data:_(a)}}const jt=new Set(l.ALL_CHART_TYPES.filter(e=>e!=="image")),rt=Object.freeze([...jt]),Te=new Set(["category","value","breakBy","breakByPoint","x","y","breakByColor","size","boxType","outliers","geo","colorBy","details","color","date","columns","rows","values","secondary","min","max","seriesToColorMap"]),Kn={line:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},area:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},bar:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},column:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},streamgraph:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},polar:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]},pie:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},funnel:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},treemap:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},sunburst:{validAxes:new Set(["category","value","seriesToColorMap"]),requiredAxes:["category","value"]},scatter:{validAxes:new Set(["x","y","breakByPoint","breakByColor","size","seriesToColorMap"]),requiredAxes:[]},table:{validAxes:new Set(["columns"]),requiredAxes:["columns"]},indicator:{validAxes:new Set(["value","secondary","min","max"]),requiredAxes:[]},boxplot:{validAxes:new Set(["category","value","boxType","outliers"]),requiredAxes:["value"]},areamap:{validAxes:new Set(["geo","color"]),requiredAxes:["geo"]},scattermap:{validAxes:new Set(["geo","size","colorBy","details"]),requiredAxes:["geo"]},"calendar-heatmap":{validAxes:new Set(["date","value"]),requiredAxes:["date","value"]},arearange:{validAxes:new Set(["category","value","breakBy","seriesToColorMap"]),requiredAxes:["category","value"]}},Gn=new Set(["category","breakBy","breakByPoint","rows","geo","details","date"]),Qn=new Set(["value","size","colorBy","boxType","outliers","values","secondary","min","max","color"]);function Hn(e){const t=Kn[e];if(t)return{validAxes:new Set(t.validAxes),requiredAxes:Object.freeze([...t.requiredAxes])}}function Jt(e){return typeof e=="string"&&jt.has(e)}function Xn(e,t,r){if(r==="boxplot"&&e==="value"||r==="calendar-heatmap"&&e==="date"||Gn.has(e))return!0;if(Qn.has(e))return!1;const n=Array.isArray(t)?t[0]:t;if(!n)return!0;let s;return $(n)&&"column"in n&&(s=n.column),!(w(n)||s!==void 0&&w(s))}function Zn(e){const t=[],r={chartType:"",dataOptions:{}};if(!$(e))return t.push({path:"chartType",input:e,message:"Expected an object"}),{normalized:r,errors:t};const n=e.chartType;if(n===void 0){const i=Object.keys(e),o=N("chartType",i,c=>c),a=o&&o.distance<=O?` Did you mean 'chartType'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=O?{[o.best]:e[o.best]}:e;t.push({path:"chartType",input:u,message:`chartType is required.${a}`})}else if(Jt(n))r.chartType=n;else{const i=N(String(n),rt,u=>u),o=i&&i.distance<=O?` Did you mean '${i.best}'?`:"",a=rt.slice(0,8).join(", ");t.push({path:"chartType",input:n,message:`Invalid chartType '${n}'. Valid types: ${a}, ...${o}`})}const s=e.dataOptions;if(s===void 0){const i=Object.keys(e),o=N("dataOptions",i,c=>c),a=o&&o.distance<=O?` Did you mean 'dataOptions'? (You may have typed '${o.best}')`:"",u=o&&o.distance<=O?{[o.best]:e[o.best]}:e;t.push({path:"dataOptions",input:u,message:`dataOptions is required.${a}`})}else s!==null&&typeof s=="object"&&(r.dataOptions=s);return e.styleOptions!==void 0&&(r.styleOptions=e.styleOptions),e.filters!==void 0&&Array.isArray(e.filters)&&(r.filters=e.filters),e.highlights!==void 0&&Array.isArray(e.highlights)&&(r.highlights=e.highlights),{normalized:r,errors:t}}function D(e,t){return e===-1?"dataOptions":typeof e=="number"?`dataOptions[${e}]`:t!==void 0?`dataOptions.${e}[${t}]`:`dataOptions.${e}`}function Yt(e,t){return e?t?`${e}.${t}`:e:t!=null?t:""}function es(e){return t=>T(f({},t),{path:Yt(e,t.path)})}function Kt(e){return es(`widgets[${e}]`)}function Gt(e,t){return e.map(t)}function ts(e){return e.map(({attribute:t,style:r})=>r?f({column:t},r):t)}function rs(e){return e.map(({measure:t,style:r})=>r?f({column:t},r):t)}function ns(e){return Array.isArray(e)?e:[e]}function ss(e){return Array.isArray(e)?e:[e]}function is(e){return Array.isArray(e)?e:[e]}const os=/^(dimensions|measures|filters|highlights)(\[\d+\])?$/;function qe(e){return t=>{const r=t.path.match(/\[(\d+)\]$/),n=r?Number(r[1]):void 0,s=D(e,n);if(os.test(t.path)||t.path.startsWith("dataOptions"))return T(f({},t),{path:s});const i=t.path.replace(/\[\d+\]$/,"");return T(f({},t),{path:Yt(i,s)})}}function ue(e,t,r,n,s){if(r==="dimension"){const a=t?ns(t):[];if(a.length===0)return[];const u=A(()=>xt({data:a,context:n}),s,qe(e));return u!==null?ts(u):null}const i=t?ss(t):[];if(i.length===0)return[];const o=A(()=>Wt({data:i,context:n}),s,qe(e));return o!==null?rs(o):null}const nt=(e,t)=>{const r=t.path.match(/\[(\d+)\]$/),n=r?Number(r[1]):void 0;return T(f({},t),{path:D(e,n)})};function st(e,t,r){const n=Array.isArray(t)?t:t!=null?[t]:[];if(r==="dimension"){const i=Be(n);return i.success?{success:!0,data:i.data}:{success:!1,errors:i.errors.map(o=>nt(e,o))}}const s=Ue(n);return s.success?{success:!0,data:s.data}:{success:!1,errors:s.errors.map(i=>nt(e,i))}}function as(e,t){let r;$(e)&&"column"in e&&(r=e.column);const s=!(w(e)||r!==void 0&&w(r))?"dimension":"measure",i=[],o=ue("columns",[e],s,t,i);return o!==null?{success:!0,data:o}:{success:!1,errors:i}}function us(e,t,r,n){const s=[];for(const i of e){const o=A(()=>as(i,t),r,n);o&&s.push(...o)}return s}function cs(e,t,r){if(!e||!$(e))return r.push({path:D(-1),input:e,message:"dataOptions is required"}),null;const n={},{chartType:s}=t,i=r.length,o=e,a=Object.keys(e),u=new Map;for(const d of a)if(!Te.has(d)){const g=N(d,[...Te],F=>F),b=g&&g.distance<=O?` Did you mean '${g.best}'?`:"";g&&g.distance<=O&&u.set(d,g.best),r.push({path:D(d),input:o[d],message:`Unknown dataOptions key '${d}'.${b}`})}const c=s?Hn(s):void 0;if(c){for(const d of a)if(d!=="seriesToColorMap"&&!c.validAxes.has(d)&&Te.has(d)){const g=N(d,[...c.validAxes],p=>p),b=g&&g.distance<=O?` Did you mean '${g.best}'?`:"",F=[...c.validAxes].join(", ");r.push({path:D(d),input:o[d],message:`Axis '${d}' is not valid for chart type '${s}'. Valid axes: ${F}.${b}`})}for(const d of c.requiredAxes)[...u.values()].includes(d)||(!(d in o)||o[d]==null)&&r.push({path:D(d),input:null,message:`Chart type '${s}' requires '${c.requiredAxes.join("' and '")}'. Missing: ${d}.`});s==="indicator"&&(["value","secondary","min","max"].some(b=>b in o&&o[b]!=null)||r.push({path:D(-1),input:e,message:"Indicator chart requires at least one of: value, secondary, min, max."})),s==="scatter"&&("x"in e&&e.x!=null||"y"in e&&e.y!=null||r.push({path:D(-1),input:e,message:"Scatter chart requires at least one of: x, y."}))}if(r.length>i)return null;const y=Object.entries(e);for(const[d,g]of y){if(!g)continue;if(d==="seriesToColorMap"){n[d]=g;continue}if(d==="columns"){n[d]=us(is(g),t,r,qe("columns"));continue}const b=Xn(d,g,s)?"dimension":"measure",F=ue(d,g,b,t,r);if(F!==null){const p=s==="calendar-heatmap"&&d==="value";n[d]=p||!Array.isArray(g)?F[0]:F}}return r.length>i?null:n}function ls(e){if(typeof e!="string")return"iqr";const t=e.split("/")[1];return t==="iqr"||t==="extremums"||t==="standardDeviation"?t:"iqr"}const Qt=e=>{var p;const{data:t,context:r}=e,{dataSource:n,tables:s}=r,{normalized:i,errors:o}=Zn(t);if(o.length>0)return{success:!1,errors:o};const a=i.chartType,u=te(s),c=[];let y=cs(i.dataOptions,{dataSource:n,schemaIndex:u,chartType:a},c);if(a==="boxplot"&&y){const E=ls((p=i.styleOptions)==null?void 0:p.subtype),q=E==="iqr"||E==="standardDeviation";y=T(f({},y),{boxType:E,outliersEnabled:q})}let d=null;i.filters&&i.filters.length>0&&(d=A(()=>re({data:i.filters||[],context:{dataSource:n,schemaIndex:u}}),c));let g=null;if(i.highlights&&i.highlights.length>0&&(g=A(()=>pe({data:i.highlights||[],context:{dataSource:n,schemaIndex:u}}),c)),c.length>0||y===null)return{success:!1,errors:c};if(!Jt(i.chartType))return{success:!1,errors:[{path:"chartType",input:i.chartType,message:"Invalid chartType"}]};const b=i.chartType;return{success:!0,data:f(f(f({dataSet:l.convertDataSource(n),chartType:b,dataOptions:y},i.styleOptions&&{styleOptions:i.styleOptions}),d&&{filters:d}),g&&{highlights:g})}},Ht=e=>{const t=[];if(!e.chartType)return{success:!1,errors:[{path:"chartType",input:e,message:"chartType is required"}]};if(!e.dataOptions)return{success:!1,errors:[{path:"dataOptions",input:e,message:"dataOptions is required"}]};let r=null;const n=fs(e.dataOptions);n.success?r=n.data:t.push(...n.errors);let s;if(e.filters){const a=A(()=>ne(e.filters),t);s=a!=null?a:void 0}let i;if(e.highlights&&e.highlights.length>0){const a=A(()=>ge(e.highlights),t);i=a!=null?a:void 0}if(t.length>0||r===null)return{success:!1,errors:t};const o=f(f(f({chartType:e.chartType,dataOptions:r},e.styleOptions&&{styleOptions:e.styleOptions}),s&&s.length>0&&{filters:s}),i&&i.length>0&&{highlights:i});return{success:!0,data:_(o)}};function fs(e){const t={},r=[],n=new Set(["seriesToColorMap","boxType","outliersEnabled","valueTitle"]);for(const[s,i]of Object.entries(e)){if(s==="seriesToColorMap"&&i){t[s]=i;continue}if(n.has(s)||i==null){i!=null&&(t[s]=i);continue}const o=Array.isArray(i)?i:[i],a=Array.isArray(i),u=[],c=[];for(let y=0;y<o.length;y++){const d=o[y],b=ds(d)?Be([d]):Ue([d]);b.success?u.push(...b.data):b.errors.forEach(F=>{var p;c.push(T(f({},F),{path:D(s,y),input:(p=F.input)!=null?p:d}))})}if(c.length>0){r.push(...c);continue}t[s]=a?u:u[0]}return r.length>0?{success:!1,errors:r}:{success:!0,data:t}}function ds(e){const t=Array.isArray(e)?e[0]:e;if(!t||!$(t))return!0;const r="column"in t&&t.column!=null&&$(t.column)?t.column:t;if("composeCode"in r){const n=r.composeCode;if(typeof n=="string"&&n.startsWith("DM."))return!0;if(typeof n=="string"&&(n.includes("measureFactory")||n.includes("Formula")))return!1}if("type"in r){const n=r.type;if(n==="basemeasure"||n==="calculatedmeasure")return!1}return!("aggregation"in r||"attribute"in r&&"aggregation"in r)}const it=["rows","columns","values","grandTotals"];function ms(e){if(!$(e))return!1;const t=Object.keys(e);return t.every(r=>r==="rows"||r==="columns")&&t.every(r=>typeof e[r]=="boolean")}function ps(e){const t=[],r={dataOptions:{}};if(!$(e))return t.push({path:"dataOptions",input:e,message:"Expected an object"}),{normalized:r,errors:t};const n=e.dataOptions;if(n===void 0){const s=Object.keys(e),i=N("dataOptions",s,u=>u),o=i&&i.distance<=O?` Did you mean 'dataOptions'? (You may have typed '${i.best}')`:"",a=i&&i.distance<=O?{[i.best]:e[i.best]}:e;t.push({path:"dataOptions",input:a,message:`dataOptions is required.${o}`})}else if($(n)){const s=n;r.dataOptions=s;for(const o of Object.keys(s))if(!it.includes(o)){const a=N(o,[...it],c=>c),u=a&&a.distance<=O?` Did you mean '${a.best}'?`:"";t.push({path:D(o),input:s[o],message:`Unknown dataOptions key '${o}'. Valid keys: rows, columns, values, grandTotals.${u}`})}for(const o of["rows","columns","values"]){const a=s[o];a!=null&&!Array.isArray(a)&&t.push({path:D(o),input:a,message:`dataOptions.${o} must be an array`})}const i=s.grandTotals;i!=null&&!ms(i)&&t.push({path:D("grandTotals"),input:i,message:"grandTotals must be an object with optional rows?: boolean, columns?: boolean"})}return e.styleOptions!==void 0&&(r.styleOptions=e.styleOptions),e.filters!==void 0&&Array.isArray(e.filters)&&(r.filters=e.filters),e.highlights!==void 0&&Array.isArray(e.highlights)&&(r.highlights=e.highlights),{normalized:r,errors:t}}function gs(e,t,r){if(!e||typeof e!="object")return r.push({path:D(-1),input:e,message:"dataOptions is required"}),null;const n={},s=r.length;for(const o of["rows","columns"]){const a=ue(o,e[o],"dimension",t,r);a&&(n[o]=a)}const i=ue("values",e.values,"measure",t,r);return i&&(n.values=i),e.grandTotals!==void 0&&(n.grandTotals=e.grandTotals),r.length>s?null:n}const Xt=e=>{const{data:t,context:r}=e,{dataSource:n,tables:s}=r,{normalized:i,errors:o}=ps(t);if(o.length>0)return{success:!1,errors:o};const a=te(s),u=[],c=gs(i.dataOptions,{dataSource:n,schemaIndex:a},u);let y=null;i.filters&&i.filters.length>0&&(y=A(()=>re({data:i.filters||[],context:{dataSource:n,schemaIndex:a}}),u));let d=null;return i.highlights&&i.highlights.length>0&&(d=A(()=>pe({data:i.highlights||[],context:{dataSource:n,schemaIndex:a}}),u)),u.length>0||c===null?{success:!1,errors:u}:{success:!0,data:f(f(f({dataSet:l.convertDataSource(n),dataOptions:c},i.styleOptions&&{styleOptions:i.styleOptions}),y&&{filters:y}),d&&{highlights:d})}},Zt=e=>{const t=[];if(!e.dataOptions)return{success:!1,errors:[{path:"dataOptions",input:e,message:"dataOptions is required"}]};const r=e.dataOptions,n={};for(const u of["rows","columns"]){const c=r[u];if(c&&c.length>0){const y=st(u,c,"dimension");y.success?n[u]=y.data:t.push(...y.errors)}}const s=r.values;if(s&&s.length>0){const u=st("values",s,"measure");u.success?n.values=u.data:t.push(...u.errors)}r.grandTotals!==void 0&&(n.grandTotals=r.grandTotals);let i;if(e.filters){const u=A(()=>ne(e.filters),t);i=u!=null?u:void 0}let o;if(e.highlights&&e.highlights.length>0){const u=A(()=>ge(e.highlights),t);o=u!=null?u:void 0}if(t.length>0)return{success:!1,errors:t};const a=f(f(f({dataOptions:n},e.styleOptions&&{styleOptions:e.styleOptions}),i&&i.length>0&&{filters:i}),o&&o.length>0&&{highlights:o});return{success:!0,data:_(a)}},ys=(e,t,r)=>{const n=te(r.tables),s={dataSource:r.dataSource,schemaIndex:n},i=[],o=e&&e.length>0?A(()=>re({data:e,context:s}),i):void 0,a=t&&t.length>0?A(()=>pe({data:t,context:s}),i):void 0;return i.length>0?{success:!1,errors:i}:{success:!0,data:f(f({},o!=null&&{filters:o}),a!=null&&{highlights:a})}},hs=["widgetType","id","title","description","dataSource","config","highlightSelectionDisabled"],ot=(e,t,r,n)=>{const{id:s,title:i,description:o,dataSource:a,config:u,highlightSelectionDisabled:c}=e,y=l.omit(e,hs),d=r({data:y,context:t});return d.success?{success:!0,data:n(d.data,{id:s,title:i,description:o,dataSource:a,config:u,highlightSelectionDisabled:c})}:d},bs=(e,t)=>{const s=e,{dataSet:r}=s,n=ye(s,["dataSet"]);return f(f(f(f(f(T(f({},n),{widgetType:"chart",id:t.id}),t.dataSource!==void 0?{dataSource:t.dataSource}:r!==void 0&&l.isDataSource(r)&&{dataSource:r}),t.config!==void 0&&{config:t.config}),t.highlightSelectionDisabled!==void 0&&{highlightSelectionDisabled:t.highlightSelectionDisabled}),t.title!==void 0&&{title:t.title}),t.description!==void 0&&{description:t.description})},Fs=(e,t)=>{const s=e,{dataSet:r}=s,n=ye(s,["dataSet"]);return f(f(f(f(T(f({},n),{widgetType:"pivot",id:t.id}),t.dataSource!==void 0?{dataSource:t.dataSource}:r!==void 0&&l.isDataSource(r)&&{dataSource:r}),t.config!==void 0&&{config:t.config}),t.title!==void 0&&{title:t.title}),t.description!==void 0&&{description:t.description})},$e=["chart","pivot","text","custom"],Es=e=>typeof e=="string"&&$e.includes(e);function Ts(e){if(!$(e))return{path:"widgetType",input:e,message:"Expected an object"};const t=e.widgetType;if(t===void 0){const r=Object.keys(e),n=N("widgetType",r,o=>o),s=n&&n.distance<=O?` Did you mean 'widgetType'? (You may have typed '${n.best}')`:"";return{path:"widgetType",input:n&&n.distance<=O?{[n.best]:e[n.best]}:e,message:`widgetType is required.${s}`}}if(!Es(t)){const r=N(String(t),$e,i=>i),n=r&&r.distance<=O?` Did you mean '${r.best}'?`:"",s=$e.join(", ");return{path:"widgetType",input:t,message:`Invalid widgetType '${String(t)}'. Valid types: ${s}${n}`}}return null}const As=e=>({path:"id",input:e,message:"Widget id is required"}),Ss=e=>!!e.id,er=e=>{const{data:t,context:r}=e,n=Ts(t);if(n)return{success:!1,errors:[n]};if(!Ss(t))return{success:!1,errors:[As(t)]};switch(t.widgetType){case"chart":return ot(t,r,Qt,bs);case"pivot":return ot(t,r,Xt,Fs);case"text":return{success:!0,data:f({widgetType:"text",id:t.id,styleOptions:t.styleOptions},t.config!==void 0&&{config:t.config})};case"custom":{const{id:s,customWidgetType:i,title:o,description:a,dataSource:u,config:c,filters:y,highlights:d,dataOptions:g,styleOptions:b,customOptions:F}=t,p=ys(y,d,r);return p.success?{success:!0,data:f(f(f(f(f(f({widgetType:"custom",id:s,customWidgetType:i,dataSource:u!==void 0?u:l.convertDataSource(r.dataSource),dataOptions:g!=null?g:{}},o!==void 0&&{title:o}),a!==void 0&&{description:a}),c!==void 0&&{config:c}),b!==void 0&&{styleOptions:b}),F!==void 0&&{customOptions:F}),p.data)}:p}default:return{success:!1,errors:[{path:"widgetType",input:t,message:`Unknown widgetType: ${String(t.widgetType)}`}]}}},tr=e=>{const{widgetType:t}=e;switch(t){case"chart":{const r=Ht(e);if(!r.success)return r;const n=f(f(f(f(f(T(f({},r.data),{widgetType:"chart",id:e.id}),e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:oe(e.dataSource)}),e.config!==void 0&&{config:e.config}),e.highlightSelectionDisabled!==void 0&&{highlightSelectionDisabled:e.highlightSelectionDisabled});return{success:!0,data:_(n)}}case"pivot":{const r=Zt(e);if(!r.success)return r;const n=f(f(f(f(T(f({},r.data),{widgetType:"pivot",id:e.id}),e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:oe(e.dataSource)}),e.config!==void 0&&{config:e.config});return{success:!0,data:_(n)}}case"text":return{success:!0,data:f({widgetType:"text",id:e.id,styleOptions:e.styleOptions},e.config!==void 0&&{config:e.config})};case"custom":{const r=[],n=e.filters!==void 0?A(()=>ne(e.filters),r):void 0,s=e.highlights!==void 0?A(()=>ge(e.highlights),r):void 0;return r.length>0?{success:!1,errors:r}:{success:!0,data:f(f(f(f(f(f(f(f(f({widgetType:"custom",customWidgetType:e.customWidgetType,id:e.id},e.title!==void 0&&{title:e.title}),e.description!==void 0&&{description:e.description}),e.dataSource!==void 0&&{dataSource:oe(e.dataSource)}),e.config!==void 0&&{config:e.config}),e.dataOptions!==void 0&&{dataOptions:e.dataOptions}),e.styleOptions!==void 0&&{styleOptions:e.styleOptions}),e.customOptions!==void 0&&{customOptions:e.customOptions}),n&&n.length>0&&{filters:n}),s&&s.length>0&&{highlights:s})}}default:return{success:!1,errors:[{path:"widgetType",input:e,message:`Unknown widgetType: ${String(t)}`}]}}},ws=e=>{const{data:t,context:r}=e,n=[],s=[];Array.isArray(t.widgets)?t.widgets.forEach((a,u)=>{const c=er({data:a,context:r});if(!c.success){n.push(...Gt(c.errors,Kt(u)));return}s.push(c.data)}):n.push({path:"widgets",input:t.widgets,message:"Invalid dashboard JSON. Expected widgets to be an array."});let i=null;if(t.filters&&t.filters.length>0){const a=te(r.tables);i=A(()=>re({data:t.filters,context:{dataSource:r.dataSource,schemaIndex:a}}),n)}return n.length>0?{success:!1,errors:n}:{success:!0,data:f(f(f(f(f(f(f(f({widgets:s},t.id!==void 0&&{id:t.id}),t.title!==void 0&&{title:t.title}),i!==null&&{filters:i}),t.layoutOptions!==void 0&&{layoutOptions:t.layoutOptions}),t.config!==void 0&&{config:t.config}),t.defaultDataSource!==void 0&&{defaultDataSource:t.defaultDataSource}),t.styleOptions!==void 0&&{styleOptions:t.styleOptions}),t.widgetsOptions!==void 0&&{widgetsOptions:t.widgetsOptions})}},Cs=e=>{const t=[],r=[];e.widgets.forEach((o,a)=>{const u=tr(o);if(!u.success){t.push(...Gt(u.errors,Kt(a)));return}r.push(u.data)});let n;if(e.filters){const o=A(()=>ne(e.filters),t);n=o!=null?o:void 0}if(t.length>0)return{success:!1,errors:t};const s=e.widgetsOptions!==void 0?Vn(e.widgetsOptions):void 0,i=f(f(f(f(f(f(f(f({widgets:r},e.id!==void 0&&{id:e.id}),e.title!==void 0&&{title:e.title}),n&&n.length>0&&{filters:n}),e.layoutOptions!==void 0&&{layoutOptions:e.layoutOptions}),e.config!==void 0&&{config:e.config}),e.defaultDataSource!==void 0&&{defaultDataSource:oe(e.defaultDataSource)}),e.styleOptions!==void 0&&{styleOptions:e.styleOptions}),s!==void 0&&{widgetsOptions:s});return{success:!0,data:_(i)}};function Os(e){const{filters:t,relations:r}=l.getFilterListAndRelationsJaql(e.filters||[]);return{dataSource:e.dataSource,dimensions:e.dimensions,measures:e.measures,filters:t,filterRelations:r,highlights:e.highlights}}function qs(e,t,r=!1){const n=Os(e),s=l.prepareQueryParams(n,t);return l.getJaqlQueryPayload(s,r)}function ce(e){const t=e.trim();return t.startsWith(S)?t.slice(S.length):t}function Q(e){var n;const t=me(e.function);if(t){const s=t.findIndex(i=>i.isName);if(s>=0){const i=e.args[s];if(typeof i=="string"&&i.length>0)return i}}const r=e.args[0];return typeof r=="string"?ce(r):w(r)?Q(r):(n=e.function.split(".").pop())!=null?n:e.function}const at="filterFactory.logic.";function ut(e){var r;if(e.function.startsWith(at))return e.function.slice(at.length);const t=e.args[0];return typeof t=="string"?ce(t):w(t)?Q(t):(r=e.function.split(".").pop())!=null?r:e.function}const $s="measureFactory.",Ds="filterFactory.",Ns=e=>e.function.startsWith($s),xs=e=>e.function.startsWith(Ds);function vs(e,t){var n;const r=(n=t==null?void 0:t.role)!=null?n:"filter";return typeof e=="string"?{name:ce(e),type:"dimension"}:$t(e)?{name:ce(e.column),type:"dimension"}:Dt(e)?{name:Q(e.column),type:"measure"}:w(e)?Ns(e)?{name:Q(e),type:"measure"}:xs(e)?{name:ut(e),type:r}:(t==null?void 0:t.role)!==void 0?{name:ut(e),type:r}:{name:Q(e),type:"measure"}:null}exports.EMPTY_EXPANDED_QUERY_MODEL=k.EMPTY_EXPANDED_QUERY_MODEL;exports.EMPTY_SIMPLE_QUERY_MODEL=k.EMPTY_SIMPLE_QUERY_MODEL;exports.isByIdDashboardCodeParams=k.isByIdDashboardCodeParams;exports.isByIdWidgetCodeParams=k.isByIdWidgetCodeParams;exports.isClientSideDashboardCodeParams=k.isClientSideDashboardCodeParams;exports.isClientSideWidgetCodeParams=k.isClientSideWidgetCodeParams;exports.CustomSuperJSON=Wr;exports.getQueryElementSummary=vs;exports.translateChartFromJSON=Qt;exports.translateChartToJSON=Ht;exports.translateDashboardFromJSON=ws;exports.translateDashboardToJSON=Cs;exports.translatePivotTableFromJSON=Xt;exports.translatePivotTableToJSON=Zt;exports.translateQueryFromJSON=jn;exports.translateQueryToJSON=Yn;exports.translateQueryToJaql=qs;exports.translateWidgetFromJSON=er;exports.translateWidgetToJSON=tr;