react-semaphor 0.1.514 → 0.1.516

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 (228) hide show
  1. package/dist/analytics-protocol/index.cjs +1 -1
  2. package/dist/analytics-protocol/index.js +226 -225
  3. package/dist/brand-studio/index.cjs +1 -1
  4. package/dist/brand-studio/index.js +4 -4
  5. package/dist/briefings/index.cjs +1 -1
  6. package/dist/briefings/index.js +8 -8
  7. package/dist/chunks/{calculated-field-identity-BiTGmnST.cjs → calculated-field-identity-5bg9oHTw.cjs} +1 -1
  8. package/dist/chunks/{calculated-field-identity-DnRd4YIY.js → calculated-field-identity-DzJBs2J8.js} +4 -4
  9. package/dist/chunks/{card-config-utils-B2cDWQqB.js → card-config-utils-Cxnq2R6z.js} +14 -14
  10. package/dist/chunks/{card-config-utils-CMO4_zVs.cjs → card-config-utils-z86y6tSq.cjs} +1 -1
  11. package/dist/chunks/column-bands-CU0byntA.cjs +1 -0
  12. package/dist/chunks/column-bands-RdM-kjDe.js +47 -0
  13. package/dist/chunks/{dashboard-briefing-launcher-e3s3MuSs.js → dashboard-briefing-launcher-BCEHJ_eD.js} +15 -12
  14. package/dist/chunks/{dashboard-briefing-launcher-BzPD50QD.cjs → dashboard-briefing-launcher-CjZ4aE34.cjs} +2 -2
  15. package/dist/chunks/{dashboard-controls-DAOABnks.js → dashboard-controls-DFfit5KH.js} +12 -12
  16. package/dist/chunks/{dashboard-controls-DQBfOqmC.cjs → dashboard-controls-f9aJ70Zu.cjs} +1 -1
  17. package/dist/chunks/{dashboard-date-comparison-definition-D7Bl-YAl.js → dashboard-date-comparison-definition-BqNhECUr.js} +6 -6
  18. package/dist/chunks/{dashboard-date-comparison-definition-C_w-GO_5.cjs → dashboard-date-comparison-definition-Y6JZwpcr.cjs} +1 -1
  19. package/dist/chunks/{dashboard-json-S5Eq2GAg.js → dashboard-json-DVtcA02f.js} +7 -7
  20. package/dist/chunks/{dashboard-json-1jZycd5h.cjs → dashboard-json-deqQC-UR.cjs} +1 -1
  21. package/dist/chunks/edit-dashboard-visual-DK6lSC_p.cjs +172 -0
  22. package/dist/chunks/{edit-dashboard-visual-Bkm0ciHG.js → edit-dashboard-visual-lJ6rDH3w.js} +4553 -4542
  23. package/dist/chunks/{editor-action-buttons-Bvv16QA-.js → editor-action-buttons-Bnxxa439.js} +7 -7
  24. package/dist/chunks/{editor-action-buttons-B2NCSsDw.cjs → editor-action-buttons-CmDaQbPN.cjs} +1 -1
  25. package/dist/chunks/{field-aggregations-CzuQKtqx.js → field-aggregations-Dl2A3rbV.js} +461 -358
  26. package/dist/chunks/field-aggregations-pH_3kymD.cjs +1 -0
  27. package/dist/chunks/{field-dependencies-DIab72rQ.cjs → field-dependencies-EB485TdB.cjs} +1 -1
  28. package/dist/chunks/{field-dependencies-DXW4jtvJ.js → field-dependencies-v-lJNzC7.js} +1 -1
  29. package/dist/chunks/{index-nhUr9xBz.js → index-BVVl2JDK.js} +57955 -54696
  30. package/dist/chunks/{index-CACdoqu3.js → index-C8w91oj4.js} +61 -51
  31. package/dist/chunks/index-Cw2ypaFl.cjs +1 -0
  32. package/dist/chunks/index-DfqMtR9S.cjs +4 -0
  33. package/dist/chunks/index-UNKSfi7s.cjs +1434 -0
  34. package/dist/chunks/{index-CnGVjyF8.js → index-ylOpKRDu.js} +877 -849
  35. package/dist/chunks/{matrix-analytical-definition-Ct5Tu8np.cjs → matrix-analytical-definition-BWd159lN.cjs} +1 -1
  36. package/dist/chunks/{matrix-analytical-definition-BDAK2aEi.js → matrix-analytical-definition-BimC4XIV.js} +1 -1
  37. package/dist/chunks/{matrix-card-U4c72doZ.cjs → matrix-card-C2RjEYZ8.cjs} +1 -1
  38. package/dist/chunks/{matrix-card-DOIeTmjh.js → matrix-card-CIlz0Dnp.js} +2 -2
  39. package/dist/chunks/{matrix-control-sources-FjxGIbqk.cjs → matrix-control-sources-BvEJF7d3.cjs} +1 -1
  40. package/dist/chunks/{matrix-control-sources-BxKH2yu2.js → matrix-control-sources-KbZe1gj_.js} +51 -51
  41. package/dist/chunks/{matrix-definition-CBJW_4ii.cjs → matrix-definition-DanUT11P.cjs} +1 -1
  42. package/dist/chunks/{matrix-definition-I9rHB9zN.js → matrix-definition-E5gXXSTZ.js} +1 -1
  43. package/dist/chunks/matrix-formatter-BJTO8ky9.cjs +1 -0
  44. package/dist/chunks/matrix-formatter-CCXNRt3s.js +341 -0
  45. package/dist/chunks/{matrix-member-presentation-DO1VSqfh.js → matrix-member-presentation-Bw7-JCrr.js} +64 -64
  46. package/dist/chunks/matrix-member-presentation-DvXDEo0U.cjs +1 -0
  47. package/dist/chunks/{matrix-operation-contract-DoiWTUbT.cjs → matrix-operation-contract-0RxoU_M3.cjs} +1 -1
  48. package/dist/chunks/{matrix-operation-contract-D0HfzwZg.js → matrix-operation-contract-D32U2CSw.js} +19 -19
  49. package/dist/chunks/{metric-comparison-Dqc7_tnW.js → metric-comparison-BphoJ9bq.js} +1 -1
  50. package/dist/chunks/{metric-comparison-DBQ3EJTz.cjs → metric-comparison-CUmltzpz.cjs} +1 -1
  51. package/dist/chunks/pivot-header-presentation-BSZhB1g-.js +661 -0
  52. package/dist/chunks/pivot-header-presentation-EoUS5ze5.cjs +5 -0
  53. package/dist/chunks/{pivot-result-identity-8M-bZrw9.js → pivot-result-identity-BzUQiCEV.js} +4 -4
  54. package/dist/chunks/{pivot-result-identity-uTiylUNr.cjs → pivot-result-identity-gquWljbd.cjs} +1 -1
  55. package/dist/chunks/pivot-result-lifecycle-gl9cBfB-.cjs +1 -0
  56. package/dist/chunks/{pivot-result-lifecycle-BeOpjAhg.js → pivot-result-lifecycle-kRhiJkzg.js} +208 -149
  57. package/dist/chunks/{raw-temporal-DrmCX9Wq.js → raw-temporal-BqOfk-xN.js} +471 -361
  58. package/dist/chunks/{raw-temporal-contract-CFLGwTiI.js → raw-temporal-contract-BQZIJ1fn.js} +1 -1
  59. package/dist/chunks/{raw-temporal-contract-DECbTuzA.cjs → raw-temporal-contract-CklMVG_1.cjs} +1 -1
  60. package/dist/chunks/raw-temporal-eJXecCyJ.cjs +1 -0
  61. package/dist/chunks/{report-preferences-dialog-B2fzQH1T.js → report-preferences-dialog-CHXPEl7v.js} +6 -6
  62. package/dist/chunks/{report-preferences-dialog-DcLkVqni.cjs → report-preferences-dialog-Cto0vDwI.cjs} +1 -1
  63. package/dist/chunks/{report-runtime-context-Cs65Mrxj.js → report-runtime-context-CxIoGyNM.js} +1 -1
  64. package/dist/chunks/{report-runtime-context-DzvHBPxl.cjs → report-runtime-context-CzSrCBsu.cjs} +1 -1
  65. package/dist/chunks/{selection-reducer-BIiQXbGM.js → selection-reducer-CvCBQbl2.js} +1 -1
  66. package/dist/chunks/{selection-reducer-CGKKsaPa.cjs → selection-reducer-Kl22OzIk.cjs} +1 -1
  67. package/dist/chunks/{semantic-format-BZxJLKvw.js → semantic-format-DwqGYx4V.js} +25 -31
  68. package/dist/chunks/semantic-format-mVI32OJH.cjs +1 -0
  69. package/dist/chunks/{source-entity-resolution-D7vnmDwm.js → source-entity-resolution-Bzefiive.js} +7 -7
  70. package/dist/chunks/{source-entity-resolution-CjbgnwyX.cjs → source-entity-resolution-R46X34SE.cjs} +1 -1
  71. package/dist/chunks/switch-DNbWXEOP.cjs +134 -0
  72. package/dist/chunks/{switch-QfKb0Iwe.js → switch-DNv-hVmt.js} +8260 -7659
  73. package/dist/chunks/{temporal-bucket-B9hMwemw.js → temporal-bucket-DlFuhCnT.js} +6 -6
  74. package/dist/chunks/{temporal-bucket-contract-IWDgyTMw.js → temporal-bucket-contract-DTLDRzgV.js} +1 -1
  75. package/dist/chunks/{temporal-bucket-contract-ZctiyXYk.cjs → temporal-bucket-contract-nTv6gvX5.cjs} +1 -1
  76. package/dist/chunks/{token-types-Dl0hcKBX.js → token-types-BC6RcUY8.js} +1 -1
  77. package/dist/chunks/{token-types-Ahh5u4iT.cjs → token-types-aWrzwonf.cjs} +1 -1
  78. package/dist/chunks/{update-policy-COjFudhl.cjs → update-policy-DRDLWe7Y.cjs} +1 -1
  79. package/dist/chunks/{update-policy-BeQqjupC.js → update-policy-DhAUtiC8.js} +2 -2
  80. package/dist/chunks/{validators-CkHsAvwB.js → validators-CsdOtZI6.js} +411 -397
  81. package/dist/chunks/validators-DFeDcdpA.cjs +1 -0
  82. package/dist/dashboard/index.cjs +1 -1
  83. package/dist/dashboard/index.js +1 -1
  84. package/dist/dashboard-authoring/index.cjs +3 -3
  85. package/dist/dashboard-authoring/index.js +233 -227
  86. package/dist/data-app-builder/index.cjs +1 -1
  87. package/dist/data-app-builder/index.js +3 -3
  88. package/dist/data-app-codegen/index.cjs +1 -1
  89. package/dist/data-app-codegen/index.js +2 -2
  90. package/dist/data-app-codegen-node/index.cjs +1 -1
  91. package/dist/data-app-codegen-node/index.js +3 -3
  92. package/dist/data-app-sdk/index.cjs +1 -1
  93. package/dist/data-app-sdk/index.js +5 -5
  94. package/dist/data-app-sdk-adapters/index.cjs +1 -1
  95. package/dist/data-app-sdk-adapters/index.js +2 -2
  96. package/dist/data-app-sdk-validation/index.cjs +1 -1
  97. package/dist/data-app-sdk-validation/index.js +5 -5
  98. package/dist/format-utils/index.cjs +3 -3
  99. package/dist/format-utils/index.js +291 -397
  100. package/dist/index.cjs +1 -1
  101. package/dist/index.js +15 -15
  102. package/dist/pdf-table-layout/index.cjs +1 -0
  103. package/dist/pdf-table-layout/index.js +993 -0
  104. package/dist/report-runtime-context/index.cjs +1 -1
  105. package/dist/report-runtime-context/index.js +2 -2
  106. package/dist/style.css +1 -1
  107. package/dist/surfboard/index.cjs +1 -1
  108. package/dist/surfboard/index.js +2 -2
  109. package/dist/types/briefings/index.d.ts +1 -1
  110. package/dist/types/components/document-sheet/document-input-bar.d.ts +1 -3
  111. package/dist/types/components/document-sheet/document-insert-picker.d.ts +37 -0
  112. package/dist/types/components/document-sheet/document-kpi-section.d.ts +17 -0
  113. package/dist/types/components/document-sheet/document-matrix-layout-context.d.ts +10 -0
  114. package/dist/types/components/document-sheet/document-matrix-section.d.ts +27 -0
  115. package/dist/types/components/document-sheet/document-measure-layer.d.ts +45 -0
  116. package/dist/types/components/document-sheet/document-outline.d.ts +7 -1
  117. package/dist/types/components/document-sheet/document-page-navigation.d.ts +22 -0
  118. package/dist/types/components/document-sheet/document-page.d.ts +9 -5
  119. package/dist/types/components/document-sheet/document-panel/document-side-panel.d.ts +36 -0
  120. package/dist/types/components/document-sheet/document-panel/inputs-panel.d.ts +9 -0
  121. package/dist/types/components/document-sheet/document-panel/page-panel.d.ts +5 -0
  122. package/dist/types/components/document-sheet/document-panel/panel-controls.d.ts +14 -0
  123. package/dist/types/components/document-sheet/document-panel/region-panels.d.ts +11 -0
  124. package/dist/types/components/document-sheet/document-panel/section-panel.d.ts +25 -0
  125. package/dist/types/components/document-sheet/document-section-print-boundary.d.ts +9 -0
  126. package/dist/types/components/document-sheet/document-table-chrome.d.ts +22 -0
  127. package/dist/types/components/document-sheet/document-table-section.d.ts +3 -7
  128. package/dist/types/components/document-sheet/document-text-preview-context.d.ts +8 -0
  129. package/dist/types/components/document-sheet/use-first-fitting-variant.d.ts +18 -0
  130. package/dist/types/components/editor/editor-main/dashboard-variable-node.d.ts +12 -2
  131. package/dist/types/components/explorer/chart-configuration/matrix-authoring-controls.d.ts +7 -2
  132. package/dist/types/components/text-variables/variable-chip-plugin.d.ts +23 -0
  133. package/dist/types/components/text-variables/variable-chip.d.ts +18 -0
  134. package/dist/types/components/text-variables/variable-picker.d.ts +27 -0
  135. package/dist/types/components/visual/aggregated-table/utils/metric-format-resolver.d.ts +3 -3
  136. package/dist/types/components/visual/data-table/types/data-table.d.ts +4 -1
  137. package/dist/types/components/visual/pivot-table/utils/pivot-metric-formatting.d.ts +2 -2
  138. package/dist/types/components/visual/settings/table-presentation-settings.d.ts +27 -1
  139. package/dist/types/index.cjs +1 -1
  140. package/dist/types/index.js +5 -5
  141. package/dist/types/lib/dashboard-inputs/text-variable-options.d.ts +15 -0
  142. package/dist/types/lib/document/document-canvas-actions.d.ts +22 -0
  143. package/dist/types/lib/document/document-edits.d.ts +119 -0
  144. package/dist/types/lib/document/document-kpi-figure.d.ts +27 -0
  145. package/dist/types/lib/document/document-kpi-layout.d.ts +29 -0
  146. package/dist/types/lib/document/document-kpi-section-edits.d.ts +15 -0
  147. package/dist/types/lib/document/document-matrix-bands.d.ts +66 -0
  148. package/dist/types/lib/document/document-matrix-print.d.ts +11 -0
  149. package/dist/types/lib/document/document-pagination.d.ts +56 -3
  150. package/dist/types/lib/document/document-panel-target.d.ts +19 -0
  151. package/dist/types/lib/document/document-section-editor.d.ts +8 -7
  152. package/dist/types/lib/document/document-section-kinds.d.ts +49 -0
  153. package/dist/types/lib/document/document-section-query-options.d.ts +25 -0
  154. package/dist/types/lib/document/document-section-render-state.d.ts +26 -0
  155. package/dist/types/lib/document/document-section-utils.d.ts +11 -4
  156. package/dist/types/lib/document/document-table-dom.d.ts +4 -6
  157. package/dist/types/lib/document/document-table-pagination-model.d.ts +0 -5
  158. package/dist/types/lib/document/document-table-print-model.d.ts +4 -3
  159. package/dist/types/lib/document/document-table-style.d.ts +15 -4
  160. package/dist/types/lib/document/document-table-surface.d.ts +15 -0
  161. package/dist/types/lib/document/document-variables.d.ts +40 -6
  162. package/dist/types/lib/document/use-document-section-data.d.ts +39 -0
  163. package/dist/types/lib/document/use-measured-document-table-layout.d.ts +50 -0
  164. package/dist/types/lib/formatters/kpi-result-values.d.ts +20 -0
  165. package/dist/types/lib/formatters/metric-formatting.d.ts +3 -3
  166. package/dist/types/lib/hooks/query-context/use-dashboard-card-execution-snapshot.d.ts +8 -2
  167. package/dist/types/lib/hooks/use-dashboard-frame-query.d.ts +6 -0
  168. package/dist/types/lib/hooks/use-dashboard-kpi-actions.d.ts +1 -1
  169. package/dist/types/lib/hooks/use-document-section-editor.d.ts +2 -2
  170. package/dist/types/lib/hooks/use-document-section-session.d.ts +36 -0
  171. package/dist/types/lib/hooks/use-editor-preview.d.ts +17 -0
  172. package/dist/types/lib/hooks/use-is-editing-card.d.ts +7 -0
  173. package/dist/types/lib/matrix-table/matrix-card-adapter.d.ts +2 -0
  174. package/dist/types/lib/matrix-table/matrix-card-draft.d.ts +2 -0
  175. package/dist/types/lib/matrix-table/matrix-delivery.d.ts +4 -0
  176. package/dist/types/lib/matrix-table/matrix-layout-read.d.ts +68 -0
  177. package/dist/types/lib/query-context/build-dashboard-execution-snapshot.d.ts +8 -1
  178. package/dist/types/lib/query-context/build-dashboard-frame-base-query-contexts.d.ts +4 -2
  179. package/dist/types/lib/query-context/card-execution.d.ts +30 -0
  180. package/dist/types/lib/query-context/document-section-card-query.d.ts +37 -0
  181. package/dist/types/lib/stores/dashboard-store.d.ts +12 -8
  182. package/dist/types/lib/stores/editor-store.d.ts +2 -0
  183. package/dist/types/lib/table-formatting/table-presentation-fields.d.ts +1 -0
  184. package/dist/types/lib/text-variables/text-variable-types.d.ts +39 -0
  185. package/dist/types/lib/types/common-types.d.ts +34 -1
  186. package/dist/types/lib/utils/card-definition.d.ts +2 -0
  187. package/dist/types/lib/utils/card-utils.d.ts +13 -6
  188. package/dist/types/lib/utils/date-timezone-utils.d.ts +26 -4
  189. package/dist/types/pdf-table-layout.d.ts +2 -0
  190. package/dist/types/shared/analytics-protocol/index.d.ts +1 -1
  191. package/dist/types/shared/analytics-protocol/matrix-definition-contract.d.ts +45 -0
  192. package/dist/types/shared/analytics-protocol/matrix-member-presentation.d.ts +4 -0
  193. package/dist/types/shared/dashboard-authoring/document-section-cards.d.ts +56 -0
  194. package/dist/types/shared/dashboard-authoring/index.d.ts +1 -0
  195. package/dist/types/shared/dashboard-authoring/matrix-delivery.d.ts +36 -1
  196. package/dist/types/shared/format-utils/formatters/duration-formatter.d.ts +4 -1
  197. package/dist/types/shared/format-utils/formatters/index.d.ts +2 -2
  198. package/dist/types/shared/format-utils/formatters/matrix-formatter.d.ts +5 -0
  199. package/dist/types/shared/format-utils/formatters/number-formatter.d.ts +8 -2
  200. package/dist/types/shared/format-utils/index.d.ts +1 -0
  201. package/dist/types/shared/format-utils/matrix-export-presentation.d.ts +690 -1
  202. package/dist/types/shared/format-utils/matrix-print.d.ts +38 -0
  203. package/dist/types/shared/format-utils/pdf-table-layout/column-bands.d.ts +55 -0
  204. package/dist/types/shared/format-utils/pdf-table-layout/index.d.ts +6 -0
  205. package/dist/types/shared/format-utils/pdf-table-layout/page-size.d.ts +7 -0
  206. package/dist/types/shared/format-utils/pdf-table-layout/table-column-semantics.d.ts +106 -0
  207. package/dist/types/shared/format-utils/pdf-table-layout/table-column-widths.d.ts +13 -0
  208. package/dist/types/shared/format-utils/pdf-table-layout/table-page-geometry.d.ts +19 -0
  209. package/dist/types/shared/format-utils/pdf-table-layout/wide-table-layout.d.ts +46 -0
  210. package/dist/types/shared/format-utils/presentation-execution.d.ts +17 -2
  211. package/dist/types/shared/format-utils/table-structure.d.ts +9 -0
  212. package/dist/types/shared/format-utils/types/format-types.d.ts +16 -1
  213. package/package.json +6 -1
  214. package/dist/chunks/edit-dashboard-visual-BwJ2Eljw.cjs +0 -172
  215. package/dist/chunks/field-aggregations-jSi77h9Z.cjs +0 -1
  216. package/dist/chunks/index-DhlVxvyI.cjs +0 -4
  217. package/dist/chunks/index-DrOFJOCq.cjs +0 -1424
  218. package/dist/chunks/index-F25jnH0p.cjs +0 -1
  219. package/dist/chunks/matrix-formatter-BLunke3R.js +0 -424
  220. package/dist/chunks/matrix-formatter-CveLJo6S.cjs +0 -1
  221. package/dist/chunks/matrix-member-presentation-CFHjdrxT.cjs +0 -1
  222. package/dist/chunks/pivot-header-presentation-Cxz8-06f.cjs +0 -5
  223. package/dist/chunks/pivot-header-presentation-Dm9dUQsl.js +0 -415
  224. package/dist/chunks/pivot-result-lifecycle-BiERyXnS.cjs +0 -1
  225. package/dist/chunks/raw-temporal-BUeTpG76.cjs +0 -1
  226. package/dist/chunks/semantic-format-BzH69TRq.cjs +0 -1
  227. package/dist/chunks/switch--Re1K566.cjs +0 -134
  228. package/dist/chunks/validators-DVYAnnX0.cjs +0 -1
@@ -5,7 +5,7 @@ const Ot = [
5
5
  "population_required",
6
6
  "ambiguous_relationship"
7
7
  ];
8
- function ta(e) {
8
+ function ia(e) {
9
9
  return Ot.includes(
10
10
  e
11
11
  );
@@ -20,7 +20,7 @@ const De = 200, z = [
20
20
  "quarter",
21
21
  "year"
22
22
  ];
23
- function ia(e) {
23
+ function na(e) {
24
24
  return typeof e == "string" && z.includes(e);
25
25
  }
26
26
  const Yt = [
@@ -30,17 +30,17 @@ const Yt = [
30
30
  "quarter_long",
31
31
  "fiscal_quarter_short",
32
32
  "fiscal_year"
33
- ], na = {
33
+ ], aa = {
34
34
  invalidMetadata: "invalid_raw_temporal_metadata"
35
35
  };
36
36
  function Pt(e) {
37
37
  return e === "second" || e === "minute" || e === "hour" ? "datetime" : "date";
38
38
  }
39
- const aa = {
39
+ const oa = {
40
40
  missingMetadata: "missing_temporal_bucket_metadata",
41
41
  invalidMetadata: "invalid_temporal_bucket_metadata",
42
42
  invalidValue: "invalid_temporal_bucket_value"
43
- }, oa = "__auto_count__";
43
+ }, sa = "__auto_count__";
44
44
  function Bt(e) {
45
45
  return typeof e == "string" || typeof e == "number" && Number.isFinite(e) || typeof e == "boolean";
46
46
  }
@@ -252,7 +252,7 @@ const _e = i.object({
252
252
  ]).optional(),
253
253
  format: he.optional(),
254
254
  tags: i.array(i.string()).optional()
255
- }).passthrough(), et = Je, sa = Ze.and(
255
+ }).passthrough(), et = Je, ra = Ze.and(
256
256
  i.object({
257
257
  derivedField: et.optional()
258
258
  }).passthrough()
@@ -274,7 +274,7 @@ const _e = i.object({
274
274
  Xt,
275
275
  Zt,
276
276
  Jt
277
- ]), ra = i.object({
277
+ ]), la = i.object({
278
278
  key: i.string().optional(),
279
279
  name: i.string(),
280
280
  label: i.string().optional(),
@@ -328,10 +328,10 @@ const _e = i.object({
328
328
  message: `${e.rawTemporal.valueKind} raw temporal values require dataType ${n}.`
329
329
  });
330
330
  }
331
- }), la = i.object({
331
+ }), da = i.object({
332
332
  records: O,
333
333
  columns: i.array(j).optional()
334
- }).passthrough(), da = i.object({
334
+ }).passthrough(), ua = i.object({
335
335
  records: O,
336
336
  columns: i.array(j)
337
337
  }).passthrough(), tt = i.object({
@@ -343,16 +343,16 @@ const _e = i.object({
343
343
  validDateCandidates: i.array(i.string()).optional(),
344
344
  validDimensionCandidates: i.array(i.string()).optional(),
345
345
  recommendedNextStep: i.string()
346
- }).passthrough(), Ne = i.object({
346
+ }).passthrough(), Ee = i.object({
347
347
  code: i.string(),
348
348
  message: i.string(),
349
349
  path: i.string().optional(),
350
350
  fieldRole: i.enum(["measure", "date", "dimension", "input", "source", "sql"]).optional(),
351
351
  repairHint: tt.optional()
352
- }).passthrough(), ua = i.object({
352
+ }).passthrough(), ca = i.object({
353
353
  ok: i.boolean(),
354
- errors: i.array(Ne),
355
- warnings: i.array(Ne),
354
+ errors: i.array(Ee),
355
+ warnings: i.array(Ee),
356
356
  repairHints: i.array(tt)
357
357
  }).passthrough(), ti = i.object({
358
358
  page: i.number(),
@@ -369,7 +369,7 @@ const _e = i.object({
369
369
  rowLimitExceeded: i.boolean().optional(),
370
370
  limit: i.number().optional(),
371
371
  pagination: ti.optional()
372
- }, ca = i.object({
372
+ }, pa = i.object({
373
373
  ...Z,
374
374
  kind: i.literal("metric"),
375
375
  primaryValue: te,
@@ -382,7 +382,7 @@ const _e = i.object({
382
382
  deltaPercent: i.union([i.number(), i.null()]).optional()
383
383
  }).passthrough().optional(),
384
384
  records: O.optional()
385
- }).passthrough(), pa = i.object({
385
+ }).passthrough(), ma = i.object({
386
386
  ...Z,
387
387
  kind: i.literal("records"),
388
388
  columns: i.array(j),
@@ -409,7 +409,7 @@ const _e = i.object({
409
409
  }), ni = i.object({
410
410
  complete: i.boolean(),
411
411
  reason: i.enum(["unsupported", "truncated"]).optional()
412
- }), ma = i.object({
412
+ }), fa = i.object({
413
413
  ...Z,
414
414
  kind: i.literal("inputOptions"),
415
415
  dependencyOutcomes: i.array(ii).optional(),
@@ -425,7 +425,7 @@ const _e = i.object({
425
425
  ["value"]
426
426
  )
427
427
  )
428
- }).passthrough(), fa = i.object({
428
+ }).passthrough(), ga = i.object({
429
429
  ...Z,
430
430
  kind: i.literal("sql"),
431
431
  columns: i.array(j),
@@ -439,7 +439,7 @@ const _e = i.object({
439
439
  function r(e, t, n) {
440
440
  return n ? { code: e, message: t, path: n } : { code: e, message: t };
441
441
  }
442
- function p(e) {
442
+ function m(e) {
443
443
  return typeof e == "string" && e.trim().length > 0;
444
444
  }
445
445
  function ai(e) {
@@ -503,13 +503,13 @@ function be(e, t, n) {
503
503
  return;
504
504
  }
505
505
  if (e.kind === "semantic") {
506
- p(e.domainId) || n.push(
506
+ m(e.domainId) || n.push(
507
507
  r(
508
508
  "missing_semantic_domain",
509
509
  "Semantic source needs a domainId.",
510
510
  `${t}.domainId`
511
511
  )
512
- ), p(e.datasetName) || n.push(
512
+ ), m(e.datasetName) || n.push(
513
513
  r(
514
514
  "missing_dataset_name",
515
515
  "Semantic source needs a datasetName.",
@@ -519,13 +519,13 @@ function be(e, t, n) {
519
519
  return;
520
520
  }
521
521
  if (e.kind === "physical") {
522
- p(e.connectionId) || n.push(
522
+ m(e.connectionId) || n.push(
523
523
  r(
524
524
  "missing_connection_id",
525
525
  "Physical source needs a connectionId.",
526
526
  `${t}.connectionId`
527
527
  )
528
- ), p(e.tableName) || n.push(
528
+ ), m(e.tableName) || n.push(
529
529
  r(
530
530
  "missing_table_name",
531
531
  "Physical source needs a tableName.",
@@ -535,7 +535,7 @@ function be(e, t, n) {
535
535
  return;
536
536
  }
537
537
  if (e.kind === "sql") {
538
- p(e.connectionId) || n.push(
538
+ m(e.connectionId) || n.push(
539
539
  r(
540
540
  "missing_connection_id",
541
541
  "SQL source needs a connectionId.",
@@ -548,14 +548,14 @@ function be(e, t, n) {
548
548
  r("invalid_source_kind", "Source kind is not supported.", t)
549
549
  );
550
550
  }
551
- function b(e, t, n, o = {}) {
551
+ function y(e, t, n, o = {}) {
552
552
  if (!e || !f(e)) {
553
553
  o.required && n.push(
554
554
  r("missing_field_ref", "Field reference needs a name.", t)
555
555
  );
556
556
  return;
557
557
  }
558
- p(e.name) || n.push(
558
+ m(e.name) || n.push(
559
559
  r(
560
560
  "missing_field_ref",
561
561
  "Field reference needs a name.",
@@ -714,7 +714,7 @@ function gi(e, t, n) {
714
714
  return;
715
715
  }
716
716
  if (e.kind === "field") {
717
- b(e.field, `${t}.field`, n, { required: !0 }), ye(e.aggregate, `${t}.aggregate`, n);
717
+ y(e.field, `${t}.field`, n, { required: !0 }), ye(e.aggregate, `${t}.aggregate`, n);
718
718
  return;
719
719
  }
720
720
  n.push(
@@ -740,13 +740,13 @@ function ve(e) {
740
740
  "Derived field kind must be derived_field.",
741
741
  "kind"
742
742
  )
743
- ), p(e.name) || t.push(
743
+ ), m(e.name) || t.push(
744
744
  r(
745
745
  "invalid_derived_field_name",
746
746
  "Derived field needs a name.",
747
747
  "name"
748
748
  )
749
- ), p(e.label) || t.push(
749
+ ), m(e.label) || t.push(
750
750
  r(
751
751
  "invalid_derived_field_label",
752
752
  "Derived field needs a label.",
@@ -808,7 +808,7 @@ function ve(e) {
808
808
  "Derived field aggregationStrategy is not supported.",
809
809
  "aggregationStrategy"
810
810
  )
811
- ), p(e.expression) || t.push(
811
+ ), m(e.expression) || t.push(
812
812
  r(
813
813
  "invalid_derived_field_expression",
814
814
  "Derived field needs a named-token expression.",
@@ -827,7 +827,7 @@ function ve(e) {
827
827
  "inputs"
828
828
  )
829
829
  ) : Object.entries(e.inputs).forEach(([o, a]) => {
830
- if (!p(o)) {
830
+ if (!m(o)) {
831
831
  t.push(
832
832
  r(
833
833
  "invalid_derived_field_input_name",
@@ -842,11 +842,11 @@ function ve(e) {
842
842
  `inputs.${o}`,
843
843
  t
844
844
  );
845
- }), p(e.expression) && f(e.inputs)) {
845
+ }), m(e.expression) && f(e.inputs)) {
846
846
  const o = ai(
847
847
  e.expression
848
848
  ), a = new Set(o), s = Object.keys(e.inputs).filter(
849
- (l) => p(l)
849
+ (l) => m(l)
850
850
  );
851
851
  o.forEach((l) => {
852
852
  Object.prototype.hasOwnProperty.call(e.inputs, l) || t.push(
@@ -873,7 +873,7 @@ function ve(e) {
873
873
  "Derived field computation metadata cannot own temporal bucket presentation; declare grain and format on the grouped field.",
874
874
  "format"
875
875
  )
876
- ) : nt(n, "format", t), e.tags !== void 0 && (!Array.isArray(e.tags) || e.tags.some((o) => !p(o))) && t.push(
876
+ ) : nt(n, "format", t), e.tags !== void 0 && (!Array.isArray(e.tags) || e.tags.some((o) => !m(o))) && t.push(
877
877
  r(
878
878
  "invalid_derived_field_tags",
879
879
  "Derived field tags must be non-empty strings.",
@@ -892,7 +892,7 @@ const M = i.string().min(1).refine((e) => e.trim().length > 0, "Must not be blan
892
892
  _i.strict(),
893
893
  bi.strict(),
894
894
  yi.strict()
895
- ]), Ee = i.union([
895
+ ]), Ne = i.union([
896
896
  at,
897
897
  X
898
898
  ]), Se = i.union([
@@ -1025,10 +1025,10 @@ function pt(e, t = {}) {
1025
1025
  e.dataType || e.data_type
1026
1026
  ) === "number" && (!t.excludeIdentifiers || !$e(e));
1027
1027
  }
1028
- function ga(e) {
1028
+ function ha(e) {
1029
1029
  return !pt(e) && !dt(e);
1030
1030
  }
1031
- function ha(e) {
1031
+ function _a(e) {
1032
1032
  const t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set();
1033
1033
  for (const a of e) {
1034
1034
  if (ut(a))
@@ -1094,9 +1094,9 @@ function x(e) {
1094
1094
  const l = o + a, d = o.length + s;
1095
1095
  if (Math.max(l.length, d) + Math.max(0, -d) + 3 > D)
1096
1096
  throw new RangeError("Normalized exact numeric text exceeds 16 KiB.");
1097
- let u;
1098
- d <= 0 ? u = `0.${"0".repeat(-d)}${l}` : d >= l.length ? u = l + "0".repeat(d - l.length) : u = `${l.slice(0, d)}.${l.slice(d)}`;
1099
- const [m, _ = ""] = u.split("."), y = m.replace(/^0+(?=\d)/, ""), w = _.replace(/0+$/, ""), h = y + (w ? `.${w}` : "");
1097
+ let p;
1098
+ d <= 0 ? p = `0.${"0".repeat(-d)}${l}` : d >= l.length ? p = l + "0".repeat(d - l.length) : p = `${l.slice(0, d)}.${l.slice(d)}`;
1099
+ const [u, _ = ""] = p.split("."), b = u.replace(/^0+(?=\d)/, ""), S = _.replace(/0+$/, ""), h = b + (S ? `.${S}` : "");
1100
1100
  return n === "-" && h !== "0" ? `-${h}` : h;
1101
1101
  }
1102
1102
  function mt(e, t) {
@@ -1105,12 +1105,12 @@ function mt(e, t) {
1105
1105
  const [a, s = ""] = (n ? e.slice(1) : e).split("."), [l, d = ""] = (o ? t.slice(1) : t).split(".");
1106
1106
  let c = Math.sign(a.length - l.length);
1107
1107
  if (!c && a !== l && (c = a < l ? -1 : 1), !c) {
1108
- const u = Math.max(s.length, d.length), m = s.padEnd(u, "0"), _ = d.padEnd(u, "0");
1109
- c = m === _ ? 0 : m < _ ? -1 : 1;
1108
+ const p = Math.max(s.length, d.length), u = s.padEnd(p, "0"), _ = d.padEnd(p, "0");
1109
+ c = u === _ ? 0 : u < _ ? -1 : 1;
1110
1110
  }
1111
1111
  return c === 0 ? 0 : n ? -c : c;
1112
1112
  }
1113
- function _a(e, t) {
1113
+ function ba(e, t) {
1114
1114
  if (typeof t == "number" && !Number.isFinite(t))
1115
1115
  throw new TypeError("Numeric scale must be finite.");
1116
1116
  const n = [e, x(String(t))].map((s) => {
@@ -1145,7 +1145,7 @@ function Di(e, t) {
1145
1145
  function H(e) {
1146
1146
  return typeof e == "object" && e !== null && "kind" in e && e.kind === "exact_number" && "type" in e && (e.type === "integer" || e.type === "decimal") && "value" in e && typeof e.value == "string";
1147
1147
  }
1148
- function ba(e) {
1148
+ function ya(e) {
1149
1149
  const t = xi(e.nativeDataType);
1150
1150
  if (!t) throw new TypeError("Numeric result type is not established.");
1151
1151
  if (e.value === null) return null;
@@ -1158,10 +1158,10 @@ function ba(e) {
1158
1158
  throw new TypeError("Exact numeric sidecar is required; rounded result values cannot substitute.");
1159
1159
  return Di(e.exactText, t);
1160
1160
  }
1161
- const we = i.string().uuid(), Ae = i.enum(["rows", "columns"]), Ni = i.enum(["member", "subtotal", "grand_total", "others"]), Ei = i.discriminatedUnion("kind", [
1161
+ const we = i.string().uuid(), Ae = i.enum(["rows", "columns"]), Ei = i.enum(["member", "subtotal", "grand_total", "others"]), Ni = i.discriminatedUnion("kind", [
1162
1162
  i.object({ kind: i.literal("value"), value: L }).strict(),
1163
1163
  i.object({ kind: i.literal("others"), rankingId: we }).strict()
1164
- ]), F = i.array(i.object({ levelId: we, member: Ei }).strict()).readonly().superRefine((e, t) => {
1164
+ ]), F = i.array(i.object({ levelId: we, member: Ni }).strict()).readonly().superRefine((e, t) => {
1165
1165
  new Set(e.map((n) => n.levelId)).size !== e.length && t.addIssue({
1166
1166
  code: "custom",
1167
1167
  path: [],
@@ -1173,7 +1173,7 @@ const we = i.string().uuid(), Ae = i.enum(["rows", "columns"]), Ni = i.enum(["me
1173
1173
  path: [],
1174
1174
  message: "Others is terminal."
1175
1175
  });
1176
- }), ya = i.object({
1176
+ }), va = i.object({
1177
1177
  rowPath: F,
1178
1178
  columnPath: F,
1179
1179
  measureId: we
@@ -1225,17 +1225,17 @@ const Ci = [
1225
1225
  // Custom format
1226
1226
  "custom"
1227
1227
  ];
1228
- function va(e) {
1228
+ function Sa(e) {
1229
1229
  return e.role === "metric" && "expression" in e && !!e.expression;
1230
1230
  }
1231
- function Sa(e) {
1231
+ function Ia(e) {
1232
1232
  return !!e.expression;
1233
1233
  }
1234
1234
  function Oi(e) {
1235
1235
  return !!(e && (e.calculationRepresentation || e.expression || e.derivedField || e.calculatedFieldOrigin || e.calculatedFormula || de(e)));
1236
1236
  }
1237
1237
  function ht(e) {
1238
- var _, y, w;
1238
+ var _, b, S;
1239
1239
  if (!e)
1240
1240
  return {
1241
1241
  representation: "physical",
@@ -1244,7 +1244,7 @@ function ht(e) {
1244
1244
  runtimeExecutable: !1,
1245
1245
  legacyManual: !1
1246
1246
  };
1247
- const t = e.fieldScope === "domain" ? "domain" : "local", n = ((_ = e.derivedField) == null ? void 0 : _.computeStage) || ((y = e.calculatedFormula) == null ? void 0 : y.computeStage), o = !e.calculatedFormula || Array.isArray(e.calculatedFormula.inputFields) && e.calculatedFormula.inputFields.every((h) => {
1247
+ const t = e.fieldScope === "domain" ? "domain" : "local", n = ((_ = e.derivedField) == null ? void 0 : _.computeStage) || ((b = e.calculatedFormula) == null ? void 0 : b.computeStage), o = !e.calculatedFormula || Array.isArray(e.calculatedFormula.inputFields) && e.calculatedFormula.inputFields.every((h) => {
1248
1248
  const P = h && $i(h);
1249
1249
  return typeof P == "string" && !!P.trim();
1250
1250
  }), a = typeof e.expression == "string" && !!e.expression.trim() && o, s = e.calculationRepresentation;
@@ -1267,33 +1267,33 @@ function ht(e) {
1267
1267
  runtimeExecutable: !1,
1268
1268
  legacyManual: !1
1269
1269
  };
1270
- const d = n || (e.role === "groupby" || ((w = e.calculatedFieldOrigin) == null ? void 0 : w.role) === "groupby" ? "row" : void 0), c = t === "domain" || de(e) || e.fieldScope === "card" || e.fieldScope === "sheet" || e.fieldScope === "dashboard" ? "manual" : "inline-expression", u = s === "manual" || s === "inline-expression" ? s : c, m = (!s || s === "manual" || s === "inline-expression") && !(s === "inline-expression" && de(e));
1270
+ const d = n || (e.role === "groupby" || ((S = e.calculatedFieldOrigin) == null ? void 0 : S.role) === "groupby" ? "row" : void 0), c = t === "domain" || de(e) || e.fieldScope === "card" || e.fieldScope === "sheet" || e.fieldScope === "dashboard" ? "manual" : "inline-expression", p = s === "manual" || s === "inline-expression" ? s : c, u = (!s || s === "manual" || s === "inline-expression") && !(s === "inline-expression" && de(e));
1271
1271
  return {
1272
- representation: u,
1272
+ representation: p,
1273
1273
  ownership: t,
1274
- completeness: a && m ? "complete" : "incomplete",
1274
+ completeness: a && u ? "complete" : "incomplete",
1275
1275
  computeStage: d,
1276
1276
  runtimeExecutable: a,
1277
- legacyManual: u === "manual" && t === "local" && !d
1277
+ legacyManual: p === "manual" && t === "local" && !d
1278
1278
  };
1279
1279
  }
1280
- function Ia(e) {
1280
+ function ka(e) {
1281
1281
  if (e.calculationRepresentation) return e;
1282
1282
  const { representation: t } = ht(e);
1283
1283
  return t === "physical" ? e : { ...e, calculationRepresentation: t };
1284
1284
  }
1285
- function ka(e) {
1285
+ function wa(e) {
1286
1286
  return ht(e).computeStage;
1287
1287
  }
1288
- function wa(e, t) {
1288
+ function Aa(e, t) {
1289
1289
  return e === "aggregate" && t === "default";
1290
1290
  }
1291
- function Aa(e) {
1291
+ function xa(e) {
1292
1292
  var n, o;
1293
1293
  const t = e;
1294
1294
  return !!(t != null && t.expression && ((o = (n = t.calculatedFormula) == null ? void 0 : n.inputFields) != null && o.length));
1295
1295
  }
1296
- function xa(e) {
1296
+ function Fa(e) {
1297
1297
  return !!(e && (e.entityName === le || e.entityId === le));
1298
1298
  }
1299
1299
  function de(e) {
@@ -1493,7 +1493,7 @@ const [Pi, Bi, qi, Li] = he.options, Ui = i.union([
1493
1493
  levelId: i.string().uuid().optional(),
1494
1494
  // Persisted table preferences are edited through Immer; runtime paths remain readonly.
1495
1495
  oppositePath: F.transform((e) => [...e]).optional()
1496
- }).strict(), I = i.string().min(1), Ki = i.array(
1496
+ }).strict(), k = i.string().min(1), Ki = i.array(
1497
1497
  i.enum(["body", "header", "footer", "subtotal", "grandTotal"])
1498
1498
  ), Qi = i.enum(["normal", "medium", "semibold", "bold"]), Wi = i.enum(["none", "underline", "line-through"]), yt = i.object({
1499
1499
  version: i.literal(1),
@@ -1505,9 +1505,9 @@ const [Pi, Bi, qi, Li] = he.options, Ui = i.union([
1505
1505
  target: i.object({
1506
1506
  level: i.enum(["cell", "row"]),
1507
1507
  matrix: zi.optional(),
1508
- columnIds: i.array(I).optional(),
1509
- conditionColumnId: I.optional(),
1510
- applyToColumnIds: i.array(I).optional(),
1508
+ columnIds: i.array(k).optional(),
1509
+ conditionColumnId: k.optional(),
1510
+ applyToColumnIds: i.array(k).optional(),
1511
1511
  tableParts: Ki.optional(),
1512
1512
  rowRoles: i.array(i.string()).optional(),
1513
1513
  depth: i.number().int().nonnegative().optional(),
@@ -1517,38 +1517,38 @@ const [Pi, Bi, qi, Li] = he.options, Ui = i.union([
1517
1517
  condition: i.discriminatedUnion("kind", [
1518
1518
  i.object({
1519
1519
  kind: i.literal("comparison"),
1520
- columnId: I,
1520
+ columnId: k,
1521
1521
  operator: i.enum(["eq", "neq", "gt", "gte", "lt", "lte"]),
1522
1522
  value: L
1523
1523
  }).strict(),
1524
1524
  i.object({
1525
1525
  kind: i.literal("between"),
1526
- columnId: I,
1526
+ columnId: k,
1527
1527
  min: L,
1528
1528
  max: L,
1529
1529
  inclusive: i.boolean().optional()
1530
1530
  }).strict(),
1531
1531
  i.object({
1532
1532
  kind: i.literal("blank"),
1533
- columnId: I,
1533
+ columnId: k,
1534
1534
  isBlank: i.boolean()
1535
1535
  }).strict(),
1536
1536
  i.object({
1537
1537
  kind: i.literal("contains"),
1538
- columnId: I,
1538
+ columnId: k,
1539
1539
  value: i.string(),
1540
1540
  caseSensitive: i.boolean().optional(),
1541
1541
  exact: i.boolean().optional()
1542
1542
  }).strict(),
1543
1543
  i.object({
1544
1544
  kind: i.literal("topBottom"),
1545
- columnId: I,
1545
+ columnId: k,
1546
1546
  direction: i.enum(["top", "bottom"]),
1547
1547
  count: i.number().int().positive()
1548
1548
  }).strict(),
1549
1549
  i.object({
1550
1550
  kind: i.literal("colorScale"),
1551
- columnId: I,
1551
+ columnId: k,
1552
1552
  range: i.enum(["auto", "manual"]),
1553
1553
  min: i.number().finite().optional(),
1554
1554
  mid: i.number().finite().optional(),
@@ -1561,7 +1561,7 @@ const [Pi, Bi, qi, Li] = he.options, Ui = i.union([
1561
1561
  }).strict(),
1562
1562
  i.object({
1563
1563
  kind: i.literal("dataBar"),
1564
- columnId: I,
1564
+ columnId: k,
1565
1565
  range: i.enum(["auto", "manual"]),
1566
1566
  min: i.number().finite().optional(),
1567
1567
  max: i.number().finite().optional(),
@@ -1581,7 +1581,7 @@ const [Pi, Bi, qi, Li] = he.options, Ui = i.union([
1581
1581
  }).strict()
1582
1582
  )
1583
1583
  }).strict();
1584
- function Fa(e, t) {
1584
+ function Ra(e, t) {
1585
1585
  const n = (s) => {
1586
1586
  if (H(s)) return s.value;
1587
1587
  const l = typeof s == "string" ? Ri(s.trim()) ?? ue(s) : ue(s);
@@ -1594,7 +1594,7 @@ function Fa(e, t) {
1594
1594
  }, o = n(e), a = n(t);
1595
1595
  return o === null || a === null ? null : mt(o, a);
1596
1596
  }
1597
- function Ra(e, t, n) {
1597
+ function Ta(e, t, n) {
1598
1598
  const o = Ji(e);
1599
1599
  if (o === null) return null;
1600
1600
  if (typeof o == "number" && typeof t == "number" && typeof n == "number") {
@@ -1607,22 +1607,22 @@ function Ra(e, t, n) {
1607
1607
  return { coefficient: Ct + Me, scale: Me.length };
1608
1608
  }), s = Math.max(...a.map((h) => h.scale)), [l, d, c] = a.map(
1609
1609
  (h) => BigInt(h.coefficient) * 10n ** BigInt(s - h.scale)
1610
- ), u = c - d, m = l - d;
1611
- if (u <= 0n)
1610
+ ), p = c - d, u = l - d;
1611
+ if (p <= 0n)
1612
1612
  return {
1613
1613
  ratio: l >= c ? 1 : 0,
1614
1614
  midpointComparison: l >= c ? 1 : -1
1615
1615
  };
1616
- const _ = m * 2n - u, y = _ < 0n ? -1 : _ > 0n ? 1 : 0;
1617
- return { ratio: m <= 0n ? 0 : m >= u ? 1 : Number(m * 1000000000n / u) / 1e9, midpointComparison: y };
1616
+ const _ = u * 2n - p, b = _ < 0n ? -1 : _ > 0n ? 1 : 0;
1617
+ return { ratio: u <= 0n ? 0 : u >= p ? 1 : Number(u * 1000000000n / p) / 1e9, midpointComparison: b };
1618
1618
  }
1619
- function Ta(e) {
1619
+ function Ma(e) {
1620
1620
  return !!e && typeof e == "object" && !Array.isArray(e);
1621
1621
  }
1622
- function Ma(e) {
1622
+ function Da(e) {
1623
1623
  return e.enabled !== !1;
1624
1624
  }
1625
- function Da(e) {
1625
+ function Ea(e) {
1626
1626
  return e.kind === "topBottom" || e.kind === "colorScale" && e.range === "auto" || e.kind === "dataBar" && e.range === "auto";
1627
1627
  }
1628
1628
  function Xi(e) {
@@ -1657,13 +1657,13 @@ function Na(e) {
1657
1657
  has: (o) => H(o) ? n.has(o.value) : t.has(o)
1658
1658
  };
1659
1659
  }
1660
- function Ea(e, t) {
1660
+ function ja(e, t) {
1661
1661
  return typeof e == "number" && typeof t == "number" ? Math.sign(e - t) : mt(
1662
1662
  typeof e == "number" ? x(String(e)) : e.value,
1663
1663
  typeof t == "number" ? x(String(t)) : t.value
1664
1664
  );
1665
1665
  }
1666
- function ja(e) {
1666
+ function $a(e) {
1667
1667
  return e == null || e === "";
1668
1668
  }
1669
1669
  function en(e, t, n) {
@@ -1683,7 +1683,7 @@ function tn(e) {
1683
1683
  return;
1684
1684
  }
1685
1685
  }
1686
- function $a(e) {
1686
+ function Ca(e) {
1687
1687
  return e ? vt({
1688
1688
  fontWeight: tn(e.fontWeight),
1689
1689
  fontStyle: e.italic ? "italic" : void 0,
@@ -1692,7 +1692,7 @@ function $a(e) {
1692
1692
  textDecoration: e.textDecoration
1693
1693
  }) : {};
1694
1694
  }
1695
- function Ca(...e) {
1695
+ function Oa(...e) {
1696
1696
  return Object.assign(
1697
1697
  {},
1698
1698
  ...e.filter((t) => !!t).map(vt)
@@ -1703,7 +1703,7 @@ function vt(e) {
1703
1703
  Object.entries(e).filter(([, t]) => t !== void 0)
1704
1704
  );
1705
1705
  }
1706
- const S = i.string().uuid(), nn = i.string().min(1), an = i.number().int().positive().max(Number.MAX_SAFE_INTEGER), on = i.enum([
1706
+ const I = i.string().uuid(), nn = i.string().min(1), an = i.number().int().positive().max(Number.MAX_SAFE_INTEGER), on = i.enum([
1707
1707
  "SUM",
1708
1708
  "COUNT",
1709
1709
  "DISTINCT",
@@ -1713,28 +1713,28 @@ const S = i.string().uuid(), nn = i.string().min(1), an = i.number().int().posit
1713
1713
  ]), St = vi.omit({
1714
1714
  aggregate: !0
1715
1715
  }), sn = {
1716
- id: S,
1716
+ id: I,
1717
1717
  field: St,
1718
1718
  grain: U.optional()
1719
1719
  }, ce = i.object(sn).strict(), rn = i.object({
1720
- id: S,
1720
+ id: I,
1721
1721
  kind: i.literal("aggregate"),
1722
1722
  field: St,
1723
1723
  aggregate: on
1724
1724
  }).strict(), ln = i.object({
1725
- id: S,
1725
+ id: I,
1726
1726
  kind: i.literal("calculated"),
1727
1727
  definition: Ie
1728
1728
  }).strict(), It = i.discriminatedUnion("kind", [rn, ln]), dn = i.discriminatedUnion("kind", [
1729
1729
  i.object({ kind: i.literal("member") }).strict(),
1730
1730
  i.object({
1731
1731
  kind: i.literal("measure"),
1732
- measureId: S,
1732
+ measureId: I,
1733
1733
  oppositePath: F
1734
1734
  }).strict()
1735
1735
  ]), un = {
1736
1736
  axis: Ae,
1737
- levelId: S,
1737
+ levelId: I,
1738
1738
  scope: i.discriminatedUnion("kind", [
1739
1739
  i.object({ kind: i.literal("level") }).strict(),
1740
1740
  i.object({ kind: i.literal("branch"), parent: F }).strict()
@@ -1743,12 +1743,12 @@ const S = i.string().uuid(), nn = i.string().min(1), an = i.number().int().posit
1743
1743
  direction: i.enum(["asc", "desc"]),
1744
1744
  nulls: i.enum(["first", "last"])
1745
1745
  }, kt = i.object(un).strict(), cn = i.object({
1746
- id: S,
1746
+ id: I,
1747
1747
  axis: Ae,
1748
- levelId: S,
1748
+ levelId: I,
1749
1749
  direction: i.enum(["top", "bottom"]),
1750
1750
  count: an,
1751
- measureId: S,
1751
+ measureId: I,
1752
1752
  oppositePath: F,
1753
1753
  others: i.boolean()
1754
1754
  }).strict(), wt = i.object({
@@ -1780,9 +1780,9 @@ function $(e, t, n, o, a, s = !1) {
1780
1780
  n.length > e[t].length && g(o, a, "Path exceeds axis depth."), n.forEach((l, d) => {
1781
1781
  var c;
1782
1782
  if (l.levelId !== ((c = e[t][d]) == null ? void 0 : c.id) && g(o, [...a, d], "Path must be an ordered axis prefix."), l.member.kind === "others") {
1783
- const u = l.member.rankingId;
1783
+ const p = l.member.rankingId;
1784
1784
  (s || d !== n.length - 1 || !e.rankings.some(
1785
- (m) => m.id === u && m.others && m.axis === t && m.levelId === l.levelId
1785
+ (u) => u.id === p && u.others && u.axis === t && u.levelId === l.levelId
1786
1786
  )) && g(
1787
1787
  o,
1788
1788
  [...a, d],
@@ -1807,7 +1807,7 @@ function xt(e, t, n, o) {
1807
1807
  "Branch sort must name the immediate parent of its level."
1808
1808
  )), a.target.kind === "measure") {
1809
1809
  const c = a.target.measureId;
1810
- e.measures.some((u) => u.id === c) || g(n, l, "Unknown sort measure."), $(
1810
+ e.measures.some((p) => p.id === c) || g(n, l, "Unknown sort measure."), $(
1811
1811
  e,
1812
1812
  a.axis === "rows" ? "columns" : "rows",
1813
1813
  a.target.oppositePath,
@@ -1882,14 +1882,14 @@ function Ft(e, t) {
1882
1882
  }
1883
1883
  const o = (a) => {
1884
1884
  const s = (l, d) => {
1885
- var c, u;
1885
+ var c, p;
1886
1886
  if ((l.aggregate || ((c = l.derivedField) == null ? void 0 : c.computeStage) === "aggregate") && g(t, d, "Aggregate/HAVING filters are not supported."), l.derivedField) {
1887
1887
  oe(l.derivedField, t, d);
1888
- for (const m of Object.values(l.derivedField.inputs))
1889
- q(m.field.source, e.source, t, d);
1888
+ for (const u of Object.values(l.derivedField.inputs))
1889
+ q(u.field.source, e.source, t, d);
1890
1890
  }
1891
- for (const m of ((u = l.calculatedFormula) == null ? void 0 : u.inputFields) ?? [])
1892
- s(m, d);
1891
+ for (const u of ((p = l.calculatedFormula) == null ? void 0 : p.inputFields) ?? [])
1892
+ s(u, d);
1893
1893
  };
1894
1894
  for (const l of a.conditions)
1895
1895
  s(l.field, ["filters", l.id]);
@@ -1923,17 +1923,23 @@ const Y = wt.superRefine(Ft), pn = wt.extend({
1923
1923
  }), mn = pn.superRefine(Ft), fn = Y.innerType().extend({ kind: i.literal("matrix") }), gn = fn.superRefine(({ kind: e, ...t }, n) => {
1924
1924
  const o = Y.safeParse(t);
1925
1925
  o.success || o.error.issues.forEach((a) => n.addIssue(a));
1926
- }), Ye = i.object({
1926
+ }), hn = "{member}", Ye = i.object({
1927
1927
  visible: i.boolean(),
1928
1928
  position: i.enum(["before", "after"]),
1929
+ /** As written; a subtotal's `{member}` becomes its member's name. */
1929
1930
  label: i.string().optional()
1930
1931
  }).strict(), Pe = i.object({
1931
1932
  grand: Ye,
1932
- levels: i.record(S, Ye).readonly()
1933
- }).strict(), Be = yt.shape.rules.element, hn = yt.extend({
1933
+ levels: i.record(I, Ye).readonly(),
1934
+ /**
1935
+ * Skip a subtotal that only repeats one row: an expanded group with
1936
+ * exactly one child shows no subtotal. Off when absent.
1937
+ */
1938
+ skipRedundant: i.boolean().optional()
1939
+ }).strict(), Be = yt.shape.rules.element, _n = yt.extend({
1934
1940
  rules: i.array(Be.extend({
1935
1941
  target: Be.shape.target.extend({
1936
- rowRoles: i.array(Ni).optional()
1942
+ rowRoles: i.array(Ei).optional()
1937
1943
  })
1938
1944
  }))
1939
1945
  }).superRefine((e, t) => {
@@ -1960,40 +1966,40 @@ const Y = wt.superRefine(Ft), pn = wt.extend({
1960
1966
  );
1961
1967
  }
1962
1968
  });
1963
- function _n(e, t, n, o, a = []) {
1969
+ function bn(e, t, n, o, a = []) {
1964
1970
  for (const s of e.rules) {
1965
1971
  const l = [...a, "rules", s.id], d = s.target.matrix;
1966
1972
  d && (d.levelId !== void 0 && !t[d.axis].some((c) => c.id === d.levelId) && g(o, [...l, "target", "matrix", "levelId"], "Conditional-format level is not on the selected axis."), d.oppositePath !== void 0 && $(t, d.axis === "rows" ? "columns" : "rows", d.oppositePath, o, [...l, "target", "matrix", "oppositePath"])), Zi(s).validationRefs.some((c) => !n.has(c)) && g(o, l, "Conditional rules must reference displayed measures.");
1967
1973
  }
1968
1974
  }
1969
- const bn = {
1975
+ const yn = {
1970
1976
  layout: i.discriminatedUnion("kind", [
1971
1977
  i.object({ kind: i.literal("compact") }).strict(),
1972
1978
  i.object({ kind: i.literal("tabular"), repeatLabels: i.boolean() }).strict()
1973
1979
  ]),
1974
1980
  absence: i.object({ emptyText: i.string(), nullText: i.string() }).strict(),
1975
- levelLabels: i.record(S, i.string()).readonly(),
1976
- measureLabels: i.record(S, i.string()).readonly(),
1977
- levelFormats: i.record(S, Ee).readonly(),
1978
- measureFormats: i.record(S, Ee).readonly(),
1981
+ levelLabels: i.record(I, i.string()).readonly(),
1982
+ measureLabels: i.record(I, i.string()).readonly(),
1983
+ levelFormats: i.record(I, Ne).readonly(),
1984
+ measureFormats: i.record(I, Ne).readonly(),
1979
1985
  totals: i.object({ rows: Pe, columns: Pe }).strict(),
1980
- conditionalFormatting: hn.optional()
1981
- }, xe = i.object(bn).strict(), yn = i.object({
1986
+ conditionalFormatting: _n.optional()
1987
+ }, xe = i.object(yn).strict(), vn = i.object({
1982
1988
  depth: i.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),
1983
1989
  overrides: i.array(
1984
1990
  i.object({ path: F, expanded: i.boolean() }).strict()
1985
1991
  ).readonly()
1986
- }).strict(), qe = yn.superRefine(
1992
+ }).strict(), qe = vn.superRefine(
1987
1993
  (e, t) => A(
1988
1994
  e.overrides.map((n) => gt(n.path)),
1989
1995
  t,
1990
1996
  ["overrides"]
1991
1997
  )
1992
- ), vn = { rows: qe, columns: qe }, J = i.object(vn).strict(), Sn = J.extend({ sorts: i.array(kt).readonly() }).strict(), In = Sn.superRefine(
1998
+ ), Sn = { rows: qe, columns: qe }, J = i.object(Sn).strict(), In = J.extend({ sorts: i.array(kt).readonly() }).strict(), kn = In.superRefine(
1993
1999
  (e, t) => A(e.sorts.map(At), t, ["sorts"])
1994
2000
  );
1995
2001
  function ee(e, t) {
1996
- var c;
2002
+ var c, p;
1997
2003
  const { spec: n, presentation: o, defaults: a, session: s } = e, l = new Set([...n.rows, ...n.columns].map((u) => u.id)), d = new Set(n.measures.map((u) => u.id));
1998
2004
  for (const u of [
1999
2005
  "levelLabels",
@@ -2001,49 +2007,56 @@ function ee(e, t) {
2001
2007
  "measureLabels",
2002
2008
  "measureFormats"
2003
2009
  ]) {
2004
- const m = u.startsWith("level") ? l : d;
2005
- for (const _ of Object.keys(o[u]))
2006
- m.has(_) || g(
2010
+ const _ = u.startsWith("level") ? l : d;
2011
+ for (const b of Object.keys(o[u]))
2012
+ _.has(b) || g(
2007
2013
  t,
2008
- ["presentation", u, _],
2014
+ ["presentation", u, b],
2009
2015
  "Unknown presentation reference."
2010
2016
  );
2011
2017
  }
2012
- for (const [u, m] of Object.entries(o.measureFormats))
2013
- m.type === "temporal_bucket" && g(
2018
+ for (const [u, _] of Object.entries(o.measureFormats))
2019
+ _.type === "temporal_bucket" && g(
2014
2020
  t,
2015
2021
  ["presentation", "measureFormats", u],
2016
2022
  "Measures cannot own temporal bucket formats."
2017
2023
  );
2018
- for (const [u, m] of Object.entries(o.levelFormats))
2019
- m.type === "temporal_bucket" && !((c = [...n.rows, ...n.columns].find((_) => _.id === u)) != null && c.grain) && g(
2024
+ for (const [u, _] of Object.entries(o.levelFormats))
2025
+ _.type === "temporal_bucket" && !((c = [...n.rows, ...n.columns].find((b) => b.id === u)) != null && c.grain) && g(
2020
2026
  t,
2021
2027
  ["presentation", "levelFormats", u],
2022
2028
  "Temporal bucket formats require a grain."
2023
2029
  );
2024
2030
  for (const u of ["rows", "columns"]) {
2025
- const m = Object.keys(o.totals[u].levels);
2026
- (m.length !== n[u].length || m.some((_) => !n[u].some((y) => y.id === _))) && g(
2031
+ (p = o.totals[u].grand.label) != null && p.includes(
2032
+ hn
2033
+ ) && g(
2034
+ t,
2035
+ ["presentation", "totals", u, "grand", "label"],
2036
+ "The grand total has no member, so its label cannot use {member}."
2037
+ );
2038
+ const _ = Object.keys(o.totals[u].levels);
2039
+ (_.length !== n[u].length || _.some((b) => !n[u].some((S) => S.id === b))) && g(
2027
2040
  t,
2028
2041
  ["presentation", "totals", u],
2029
2042
  "Subtotal map must contain exactly the current axis levels."
2030
2043
  );
2031
- for (const _ of [a, ...s ? [s] : []])
2032
- for (const y of _[u].overrides)
2044
+ for (const b of [a, ...s ? [s] : []])
2045
+ for (const S of b[u].overrides)
2033
2046
  $(
2034
2047
  n,
2035
2048
  u,
2036
- y.path,
2049
+ S.path,
2037
2050
  t,
2038
2051
  [u, "overrides"],
2039
2052
  !0
2040
- ), y.path.length || g(
2053
+ ), S.path.length || g(
2041
2054
  t,
2042
2055
  [u, "overrides"],
2043
2056
  "Use depth to expand/collapse the root."
2044
2057
  );
2045
2058
  }
2046
- s && xt(n, s.sorts, t, ["session", "sorts"]), o.conditionalFormatting && _n(
2059
+ s && xt(n, s.sorts, t, ["session", "sorts"]), o.conditionalFormatting && bn(
2047
2060
  o.conditionalFormatting,
2048
2061
  n,
2049
2062
  d,
@@ -2051,21 +2064,21 @@ function ee(e, t) {
2051
2064
  ["presentation", "conditionalFormatting"]
2052
2065
  );
2053
2066
  }
2054
- const kn = i.object({
2067
+ const wn = i.object({
2055
2068
  spec: Y,
2056
2069
  presentation: xe,
2057
2070
  defaults: J,
2058
- session: In.optional()
2059
- }).strict(), Oa = kn.superRefine(ee), wn = i.object({
2071
+ session: kn.optional()
2072
+ }).strict(), Ya = wn.superRefine(ee), An = i.object({
2060
2073
  version: i.literal(1),
2061
2074
  spec: Y,
2062
2075
  presentation: xe,
2063
2076
  defaultView: J
2064
- }).strict(), An = wn.superRefine(
2077
+ }).strict(), xn = An.superRefine(
2065
2078
  (e, t) => ee({ ...e, defaults: e.defaultView }, t)
2066
- ), xn = An.innerType().extend({
2079
+ ), Fn = xn.innerType().extend({
2067
2080
  spec: mn
2068
- }), Ya = xn.superRefine((e, t) => ee({ ...e, defaults: e.defaultView }, t)), Le = i.object({ spec: Y, presentation: xe }).strict(), Fn = i.union([
2081
+ }), Pa = Fn.superRefine((e, t) => ee({ ...e, defaults: e.defaultView }, t)), Le = i.object({ spec: Y, presentation: xe }).strict(), Rn = i.union([
2069
2082
  Le.extend({
2070
2083
  mode: i.literal("layout"),
2071
2084
  format: i.enum(["csv", "xlsx", "pdf"]),
@@ -2075,7 +2088,7 @@ const kn = i.object({
2075
2088
  ])
2076
2089
  }).strict(),
2077
2090
  Le.extend({ mode: i.literal("flat"), format: i.literal("csv") }).strict()
2078
- ]), Pa = Fn.superRefine(
2091
+ ]), Ba = Rn.superRefine(
2079
2092
  (e, t) => ee(
2080
2093
  {
2081
2094
  ...e,
@@ -2087,27 +2100,27 @@ const kn = i.object({
2087
2100
  t
2088
2101
  )
2089
2102
  );
2090
- function Ba(e) {
2103
+ function qa(e) {
2091
2104
  return e && "id" in e ? e.id : void 0;
2092
2105
  }
2093
- const Rn = "SUM";
2094
- function k(e) {
2106
+ const Tn = "SUM";
2107
+ function w(e) {
2095
2108
  return typeof e == "string" && e.trim().length > 0;
2096
2109
  }
2097
- function N(e) {
2098
- return k(e) ? e.trim().toLowerCase() : "";
2110
+ function E(e) {
2111
+ return w(e) ? e.trim().toLowerCase() : "";
2099
2112
  }
2100
- function qa(e) {
2101
- const t = k(e.id) ? e.id.trim() : void 0;
2113
+ function La(e) {
2114
+ const t = w(e.id) ? e.id.trim() : void 0;
2102
2115
  if (!t) return;
2103
- const n = N(t), o = k(e.table) ? e.table.trim() : void 0;
2104
- if (!(n === N(e.name) || o && n === N(o)))
2116
+ const n = E(t), o = w(e.table) ? e.table.trim() : void 0;
2117
+ if (!(n === E(e.name) || o && n === E(o)))
2105
2118
  return t;
2106
2119
  }
2107
2120
  function T(e) {
2108
- const t = k(e.datasetId) ? e.datasetId.trim() : void 0;
2121
+ const t = w(e.datasetId) ? e.datasetId.trim() : void 0;
2109
2122
  if (t)
2110
- return N(t) === N(e.datasetName) ? void 0 : t;
2123
+ return E(t) === E(e.datasetName) ? void 0 : t;
2111
2124
  }
2112
2125
  function Rt(e) {
2113
2126
  if (e.kind !== "semantic") return e;
@@ -2117,8 +2130,8 @@ function Rt(e) {
2117
2130
  ...t ? { datasetId: t } : {}
2118
2131
  };
2119
2132
  }
2120
- function La(e) {
2121
- return e ? e.kind === "semantic" ? !!(k(e.domainId) && (k(e.datasetId) || k(e.datasetName))) : e.kind === "physical" ? k(e.connectionId) && k(e.tableName) : k(e.connectionId) : !1;
2133
+ function Ua(e) {
2134
+ return e ? e.kind === "semantic" ? !!(w(e.domainId) && (w(e.datasetId) || w(e.datasetName))) : e.kind === "physical" ? w(e.connectionId) && w(e.tableName) : w(e.connectionId) : !1;
2122
2135
  }
2123
2136
  function pe(e) {
2124
2137
  if (!e)
@@ -2166,7 +2179,7 @@ function Tt(e, t) {
2166
2179
  connectionId: e.connectionId || t.connectionId
2167
2180
  });
2168
2181
  }
2169
- function Ua(e) {
2182
+ function Va(e) {
2170
2183
  const t = [];
2171
2184
  for (const n of e) {
2172
2185
  const o = Rt(
@@ -2185,10 +2198,10 @@ function Ua(e) {
2185
2198
  }
2186
2199
  return t;
2187
2200
  }
2188
- function Tn(e, t) {
2201
+ function Mn(e, t) {
2189
2202
  return e.name === t.name && Fe(e.source, t.source);
2190
2203
  }
2191
- function Va(e) {
2204
+ function Ha(e) {
2192
2205
  return [
2193
2206
  e.source ? pe(e.source) : "unknown",
2194
2207
  Mt(e),
@@ -2196,14 +2209,14 @@ function Va(e) {
2196
2209
  ].filter(Boolean).join(":");
2197
2210
  }
2198
2211
  function Mt(e) {
2199
- return Mn(
2200
- e.aggregate || Rn
2212
+ return Dn(
2213
+ e.aggregate || Tn
2201
2214
  );
2202
2215
  }
2203
- function Mn(e) {
2216
+ function Dn(e) {
2204
2217
  return e.trim().toUpperCase();
2205
2218
  }
2206
- function Ha(e, t) {
2219
+ function Ga(e, t) {
2207
2220
  return {
2208
2221
  ...e,
2209
2222
  label: e.label || t.label,
@@ -2212,20 +2225,20 @@ function Ha(e, t) {
2212
2225
  source: e.source && t.source ? Tt(e.source, t.source) : e.source || t.source
2213
2226
  };
2214
2227
  }
2215
- function Dn(e) {
2228
+ function En(e) {
2216
2229
  for (let t = 0; t < e.length; t += 1) {
2217
2230
  const n = e[t];
2218
2231
  if (e.some(
2219
- (o, a) => a !== t && Nt(o, n)
2232
+ (o, a) => a !== t && Et(o, n)
2220
2233
  ))
2221
2234
  return !1;
2222
2235
  }
2223
2236
  return !0;
2224
2237
  }
2225
2238
  function Dt(e, t) {
2226
- return Tn(e, t);
2239
+ return Mn(e, t);
2227
2240
  }
2228
- function Nt(e, t) {
2241
+ function Et(e, t) {
2229
2242
  return Dt(e, t) && C(e) === C(t);
2230
2243
  }
2231
2244
  function Nn(e) {
@@ -2234,7 +2247,7 @@ function Nn(e) {
2234
2247
  function Ue(e) {
2235
2248
  return typeof e == "string" || typeof e == "number" || typeof e == "boolean" || e === null;
2236
2249
  }
2237
- function En(e, t, n) {
2250
+ function jn(e, t, n) {
2238
2251
  if (e !== void 0) {
2239
2252
  if (!e || typeof e != "object" || Array.isArray(e)) {
2240
2253
  n.push(
@@ -2267,49 +2280,49 @@ function En(e, t, n) {
2267
2280
  });
2268
2281
  }
2269
2282
  }
2270
- function jn(e, t) {
2283
+ function $n(e, t) {
2271
2284
  return Re(e, t).length === 1;
2272
2285
  }
2273
- function $n(e, t) {
2286
+ function Cn(e, t) {
2274
2287
  return Re(e, t).length === 1;
2275
2288
  }
2276
2289
  function Re(e, t) {
2277
2290
  return t.filter(
2278
- (o) => Cn(e, o)
2291
+ (o) => On(e, o)
2279
2292
  );
2280
2293
  }
2281
- function Cn(e, t) {
2282
- return On(e, t) ? e.source ? Dt(t, e) : !0 : !1;
2283
- }
2284
2294
  function On(e, t) {
2285
- return !(t.name !== e.name || e.role !== void 0 && t.role !== void 0 && t.role !== e.role || Yn(e, t) && C(t) !== C(e));
2295
+ return Yn(e, t) ? e.source ? Dt(t, e) : !0 : !1;
2286
2296
  }
2287
2297
  function Yn(e, t) {
2298
+ return !(t.name !== e.name || e.role !== void 0 && t.role !== void 0 && t.role !== e.role || Pn(e, t) && C(t) !== C(e));
2299
+ }
2300
+ function Pn(e, t) {
2288
2301
  return e.role === "measure" || t.role === "measure" || e.aggregate !== void 0 || t.aggregate !== void 0;
2289
2302
  }
2290
2303
  function C(e) {
2291
2304
  return Mt(e);
2292
2305
  }
2293
- const Pn = /^(\d{4})-(\d{2})-(\d{2})$/, Et = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?(Z|[+-]\d{2}:\d{2})$/;
2306
+ const Bn = /^(\d{4})-(\d{2})-(\d{2})$/, Nt = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?(Z|[+-]\d{2}:\d{2})$/;
2294
2307
  function me(e) {
2295
2308
  if (typeof e != "string")
2296
2309
  return null;
2297
- const t = e.trim(), n = Pn.exec(t);
2310
+ const t = e.trim(), n = Bn.exec(t);
2298
2311
  if (n) {
2299
- const [, y, w, h] = n;
2300
- return Ve(y, w, h) ? new Date(Date.UTC(Number(y), Number(w) - 1, Number(h))) : null;
2312
+ const [, b, S, h] = n;
2313
+ return Ve(b, S, h) ? new Date(Date.UTC(Number(b), Number(S) - 1, Number(h))) : null;
2301
2314
  }
2302
- const o = Et.exec(t);
2315
+ const o = Nt.exec(t);
2303
2316
  if (!o)
2304
2317
  return null;
2305
- const [, a, s, l, d, c, u = "00", , m] = o;
2306
- if (!Ve(a, s, l) || !E(d, 0, 23) || !E(c, 0, 59) || !E(u, 0, 59) || !Bn(m))
2318
+ const [, a, s, l, d, c, p = "00", , u] = o;
2319
+ if (!Ve(a, s, l) || !N(d, 0, 23) || !N(c, 0, 59) || !N(p, 0, 59) || !qn(u))
2307
2320
  return null;
2308
2321
  const _ = new Date(t);
2309
2322
  return Number.isFinite(_.getTime()) ? _ : null;
2310
2323
  }
2311
- function Ga(e) {
2312
- return typeof e != "string" || !Et.test(e.trim()) ? null : me(e);
2324
+ function za(e) {
2325
+ return typeof e != "string" || !Nt.test(e.trim()) ? null : me(e);
2313
2326
  }
2314
2327
  function Ve(e, t, n) {
2315
2328
  const o = Number(e), a = Number(t), s = Number(n);
@@ -2318,15 +2331,15 @@ function Ve(e, t, n) {
2318
2331
  const l = new Date(Date.UTC(o, a - 1, s));
2319
2332
  return l.getUTCFullYear() === o && l.getUTCMonth() === a - 1 && l.getUTCDate() === s;
2320
2333
  }
2321
- function E(e, t, n) {
2334
+ function N(e, t, n) {
2322
2335
  const o = Number(e);
2323
2336
  return Number.isInteger(o) && o >= t && o <= n;
2324
2337
  }
2325
- function Bn(e) {
2338
+ function qn(e) {
2326
2339
  if (e === "Z")
2327
2340
  return !0;
2328
2341
  const t = /^([+-])(\d{2}):(\d{2})$/.exec(e);
2329
- return !!(t && E(t[2], 0, 23) && E(t[3], 0, 59));
2342
+ return !!(t && N(t[2], 0, 23) && N(t[3], 0, 59));
2330
2343
  }
2331
2344
  function He(e, t, n) {
2332
2345
  if (e !== void 0) {
@@ -2364,7 +2377,7 @@ function Ge(e) {
2364
2377
  }
2365
2378
  return null;
2366
2379
  }
2367
- function qn(e, t, n) {
2380
+ function Ln(e, t, n) {
2368
2381
  if (!f(e)) {
2369
2382
  n.push(
2370
2383
  r(
@@ -2375,7 +2388,7 @@ function qn(e, t, n) {
2375
2388
  );
2376
2389
  return;
2377
2390
  }
2378
- p(e.inputId) || n.push(
2391
+ m(e.inputId) || n.push(
2379
2392
  r(
2380
2393
  "invalid_input_binding",
2381
2394
  "Input bindings need a non-empty inputId.",
@@ -2387,7 +2400,7 @@ function qn(e, t, n) {
2387
2400
  "Input binding kind must be filter or control.",
2388
2401
  `${t}.kind`
2389
2402
  )
2390
- ), e.field !== void 0 && b(e.field, `${t}.field`, n), e.relationshipHint !== void 0 && Te(
2403
+ ), e.field !== void 0 && y(e.field, `${t}.field`, n), e.relationshipHint !== void 0 && Te(
2391
2404
  e.relationshipHint,
2392
2405
  `${t}.relationshipHint`,
2393
2406
  n
@@ -2404,7 +2417,7 @@ function Te(e, t, n) {
2404
2417
  );
2405
2418
  return;
2406
2419
  }
2407
- e.relationshipIds !== void 0 && (!Array.isArray(e.relationshipIds) || e.relationshipIds.some((o) => !p(o))) && n.push(
2420
+ e.relationshipIds !== void 0 && (!Array.isArray(e.relationshipIds) || e.relationshipIds.some((o) => !m(o))) && n.push(
2408
2421
  r(
2409
2422
  "invalid_relationship_hint",
2410
2423
  "Relationship hint relationshipIds must be non-empty strings.",
@@ -2412,7 +2425,7 @@ function Te(e, t, n) {
2412
2425
  )
2413
2426
  );
2414
2427
  }
2415
- function Ln(e, t) {
2428
+ function Un(e, t) {
2416
2429
  var o, a;
2417
2430
  if (((o = e.source) == null ? void 0 : o.kind) !== "semantic" && ((a = e.source) == null ? void 0 : a.kind) !== "physical" && t.push(
2418
2431
  r(
@@ -2420,7 +2433,7 @@ function Ln(e, t) {
2420
2433
  "Input options must use a semantic or physical source.",
2421
2434
  "source"
2422
2435
  )
2423
- ), p(e.inputId) || t.push(
2436
+ ), m(e.inputId) || t.push(
2424
2437
  r(
2425
2438
  "missing_input_options_input_id",
2426
2439
  "Input options intent needs the inputId it populates.",
@@ -2450,26 +2463,26 @@ function Ln(e, t) {
2450
2463
  "Input options limit must be a positive finite number.",
2451
2464
  "limit"
2452
2465
  )
2453
- ), (!e.labelField || !p(e.labelField.name)) && t.push(
2466
+ ), (!e.labelField || !m(e.labelField.name)) && t.push(
2454
2467
  r(
2455
2468
  "missing_input_options_label_field",
2456
2469
  "Input options intent needs a labelField.",
2457
2470
  "labelField"
2458
2471
  )
2459
- ), b(e.labelField, "labelField", t, {
2472
+ ), y(e.labelField, "labelField", t, {
2460
2473
  required: !0
2461
- }), (!e.valueField || !p(e.valueField.name)) && t.push(
2474
+ }), (!e.valueField || !m(e.valueField.name)) && t.push(
2462
2475
  r(
2463
2476
  "missing_input_options_value_field",
2464
2477
  "Input options intent needs a valueField.",
2465
2478
  "valueField"
2466
2479
  )
2467
- ), b(e.valueField, "valueField", t, {
2480
+ ), y(e.valueField, "valueField", t, {
2468
2481
  required: !0
2469
- }), e.searchField !== void 0 && b(e.searchField, "searchField", t, {
2482
+ }), e.searchField !== void 0 && y(e.searchField, "searchField", t, {
2470
2483
  required: !0
2471
2484
  }), e.disambiguationFields !== void 0 && (Array.isArray(e.disambiguationFields) ? e.disambiguationFields.forEach((s, l) => {
2472
- b(s, `disambiguationFields.${l}`, t, {
2485
+ y(s, `disambiguationFields.${l}`, t, {
2473
2486
  required: !0
2474
2487
  });
2475
2488
  }) : t.push(
@@ -2495,10 +2508,10 @@ function Ln(e, t) {
2495
2508
  )
2496
2509
  );
2497
2510
  }), e.dependencies !== void 0) {
2498
- const s = Vn(
2511
+ const s = Hn(
2499
2512
  e.dependencies
2500
2513
  );
2501
- t.push(...s.errors), s.ok && Gn(e, t);
2514
+ t.push(...s.errors), s.ok && zn(e, t);
2502
2515
  }
2503
2516
  if (e.population !== void 0) {
2504
2517
  const s = e.population;
@@ -2542,7 +2555,7 @@ function Ln(e, t) {
2542
2555
  }
2543
2556
  }
2544
2557
  }
2545
- function Un(e, t) {
2558
+ function Vn(e, t) {
2546
2559
  if (!(!("inputs" in e) || e.inputs === void 0)) {
2547
2560
  if (!Array.isArray(e.inputs)) {
2548
2561
  t.push(
@@ -2555,11 +2568,11 @@ function Un(e, t) {
2555
2568
  return;
2556
2569
  }
2557
2570
  e.inputs.forEach(
2558
- (n, o) => qn(n, `inputs.${o}`, t)
2571
+ (n, o) => Ln(n, `inputs.${o}`, t)
2559
2572
  );
2560
2573
  }
2561
2574
  }
2562
- function Vn(e, t = "protocol") {
2575
+ function Hn(e, t = "protocol") {
2563
2576
  const n = [];
2564
2577
  if (!f(e))
2565
2578
  return n.push(
@@ -2609,9 +2622,9 @@ function Vn(e, t = "protocol") {
2609
2622
  )
2610
2623
  );
2611
2624
  }
2612
- return t === "dashboard" && Hn(o, n), { ok: n.length === 0, errors: n, warnings: [] };
2625
+ return t === "dashboard" && Gn(o, n), { ok: n.length === 0, errors: n, warnings: [] };
2613
2626
  }
2614
- function Hn(e, t) {
2627
+ function Gn(e, t) {
2615
2628
  const { mode: n, includeInputIds: o, excludeInputIds: a } = e;
2616
2629
  n === void 0 && t.push(
2617
2630
  r(
@@ -2645,7 +2658,7 @@ function Hn(e, t) {
2645
2658
  )
2646
2659
  );
2647
2660
  }
2648
- function Gn(e, t) {
2661
+ function zn(e, t) {
2649
2662
  var a, s, l;
2650
2663
  const n = new Set(
2651
2664
  Array.isArray(e.inputs) ? e.inputs.map((d) => f(d) ? d.inputId : void 0).filter((d) => typeof d == "string") : []
@@ -2668,10 +2681,10 @@ function Gn(e, t) {
2668
2681
  );
2669
2682
  }
2670
2683
  function se(e, t, n, o) {
2671
- e !== void 0 && (!Array.isArray(e) || e.some((a) => !p(a))) && n.push(r("invalid_input_options_dependencies", o, t));
2684
+ e !== void 0 && (!Array.isArray(e) || e.some((a) => !m(a))) && n.push(r("invalid_input_options_dependencies", o, t));
2672
2685
  }
2673
- const zn = new Set(z);
2674
- function Kn(e, t, n) {
2686
+ const Kn = new Set(z);
2687
+ function Qn(e, t, n) {
2675
2688
  if (f(e) && e.type === "temporal_bucket") {
2676
2689
  n.push(
2677
2690
  r(
@@ -2695,7 +2708,7 @@ function ze(e, t, n) {
2695
2708
  );
2696
2709
  return;
2697
2710
  }
2698
- const o = p(e.columnKey), a = f(e.field);
2711
+ const o = m(e.columnKey), a = f(e.field);
2699
2712
  if (o === a) {
2700
2713
  n.push(
2701
2714
  r(
@@ -2706,11 +2719,11 @@ function ze(e, t, n) {
2706
2719
  );
2707
2720
  return;
2708
2721
  }
2709
- a && b(e.field, `${t}.field`, n, {
2722
+ a && y(e.field, `${t}.field`, n, {
2710
2723
  required: !0
2711
2724
  });
2712
2725
  }
2713
- function Qn(e, t, n) {
2726
+ function Wn(e, t, n) {
2714
2727
  if (!f(e)) {
2715
2728
  n.push(
2716
2729
  r(
@@ -2721,7 +2734,7 @@ function Qn(e, t, n) {
2721
2734
  );
2722
2735
  return;
2723
2736
  }
2724
- p(e.key) || n.push(
2737
+ m(e.key) || n.push(
2725
2738
  r(
2726
2739
  "invalid_result_calculation_output",
2727
2740
  "Result calculation output needs a stable key.",
@@ -2733,9 +2746,9 @@ function Qn(e, t, n) {
2733
2746
  "Result calculation output dataType must be string, number, boolean, date, datetime, or unknown.",
2734
2747
  `${t}.dataType`
2735
2748
  )
2736
- ), Kn(e.format, `${t}.format`, n);
2749
+ ), Qn(e.format, `${t}.format`, n);
2737
2750
  }
2738
- function Wn(e, t) {
2751
+ function Xn(e, t) {
2739
2752
  if (e.analysis === void 0)
2740
2753
  return;
2741
2754
  if (!f(e.analysis)) {
@@ -2798,19 +2811,19 @@ function fe(e, t, n) {
2798
2811
  `${t}.kind`
2799
2812
  )
2800
2813
  ), e.kind === "absolute") {
2801
- if (p(e.start) || n.push(
2814
+ if (m(e.start) || n.push(
2802
2815
  r(
2803
2816
  "invalid_time_window",
2804
2817
  "Absolute time window start must be a non-empty ISO date or timestamp string.",
2805
2818
  `${t}.start`
2806
2819
  )
2807
- ), p(e.end) || n.push(
2820
+ ), m(e.end) || n.push(
2808
2821
  r(
2809
2822
  "invalid_time_window",
2810
2823
  "Absolute time window end must be a non-empty ISO date or timestamp string.",
2811
2824
  `${t}.end`
2812
2825
  )
2813
- ), p(e.start) && p(e.end)) {
2826
+ ), m(e.start) && m(e.end)) {
2814
2827
  const o = me(e.start), a = me(e.end);
2815
2828
  o || n.push(
2816
2829
  r(
@@ -2834,7 +2847,7 @@ function fe(e, t, n) {
2834
2847
  }
2835
2848
  return;
2836
2849
  }
2837
- (typeof e.unit != "string" || !zn.has(e.unit)) && n.push(
2850
+ (typeof e.unit != "string" || !Kn.has(e.unit)) && n.push(
2838
2851
  r(
2839
2852
  "invalid_time_window",
2840
2853
  `Time window unit must be one of: ${z.join(", ")}.`,
@@ -2886,7 +2899,7 @@ function ge(e, t, n) {
2886
2899
  return;
2887
2900
  }
2888
2901
  const l = o;
2889
- b(l.field, `${s}.field`, n, {
2902
+ y(l.field, `${s}.field`, n, {
2890
2903
  required: !0
2891
2904
  }), l.scope !== void 0 && l.scope !== "row" && l.scope !== "aggregate" && n.push(
2892
2905
  r(
@@ -2935,9 +2948,9 @@ function ge(e, t, n) {
2935
2948
  return;
2936
2949
  }
2937
2950
  if (l.values !== void 0) {
2938
- const u = l.values.length;
2951
+ const p = l.values.length;
2939
2952
  if (l.operator === "between" || l.operator === "not_between") {
2940
- u !== 2 && n.push(
2953
+ p !== 2 && n.push(
2941
2954
  r(
2942
2955
  "invalid_analytics_filter_values",
2943
2956
  "Between analytics filters must include exactly two values.",
@@ -2946,7 +2959,7 @@ function ge(e, t, n) {
2946
2959
  );
2947
2960
  return;
2948
2961
  }
2949
- (l.operator === "contains" || l.operator === "not_contains" || l.operator === "=" || l.operator === "!=" || l.operator === ">" || l.operator === ">=" || l.operator === "<" || l.operator === "<=" || l.operator === void 0) && u !== 1 && n.push(
2962
+ (l.operator === "contains" || l.operator === "not_contains" || l.operator === "=" || l.operator === "!=" || l.operator === ">" || l.operator === ">=" || l.operator === "<" || l.operator === "<=" || l.operator === void 0) && p !== 1 && n.push(
2950
2963
  r(
2951
2964
  "invalid_analytics_filter_values",
2952
2965
  "Scalar analytics filters must include exactly one value. Use in/not_in for multiple values.",
@@ -2957,7 +2970,7 @@ function ge(e, t, n) {
2957
2970
  });
2958
2971
  }
2959
2972
  }
2960
- function za(e) {
2973
+ function Ka(e) {
2961
2974
  const t = [];
2962
2975
  if (!f(e))
2963
2976
  return t.push(
@@ -2966,13 +2979,13 @@ function za(e) {
2966
2979
  "Result calculation must be a structured object."
2967
2980
  )
2968
2981
  ), { ok: !1, errors: t, warnings: [] };
2969
- if (p(e.id) || t.push(
2982
+ if (m(e.id) || t.push(
2970
2983
  r(
2971
2984
  "invalid_result_calculation_id",
2972
2985
  "Result calculation needs an id.",
2973
2986
  "id"
2974
2987
  )
2975
- ), p(e.label) || t.push(
2988
+ ), m(e.label) || t.push(
2976
2989
  r(
2977
2990
  "invalid_result_calculation_label",
2978
2991
  "Result calculation needs a label.",
@@ -2984,9 +2997,9 @@ function za(e) {
2984
2997
  "Result calculation kind must be percent_of_total, rank, running_total, or previous_row_delta.",
2985
2998
  "kind"
2986
2999
  )
2987
- ), ze(e.input, "input", t), Qn(e.output, "output", t), e.kind === "percent_of_total") {
3000
+ ), ze(e.input, "input", t), Wn(e.output, "output", t), e.kind === "percent_of_total") {
2988
3001
  const n = e.denominator;
2989
- n !== void 0 && (f(n) ? n.scope === "population" ? (b(n.metric, "denominator.metric", t, {
3002
+ n !== void 0 && (f(n) ? n.scope === "population" ? (y(n.metric, "denominator.metric", t, {
2990
3003
  required: !0
2991
3004
  }), ge(
2992
3005
  n.filters,
@@ -3044,13 +3057,13 @@ function jt(e) {
3044
3057
  "Analytics intent version must be 1.",
3045
3058
  "version"
3046
3059
  )
3047
- ), be(e.source, "source", t), Xn(e, t), Un(e, t), "relationshipHint" in e && e.relationshipHint !== void 0 && Te(
3060
+ ), be(e.source, "source", t), Zn(e, t), Vn(e, t), "relationshipHint" in e && e.relationshipHint !== void 0 && Te(
3048
3061
  e.relationshipHint,
3049
3062
  "relationshipHint",
3050
3063
  t
3051
3064
  ), e.kind === "metric") {
3052
3065
  const a = Array.isArray(e.measures) ? e.measures.filter(
3053
- (s) => f(s) && p(s.name)
3066
+ (s) => f(s) && m(s.name)
3054
3067
  ) : [];
3055
3068
  if (!Array.isArray(e.measures) || e.measures.length === 0 ? t.push(
3056
3069
  r(
@@ -3059,7 +3072,7 @@ function jt(e) {
3059
3072
  "measures"
3060
3073
  )
3061
3074
  ) : e.measures.some(
3062
- (s) => !f(s) || !p(s.name)
3075
+ (s) => !f(s) || !m(s.name)
3063
3076
  ) && t.push(
3064
3077
  r(
3065
3078
  "invalid_measure_list",
@@ -3067,13 +3080,13 @@ function jt(e) {
3067
3080
  "measures"
3068
3081
  )
3069
3082
  ), a.forEach((s, l) => {
3070
- b(s, `measures.${l}`, t, {
3083
+ y(s, `measures.${l}`, t, {
3071
3084
  required: !0
3072
3085
  });
3073
- }), a.length > 0 && !Dn(a)) {
3086
+ }), a.length > 0 && !En(a)) {
3074
3087
  const s = a.find(
3075
3088
  (l, d) => a.some(
3076
- (c, u) => u !== d && Nt(c, l)
3089
+ (c, p) => p !== d && Et(c, l)
3077
3090
  )
3078
3091
  );
3079
3092
  s && t.push(
@@ -3084,7 +3097,7 @@ function jt(e) {
3084
3097
  )
3085
3098
  );
3086
3099
  }
3087
- if (f(e.primaryMeasure) && p(e.primaryMeasure.name) && Re(
3100
+ if (f(e.primaryMeasure) && m(e.primaryMeasure.name) && Re(
3088
3101
  e.primaryMeasure,
3089
3102
  a
3090
3103
  ).length > 1 && t.push(
@@ -3093,9 +3106,9 @@ function jt(e) {
3093
3106
  "Metric intent primaryMeasure must identify exactly one selected measure.",
3094
3107
  "primaryMeasure"
3095
3108
  )
3096
- ), e.primaryMeasure !== void 0 && (b(e.primaryMeasure, "primaryMeasure", t, {
3109
+ ), e.primaryMeasure !== void 0 && (y(e.primaryMeasure, "primaryMeasure", t, {
3097
3110
  required: !0
3098
- }), f(e.primaryMeasure) && p(e.primaryMeasure.name) && a.length > 0 && !jn(
3111
+ }), f(e.primaryMeasure) && m(e.primaryMeasure.name) && a.length > 0 && !$n(
3099
3112
  e.primaryMeasure,
3100
3113
  a
3101
3114
  ) && t.push(
@@ -3111,21 +3124,21 @@ function jt(e) {
3111
3124
  "dimensions"
3112
3125
  )
3113
3126
  ) : Array.isArray(e.dimensions) && e.dimensions.some(
3114
- (s) => !f(s) || !p(s.name)
3127
+ (s) => !f(s) || !m(s.name)
3115
3128
  ) && t.push(
3116
3129
  r(
3117
3130
  "invalid_measure_dimensions",
3118
3131
  "Metric intent dimensions must be an array of field references with names.",
3119
3132
  "dimensions"
3120
3133
  )
3121
- ), e.dateField !== void 0 && b(e.dateField, "dateField", t), e.timeWindow !== void 0 && (fe(e.timeWindow, "timeWindow", t), e.dateField || t.push(
3134
+ ), e.dateField !== void 0 && y(e.dateField, "dateField", t), e.timeWindow !== void 0 && (fe(e.timeWindow, "timeWindow", t), e.dateField || t.push(
3122
3135
  r(
3123
3136
  "missing_time_window_date_field",
3124
3137
  "Metric timeWindow needs a dateField.",
3125
3138
  "dateField"
3126
3139
  )
3127
3140
  )), ge(e.filters, "filters", t), Array.isArray(e.dimensions) && e.dimensions.forEach((s, l) => {
3128
- b(s, `dimensions.${l}`, t);
3141
+ y(s, `dimensions.${l}`, t);
3129
3142
  }), e.orderBy !== void 0) {
3130
3143
  if (!f(e.orderBy))
3131
3144
  t.push(
@@ -3135,7 +3148,7 @@ function jt(e) {
3135
3148
  "orderBy"
3136
3149
  )
3137
3150
  );
3138
- else if (b(e.orderBy.field, "orderBy.field", t, {
3151
+ else if (y(e.orderBy.field, "orderBy.field", t, {
3139
3152
  required: !0
3140
3153
  }), e.orderBy.direction !== "asc" && e.orderBy.direction !== "desc" && t.push(
3141
3154
  r(
@@ -3143,15 +3156,15 @@ function jt(e) {
3143
3156
  "Metric intent orderBy direction must be asc or desc.",
3144
3157
  "orderBy.direction"
3145
3158
  )
3146
- ), f(e.orderBy.field) && p(e.orderBy.field.name)) {
3159
+ ), f(e.orderBy.field) && m(e.orderBy.field.name)) {
3147
3160
  const s = [
3148
3161
  ...a,
3149
3162
  ...e.timeGrain && e.dateField && f(e.dateField) ? [e.dateField] : [],
3150
3163
  ...Array.isArray(e.dimensions) ? e.dimensions.filter(
3151
- (l) => f(l) && p(l.name)
3164
+ (l) => f(l) && m(l.name)
3152
3165
  ) : []
3153
3166
  ];
3154
- s.length > 0 && !$n(
3167
+ s.length > 0 && !Cn(
3155
3168
  e.orderBy.field,
3156
3169
  s
3157
3170
  ) && t.push(
@@ -3163,7 +3176,7 @@ function jt(e) {
3163
3176
  );
3164
3177
  }
3165
3178
  }
3166
- Wn(e, t);
3179
+ Xn(e, t);
3167
3180
  } else if (e.kind === "records") {
3168
3181
  if (!Array.isArray(e.fields) || e.fields.length === 0 ? t.push(
3169
3182
  r(
@@ -3172,7 +3185,7 @@ function jt(e) {
3172
3185
  "fields"
3173
3186
  )
3174
3187
  ) : e.fields.some(
3175
- (a) => !f(a) || !p(a.name)
3188
+ (a) => !f(a) || !m(a.name)
3176
3189
  ) && t.push(
3177
3190
  r(
3178
3191
  "invalid_record_fields",
@@ -3180,8 +3193,8 @@ function jt(e) {
3180
3193
  "fields"
3181
3194
  )
3182
3195
  ), Array.isArray(e.fields) && e.fields.forEach((a, s) => {
3183
- b(a, `fields.${s}`, t);
3184
- }), e.dateField !== void 0 && b(e.dateField, "dateField", t), He(e.pagination, "pagination", t), e.timeWindow !== void 0 && (fe(e.timeWindow, "timeWindow", t), e.dateField || t.push(
3196
+ y(a, `fields.${s}`, t);
3197
+ }), e.dateField !== void 0 && y(e.dateField, "dateField", t), He(e.pagination, "pagination", t), e.timeWindow !== void 0 && (fe(e.timeWindow, "timeWindow", t), e.dateField || t.push(
3185
3198
  r(
3186
3199
  "missing_time_window_date_field",
3187
3200
  "Records timeWindow needs a dateField.",
@@ -3195,7 +3208,7 @@ function jt(e) {
3195
3208
  `filters.${s}.scope`
3196
3209
  )
3197
3210
  );
3198
- }), e.orderBy !== void 0 && (f(e.orderBy) ? (b(e.orderBy.field, "orderBy.field", t, {
3211
+ }), e.orderBy !== void 0 && (f(e.orderBy) ? (y(e.orderBy.field, "orderBy.field", t, {
3199
3212
  required: !0
3200
3213
  }), e.orderBy.direction !== "asc" && e.orderBy.direction !== "desc" && t.push(
3201
3214
  r(
@@ -3234,7 +3247,7 @@ function jt(e) {
3234
3247
  "totals.measures"
3235
3248
  )
3236
3249
  ) : a.forEach((s, l) => {
3237
- b(s, `totals.measures.${l}`, t, {
3250
+ y(s, `totals.measures.${l}`, t, {
3238
3251
  required: !0
3239
3252
  }), (!f(s) || s.role !== "measure") && t.push(
3240
3253
  r(
@@ -3245,20 +3258,20 @@ function jt(e) {
3245
3258
  );
3246
3259
  });
3247
3260
  }
3248
- } else e.kind === "inputOptions" ? Ln(e, t) : e.kind === "sql" ? (((o = e.source) == null ? void 0 : o.kind) !== "sql" && t.push(
3261
+ } else e.kind === "inputOptions" ? Un(e, t) : e.kind === "sql" ? (((o = e.source) == null ? void 0 : o.kind) !== "sql" && t.push(
3249
3262
  r(
3250
3263
  "invalid_sql_source",
3251
3264
  "SQL analytics intent must use a SQL execution source.",
3252
3265
  "source"
3253
3266
  )
3254
- ), p(e.sql) || t.push(
3267
+ ), m(e.sql) || t.push(
3255
3268
  r("missing_sql", "SQL analytics intent needs SQL text.", "sql")
3256
- ), En(
3269
+ ), jn(
3257
3270
  e.defaultParameters,
3258
3271
  "defaultParameters",
3259
3272
  t
3260
3273
  ), Array.isArray(e.fields) && e.fields.forEach((a, s) => {
3261
- b(a, `fields.${s}`, t);
3274
+ y(a, `fields.${s}`, t);
3262
3275
  }), He(e.pagination, "pagination", t)) : t.push(
3263
3276
  r(
3264
3277
  "invalid_analytics_kind",
@@ -3273,7 +3286,7 @@ function jt(e) {
3273
3286
  repairHints: Ke(t)
3274
3287
  };
3275
3288
  }
3276
- function Xn(e, t) {
3289
+ function Zn(e, t) {
3277
3290
  if (!(!("derivedFields" in e) || e.derivedFields === void 0)) {
3278
3291
  if (!Array.isArray(e.derivedFields)) {
3279
3292
  t.push(
@@ -3297,7 +3310,7 @@ function Xn(e, t) {
3297
3310
  });
3298
3311
  }
3299
3312
  }
3300
- function Zn(e) {
3313
+ function Jn(e) {
3301
3314
  const t = [], n = [];
3302
3315
  if (!e || typeof e != "object")
3303
3316
  return {
@@ -3330,13 +3343,13 @@ function Zn(e) {
3330
3343
  "obligations"
3331
3344
  )
3332
3345
  ) : e.obligations.forEach((o, a) => {
3333
- p(o.id) || t.push(
3346
+ m(o.id) || t.push(
3334
3347
  r(
3335
3348
  "missing_obligation_id",
3336
3349
  "Each analytics obligation needs an id.",
3337
3350
  `obligations.${a}.id`
3338
3351
  )
3339
- ), p(o.prompt) || t.push(
3352
+ ), m(o.prompt) || t.push(
3340
3353
  r(
3341
3354
  "missing_obligation_prompt",
3342
3355
  "Each analytics obligation needs a prompt.",
@@ -3345,7 +3358,7 @@ function Zn(e) {
3345
3358
  );
3346
3359
  });
3347
3360
  else if (e.kind === "dashboard_change" || e.kind === "data_app_change") {
3348
- if (p(e.instruction) || t.push(
3361
+ if (m(e.instruction) || t.push(
3349
3362
  r(
3350
3363
  "missing_instruction",
3351
3364
  "Change operation intent needs an instruction.",
@@ -3372,7 +3385,7 @@ function Zn(e) {
3372
3385
  repairHints: $t(t)
3373
3386
  };
3374
3387
  }
3375
- function Ka(e) {
3388
+ function Qa(e) {
3376
3389
  const t = [], n = [];
3377
3390
  if (!e || typeof e != "object")
3378
3391
  return {
@@ -3400,7 +3413,7 @@ function Ka(e) {
3400
3413
  "kind"
3401
3414
  )
3402
3415
  );
3403
- const o = Zn(
3416
+ const o = Jn(
3404
3417
  e.operationIntent
3405
3418
  );
3406
3419
  return t.push(...o.errors), n.push(...o.warnings), Array.isArray(e.plannedToolCalls) || t.push(
@@ -3510,14 +3523,14 @@ function Ke(e) {
3510
3523
  }
3511
3524
  }).filter((t) => !!t);
3512
3525
  }
3513
- function Jn(e, t, n, o) {
3526
+ function ea(e, t, n, o) {
3514
3527
  if (!e || typeof e != "object") {
3515
3528
  n.push(
3516
3529
  r("invalid_view", "Dashboard view must be an object.", t)
3517
3530
  );
3518
3531
  return;
3519
3532
  }
3520
- if (p(e.title) || n.push(
3533
+ if (m(e.title) || n.push(
3521
3534
  r("missing_view_title", "Dashboard view needs a title.", t)
3522
3535
  ), !e.presentation || typeof e.presentation != "object") {
3523
3536
  n.push(
@@ -3530,7 +3543,7 @@ function Jn(e, t, n, o) {
3530
3543
  return;
3531
3544
  }
3532
3545
  if (e.presentation.kind === "text") {
3533
- p(e.text) || o.push(
3546
+ m(e.text) || o.push(
3534
3547
  r(
3535
3548
  "missing_text_content",
3536
3549
  "Text views should include text content.",
@@ -3574,7 +3587,7 @@ function Jn(e, t, n, o) {
3574
3587
  )
3575
3588
  );
3576
3589
  }
3577
- function Qa(e) {
3590
+ function Wa(e) {
3578
3591
  const t = [], n = [];
3579
3592
  if (!e || typeof e != "object")
3580
3593
  return {
@@ -3591,7 +3604,7 @@ function Qa(e) {
3591
3604
  r("invalid_version", "Dashboard intent version must be 1.")
3592
3605
  ), e.kind !== "dashboard" && t.push(
3593
3606
  r("invalid_kind", "Experience intent kind must be dashboard.")
3594
- ), p(e.title) || t.push(
3607
+ ), m(e.title) || t.push(
3595
3608
  r("missing_title", "Dashboard intent needs a title.", "title")
3596
3609
  );
3597
3610
  const o = Array.isArray(e.inputs) ? e.inputs : [], a = Ge(
@@ -3604,21 +3617,21 @@ function Qa(e) {
3604
3617
  "inputs"
3605
3618
  )
3606
3619
  );
3607
- for (const [c, u] of o.entries()) {
3608
- const m = `inputs.${c}`;
3609
- if (!f(u)) {
3620
+ for (const [c, p] of o.entries()) {
3621
+ const u = `inputs.${c}`;
3622
+ if (!f(p)) {
3610
3623
  t.push(
3611
- r("invalid_input", "Dashboard input must be an object.", m)
3624
+ r("invalid_input", "Dashboard input must be an object.", u)
3612
3625
  );
3613
3626
  continue;
3614
3627
  }
3615
- p(u.id) || t.push(
3616
- r("missing_input_id", "Input needs an id.", `${m}.id`)
3617
- ), p(u.label) || t.push(
3618
- r("missing_input_label", "Input needs a label.", `${m}.label`)
3619
- ), !u.field || !p(u.field.name) ? t.push(
3620
- r("missing_input_field", "Input needs a field.", `${m}.field`)
3621
- ) : b(u.field, `${m}.field`, t);
3628
+ m(p.id) || t.push(
3629
+ r("missing_input_id", "Input needs an id.", `${u}.id`)
3630
+ ), m(p.label) || t.push(
3631
+ r("missing_input_label", "Input needs a label.", `${u}.label`)
3632
+ ), !p.field || !m(p.field.name) ? t.push(
3633
+ r("missing_input_field", "Input needs a field.", `${u}.field`)
3634
+ ) : y(p.field, `${u}.field`, t);
3622
3635
  }
3623
3636
  const s = Array.isArray(e.sections) ? e.sections : [];
3624
3637
  s.length === 0 && t.push(
@@ -3629,7 +3642,7 @@ function Qa(e) {
3629
3642
  )
3630
3643
  );
3631
3644
  const l = s.flatMap(
3632
- (c) => c && typeof c == "object" && Array.isArray(c.views) ? c.views.filter(f).map((u) => u.id).filter((u) => !!u) : []
3645
+ (c) => c && typeof c == "object" && Array.isArray(c.views) ? c.views.filter(f).map((p) => p.id).filter((p) => !!p) : []
3633
3646
  ), d = Ge(l);
3634
3647
  d && t.push(
3635
3648
  r(
@@ -3638,38 +3651,38 @@ function Qa(e) {
3638
3651
  "sections"
3639
3652
  )
3640
3653
  );
3641
- for (const [c, u] of s.entries()) {
3642
- const m = `sections.${c}`;
3643
- if (!u || typeof u != "object") {
3654
+ for (const [c, p] of s.entries()) {
3655
+ const u = `sections.${c}`;
3656
+ if (!p || typeof p != "object") {
3644
3657
  t.push(
3645
3658
  r(
3646
3659
  "invalid_section",
3647
3660
  "Dashboard section must be an object.",
3648
- m
3661
+ u
3649
3662
  )
3650
3663
  );
3651
3664
  continue;
3652
3665
  }
3653
- if (p(u.title) || t.push(
3666
+ if (m(p.title) || t.push(
3654
3667
  r(
3655
3668
  "missing_section_title",
3656
3669
  "Dashboard section needs a title.",
3657
- m
3670
+ u
3658
3671
  )
3659
- ), !Array.isArray(u.views) || u.views.length === 0) {
3672
+ ), !Array.isArray(p.views) || p.views.length === 0) {
3660
3673
  t.push(
3661
3674
  r(
3662
3675
  "missing_section_views",
3663
3676
  "Dashboard section needs at least one view.",
3664
- `${m}.views`
3677
+ `${u}.views`
3665
3678
  )
3666
3679
  );
3667
3680
  continue;
3668
3681
  }
3669
- for (const [_, y] of u.views.entries())
3670
- Jn(
3671
- y,
3672
- `${m}.views.${_}`,
3682
+ for (const [_, b] of p.views.entries())
3683
+ ea(
3684
+ b,
3685
+ `${u}.views.${_}`,
3673
3686
  t,
3674
3687
  n
3675
3688
  );
@@ -3677,9 +3690,9 @@ function Qa(e) {
3677
3690
  return { ok: t.length === 0, errors: t, warnings: n };
3678
3691
  }
3679
3692
  export {
3680
- Se as $,
3681
- La as A,
3682
- Ni as B,
3693
+ Ba as $,
3694
+ Ua as A,
3695
+ Ei as B,
3683
3696
  le as C,
3684
3697
  Ci as D,
3685
3698
  Ae as E,
@@ -3687,143 +3700,144 @@ export {
3687
3700
  St as G,
3688
3701
  ce as H,
3689
3702
  It as I,
3690
- Ei as J,
3703
+ Ni as J,
3691
3704
  F as K,
3692
3705
  ji as L,
3693
- ya as M,
3706
+ va as M,
3694
3707
  dn as N,
3695
3708
  kt as O,
3696
3709
  Yi as P,
3697
3710
  cn as Q,
3698
- na as R,
3711
+ aa as R,
3699
3712
  gt as S,
3700
- aa as T,
3713
+ oa as T,
3701
3714
  Y as U,
3702
3715
  Ye as V,
3703
- xe as W,
3704
- qe as X,
3705
- J as Y,
3706
- In as Z,
3707
- Pa as _,
3716
+ hn as W,
3717
+ xe as X,
3718
+ qe as Y,
3719
+ J as Z,
3720
+ kn as _,
3708
3721
  Mt as a,
3709
- Tt as a$,
3710
- Ot as a0,
3711
- ta as a1,
3712
- De as a2,
3713
- z as a3,
3714
- ia as a4,
3715
- Yt as a5,
3716
- oa as a6,
3717
- Bt as a7,
3718
- qt as a8,
3719
- me as a9,
3720
- he as aA,
3721
- _e as aB,
3722
- Qe as aC,
3723
- Qt as aD,
3724
- We as aE,
3725
- Xe as aF,
3726
- Ze as aG,
3727
- Je as aH,
3728
- et as aI,
3729
- sa as aJ,
3722
+ Fe as a$,
3723
+ Se as a0,
3724
+ Ot as a1,
3725
+ ia as a2,
3726
+ De as a3,
3727
+ z as a4,
3728
+ na as a5,
3729
+ Yt as a6,
3730
+ sa as a7,
3731
+ Bt as a8,
3732
+ qt as a9,
3733
+ zt as aA,
3734
+ he as aB,
3735
+ _e as aC,
3736
+ Qe as aD,
3737
+ Qt as aE,
3738
+ We as aF,
3739
+ Xe as aG,
3740
+ Ze as aH,
3741
+ Je as aI,
3742
+ et as aJ,
3730
3743
  ra as aK,
3731
- j as aL,
3732
- la as aM,
3744
+ la as aL,
3745
+ j as aM,
3733
3746
  da as aN,
3734
- Ne as aO,
3735
- ua as aP,
3747
+ ua as aO,
3748
+ Ee as aP,
3736
3749
  ca as aQ,
3737
3750
  pa as aR,
3738
- ii as aS,
3739
- ni as aT,
3740
- ma as aU,
3751
+ ma as aS,
3752
+ ii as aT,
3753
+ ni as aU,
3741
3754
  fa as aV,
3742
- Ba as aW,
3755
+ ga as aW,
3743
3756
  qa as aX,
3744
- T as aY,
3745
- Rt as aZ,
3746
- Fe as a_,
3747
- Vn as aa,
3748
- za as ab,
3749
- jt as ac,
3750
- Zn as ad,
3751
- Ka as ae,
3757
+ La as aY,
3758
+ T as aZ,
3759
+ Rt as a_,
3760
+ me as aa,
3761
+ Hn as ab,
3762
+ Ka as ac,
3763
+ jt as ad,
3764
+ Jn as ae,
3752
3765
  Qa as af,
3753
- ve as ag,
3754
- ke as ah,
3755
- Si as ai,
3756
- Ii as aj,
3757
- st as ak,
3758
- xi as al,
3759
- Fi as am,
3760
- dt as an,
3761
- ut as ao,
3762
- $e as ap,
3763
- pt as aq,
3764
- ga as ar,
3766
+ Wa as ag,
3767
+ ve as ah,
3768
+ ke as ai,
3769
+ Si as aj,
3770
+ Ii as ak,
3771
+ st as al,
3772
+ xi as am,
3773
+ Fi as an,
3774
+ dt as ao,
3775
+ ut as ap,
3776
+ $e as aq,
3777
+ pt as ar,
3765
3778
  ha as as,
3766
- Ut as at,
3767
- O as au,
3768
- R as av,
3769
- U as aw,
3770
- te as ax,
3771
- X as ay,
3772
- zt as az,
3773
- va as b,
3774
- Va as b0,
3775
- ft as b1,
3776
- L as b2,
3777
- Di as b3,
3778
- H as b4,
3779
- ba as b5,
3780
- x as b6,
3781
- Ri as b7,
3782
- _a as b8,
3783
- mt as b9,
3784
- $ as ba,
3785
- Ee as bb,
3786
- Zi as bc,
3787
- hn as bd,
3788
- Ta as be,
3789
- zi as bf,
3790
- Ca as bg,
3791
- $a as bh,
3792
- Ma as bi,
3779
+ _a as at,
3780
+ Ut as au,
3781
+ O as av,
3782
+ R as aw,
3783
+ U as ax,
3784
+ te as ay,
3785
+ X as az,
3786
+ Sa as b,
3787
+ Tt as b0,
3788
+ Ha as b1,
3789
+ ft as b2,
3790
+ L as b3,
3791
+ Di as b4,
3792
+ H as b5,
3793
+ ya as b6,
3794
+ x as b7,
3795
+ Ri as b8,
3796
+ ba as b9,
3797
+ mt as ba,
3798
+ $ as bb,
3799
+ Ne as bc,
3800
+ Zi as bd,
3801
+ _n as be,
3802
+ Ma as bf,
3803
+ zi as bg,
3804
+ Oa as bh,
3805
+ Ca as bi,
3793
3806
  Da as bj,
3794
- Xi as bk,
3795
- Ji as bl,
3796
- Ea as bm,
3797
- Na as bn,
3798
- ja as bo,
3799
- Fa as bp,
3800
- ue as bq,
3801
- Ra as br,
3802
- _n as bs,
3803
- Ie as bt,
3804
- oi as bu,
3805
- Sa as c,
3807
+ Ea as bk,
3808
+ Xi as bl,
3809
+ Ji as bm,
3810
+ ja as bn,
3811
+ Na as bo,
3812
+ $a as bp,
3813
+ Ra as bq,
3814
+ ue as br,
3815
+ Ta as bs,
3816
+ bn as bt,
3817
+ Ie as bu,
3818
+ oi as bv,
3819
+ Ia as c,
3806
3820
  Oi as d,
3807
3821
  ht as e,
3808
- ka as f,
3822
+ wa as f,
3809
3823
  $i as g,
3810
- wa as h,
3824
+ Aa as h,
3811
3825
  Lt as i,
3812
- Aa as j,
3813
- xa as k,
3826
+ xa as j,
3827
+ Fa as k,
3814
3828
  de as l,
3815
3829
  gn as m,
3816
- Ia as n,
3830
+ ka as n,
3817
3831
  At as o,
3818
- Ha as p,
3832
+ Ga as p,
3819
3833
  pe as q,
3820
- Ya as r,
3821
- Tn as s,
3822
- An as t,
3823
- Ua as u,
3834
+ Pa as r,
3835
+ Mn as s,
3836
+ xn as t,
3837
+ Va as u,
3824
3838
  re as v,
3825
3839
  Pt as w,
3826
3840
  mn as x,
3827
- Oa as y,
3828
- Ga as z
3841
+ Ya as y,
3842
+ za as z
3829
3843
  };