@ai-matrx/design-system 0.49.32 → 0.49.33

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.
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { ReactNode } from 'react';
3
- import { h as MatrxDataTableProps, i as TableViewSnapshot, d as MatrxDataTableRecordControls, j as MatrxDataTableRead, k as ColumnMarker, M as MatrxColumnDef, l as MatrxDrillDimension, m as MatrxDrillMeasure, n as MatrxDrillQuestion, o as MatrxDrillAnswers } from '../layered-filters-DmI_v_ku.cjs';
4
- export { A as AnyOfColumnSearch, p as CellEditType, q as CellEditsMap, f as ColumnFilterKind, a as ColumnFilterValue, C as ColumnFiltersState, r as MATRX_DRILL_GRAINS, s as MATRX_DRILL_MAX_LEVELS, t as MATRX_DRILL_NONE, u as MATRX_DRILL_OTHER_COLUMN, v as MATRX_DRILL_PIVOT_COLUMNS, w as MatrxDataTableContextMenuConfig, g as MatrxDataTableCopyConfig, x as MatrxDataTableCoverageConfig, c as MatrxDataTableDensity, y as MatrxDataTableDetailConfig, z as MatrxDataTableDrillConfig, B as MatrxDataTableEditConfig, D as MatrxDataTableEmptyState, E as MatrxDataTableExpandedDetailConfig, F as MatrxDataTableFacetsConfig, G as MatrxDataTableFilterUi, H as MatrxDataTableGroupingConfig, I as MatrxDataTableHierarchyConfig, J as MatrxDataTableHierarchyMove, K as MatrxDataTableMobileCardControls, N as MatrxDataTableMultiExpandedDetailConfig, O as MatrxDataTableQueryControl, e as MatrxDataTableQueryState, P as MatrxDataTableReadStatus, Q as MatrxDataTableSelectionConfig, R as MatrxDataTableSingleExpandedDetailConfig, U as MatrxDataTableSourceProcessing, V as MatrxDataTableSpreadsheetConfig, W as MatrxDataTableStyleConfig, X as MatrxDataTableSummaryConfig, Y as MatrxDataTableSummaryContext, Z as MatrxDataTableSummaryMetric, _ as MatrxDataTableToolbar, $ as MatrxDataTableUrlStateConfig, a0 as MatrxDataTableVirtualizeConfig, a1 as MatrxDataTableWindowConfig, a2 as MatrxDrillAnswerRow, a3 as MatrxDrillCrumb, a4 as MatrxDrillDimensionKind, a5 as MatrxDrillFilter, a6 as MatrxDrillGrain, a7 as MatrxDrillNode, a8 as MatrxDrillOther, a9 as MatrxDrillPivotColumn, aa as MatrxDrillRequest, ab as MatrxTablePagination, ac as NumberFilterOp, ad as SavedTableViewTab, ae as SortDirection, S as SortState, af as SpreadsheetSelection, ag as TableRankedSearchOptions, b as TableSavedViewsProps, T as TableSearchMatchMode, ah as TableSearchRole, ai as TableSearchScope, aj as TableViewQuery, ak as TableViewTab, al as TableViewTabs, am as TableViewTabsProps, an as TableViewTabsStore, ao as TextFilterMode, ap as ToolbarFacet, aq as addressHasDrill, ar as bucketLabel, as as bucketWindow, at as buildDrillTree, au as dimensionFor, av as dimensionRefLabel, aw as dimensionRefs, ax as drillCrumbs, ay as drillInto, az as drillIsGrouped, aA as drillPath, aB as drillQuestionFromParams, aC as drillQuestionToParams, aD as drillRequestKey, aE as drillRequests, aF as drillToRecords, aG as drillValueLabel, aH as emptyDrillQuestion, aI as inferTableSearchRole, aJ as nextDrillLevel, aK as otherOf, aL as parseDimensionRef, aM as pivotCell, aN as pivotColumns, aO as rankTableSearchRows, aP as resolveTableSearchScopes, aQ as sameDrillQuestion, aR as zoomOutTo } from '../layered-filters-DmI_v_ku.cjs';
3
+ import { h as MatrxDataTableProps, i as TableViewSnapshot, d as MatrxDataTableRecordControls, j as MatrxDataTableRead, k as ColumnMarker, M as MatrxColumnDef, l as MatrxDrillDimension, m as MatrxDrillMeasure, n as MatrxDrillQuestion, o as MatrxDrillAnswers } from '../layered-filters-Bxc5mB6_.cjs';
4
+ export { A as AnyOfColumnSearch, p as CellEditType, q as CellEditsMap, f as ColumnFilterKind, a as ColumnFilterValue, C as ColumnFiltersState, r as MATRX_DRILL_GRAINS, s as MATRX_DRILL_MAX_LEVELS, t as MATRX_DRILL_NONE, u as MATRX_DRILL_OTHER_COLUMN, v as MATRX_DRILL_PIVOT_COLUMNS, w as MatrxDataTableContextMenuConfig, g as MatrxDataTableCopyConfig, x as MatrxDataTableCoverageConfig, c as MatrxDataTableDensity, y as MatrxDataTableDetailConfig, z as MatrxDataTableDrillConfig, B as MatrxDataTableEditConfig, D as MatrxDataTableEmptyState, E as MatrxDataTableExpandedDetailConfig, F as MatrxDataTableFacetsConfig, G as MatrxDataTableFilterUi, H as MatrxDataTableGroupingConfig, I as MatrxDataTableHierarchyConfig, J as MatrxDataTableHierarchyMove, K as MatrxDataTableMobileCardControls, N as MatrxDataTableMultiExpandedDetailConfig, O as MatrxDataTableQueryControl, e as MatrxDataTableQueryState, P as MatrxDataTableReadStatus, Q as MatrxDataTableSelectionConfig, R as MatrxDataTableSingleExpandedDetailConfig, U as MatrxDataTableSourceProcessing, V as MatrxDataTableSpreadsheetConfig, W as MatrxDataTableStyleConfig, X as MatrxDataTableSummaryConfig, Y as MatrxDataTableSummaryContext, Z as MatrxDataTableSummaryMetric, _ as MatrxDataTableToolbar, $ as MatrxDataTableUrlStateConfig, a0 as MatrxDataTableVirtualizeConfig, a1 as MatrxDataTableWindowConfig, a2 as MatrxDrillAnswerRow, a3 as MatrxDrillCrumb, a4 as MatrxDrillDimensionKind, a5 as MatrxDrillFilter, a6 as MatrxDrillGrain, a7 as MatrxDrillNode, a8 as MatrxDrillOther, a9 as MatrxDrillPivotColumn, aa as MatrxDrillRequest, ab as MatrxTablePagination, ac as NumberFilterOp, ad as SavedTableViewTab, ae as SortDirection, S as SortState, af as SpreadsheetSelection, ag as TableRankedSearchOptions, b as TableSavedViewsProps, T as TableSearchMatchMode, ah as TableSearchRole, ai as TableSearchScope, aj as TableViewQuery, ak as TableViewTab, al as TableViewTabs, am as TableViewTabsProps, an as TableViewTabsStore, ao as TextFilterMode, ap as ToolbarFacet, aq as addressHasDrill, ar as bucketLabel, as as bucketWindow, at as buildDrillTree, au as dimensionFor, av as dimensionRefLabel, aw as dimensionRefs, ax as drillCrumbs, ay as drillInto, az as drillIsGrouped, aA as drillPath, aB as drillQuestionFromParams, aC as drillQuestionToParams, aD as drillRequestKey, aE as drillRequests, aF as drillToRecords, aG as drillValueLabel, aH as emptyDrillQuestion, aI as inferTableSearchRole, aJ as nextDrillLevel, aK as otherOf, aL as parseDimensionRef, aM as pivotCell, aN as pivotColumns, aO as rankTableSearchRows, aP as resolveTableSearchScopes, aQ as sameDrillQuestion, aR as zoomOutTo } from '../layered-filters-Bxc5mB6_.cjs';
5
5
  import { TableReadFailureProps, TableStaleNoticeProps } from './host.cjs';
6
6
  export { MatrxDataTableHost, MatrxDataTableProvider, MatrxTableRowAlchemy, TableContextMenuBoundaryProps, TableDoors, TableEntityRefProps, TableLinkProps, TableMenuIconProps, TablePeekProps, TableSidePanelProps, TableToolbarActionProps, TableWindowPanelProps, useMatrxDataTableHost, useMatrxTableRowAlchemy } from './host.cjs';
7
7
  import { CopyControlProps } from './copy-types.cjs';
@@ -327,13 +327,15 @@ interface MatrxDrillAnswerTableProps {
327
327
  question: MatrxDrillQuestion;
328
328
  onQuestionChange: (next: MatrxDrillQuestion) => void;
329
329
  answers: MatrxDrillAnswers;
330
+ /** Declared drill paths; a click follows the one its level sits on. */
331
+ paths?: readonly (readonly string[])[] | undefined;
330
332
  /** A read that failed, in words. */
331
333
  error?: string | null | undefined;
332
334
  rowNoun?: string | undefined;
333
335
  emptyLabel?: string | undefined;
334
336
  className?: string | undefined;
335
337
  }
336
- declare function MatrxDrillAnswerTable({ dimensions, measures, question, onQuestionChange, answers, error, rowNoun, emptyLabel, className, }: MatrxDrillAnswerTableProps): React.JSX.Element;
338
+ declare function MatrxDrillAnswerTable({ dimensions, measures, question, onQuestionChange, answers, paths, error, rowNoun, emptyLabel, className, }: MatrxDrillAnswerTableProps): React.JSX.Element;
337
339
 
338
340
  declare function MatrxDrillGroupByMenu({ dimensions, question, onQuestionChange, }: {
339
341
  dimensions: readonly MatrxDrillDimension[];
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { ReactNode } from 'react';
3
- import { h as MatrxDataTableProps, i as TableViewSnapshot, d as MatrxDataTableRecordControls, j as MatrxDataTableRead, k as ColumnMarker, M as MatrxColumnDef, l as MatrxDrillDimension, m as MatrxDrillMeasure, n as MatrxDrillQuestion, o as MatrxDrillAnswers } from '../layered-filters-QG3LUn_h.js';
4
- export { A as AnyOfColumnSearch, p as CellEditType, q as CellEditsMap, f as ColumnFilterKind, a as ColumnFilterValue, C as ColumnFiltersState, r as MATRX_DRILL_GRAINS, s as MATRX_DRILL_MAX_LEVELS, t as MATRX_DRILL_NONE, u as MATRX_DRILL_OTHER_COLUMN, v as MATRX_DRILL_PIVOT_COLUMNS, w as MatrxDataTableContextMenuConfig, g as MatrxDataTableCopyConfig, x as MatrxDataTableCoverageConfig, c as MatrxDataTableDensity, y as MatrxDataTableDetailConfig, z as MatrxDataTableDrillConfig, B as MatrxDataTableEditConfig, D as MatrxDataTableEmptyState, E as MatrxDataTableExpandedDetailConfig, F as MatrxDataTableFacetsConfig, G as MatrxDataTableFilterUi, H as MatrxDataTableGroupingConfig, I as MatrxDataTableHierarchyConfig, J as MatrxDataTableHierarchyMove, K as MatrxDataTableMobileCardControls, N as MatrxDataTableMultiExpandedDetailConfig, O as MatrxDataTableQueryControl, e as MatrxDataTableQueryState, P as MatrxDataTableReadStatus, Q as MatrxDataTableSelectionConfig, R as MatrxDataTableSingleExpandedDetailConfig, U as MatrxDataTableSourceProcessing, V as MatrxDataTableSpreadsheetConfig, W as MatrxDataTableStyleConfig, X as MatrxDataTableSummaryConfig, Y as MatrxDataTableSummaryContext, Z as MatrxDataTableSummaryMetric, _ as MatrxDataTableToolbar, $ as MatrxDataTableUrlStateConfig, a0 as MatrxDataTableVirtualizeConfig, a1 as MatrxDataTableWindowConfig, a2 as MatrxDrillAnswerRow, a3 as MatrxDrillCrumb, a4 as MatrxDrillDimensionKind, a5 as MatrxDrillFilter, a6 as MatrxDrillGrain, a7 as MatrxDrillNode, a8 as MatrxDrillOther, a9 as MatrxDrillPivotColumn, aa as MatrxDrillRequest, ab as MatrxTablePagination, ac as NumberFilterOp, ad as SavedTableViewTab, ae as SortDirection, S as SortState, af as SpreadsheetSelection, ag as TableRankedSearchOptions, b as TableSavedViewsProps, T as TableSearchMatchMode, ah as TableSearchRole, ai as TableSearchScope, aj as TableViewQuery, ak as TableViewTab, al as TableViewTabs, am as TableViewTabsProps, an as TableViewTabsStore, ao as TextFilterMode, ap as ToolbarFacet, aq as addressHasDrill, ar as bucketLabel, as as bucketWindow, at as buildDrillTree, au as dimensionFor, av as dimensionRefLabel, aw as dimensionRefs, ax as drillCrumbs, ay as drillInto, az as drillIsGrouped, aA as drillPath, aB as drillQuestionFromParams, aC as drillQuestionToParams, aD as drillRequestKey, aE as drillRequests, aF as drillToRecords, aG as drillValueLabel, aH as emptyDrillQuestion, aI as inferTableSearchRole, aJ as nextDrillLevel, aK as otherOf, aL as parseDimensionRef, aM as pivotCell, aN as pivotColumns, aO as rankTableSearchRows, aP as resolveTableSearchScopes, aQ as sameDrillQuestion, aR as zoomOutTo } from '../layered-filters-QG3LUn_h.js';
3
+ import { h as MatrxDataTableProps, i as TableViewSnapshot, d as MatrxDataTableRecordControls, j as MatrxDataTableRead, k as ColumnMarker, M as MatrxColumnDef, l as MatrxDrillDimension, m as MatrxDrillMeasure, n as MatrxDrillQuestion, o as MatrxDrillAnswers } from '../layered-filters-rDTFmgfK.js';
4
+ export { A as AnyOfColumnSearch, p as CellEditType, q as CellEditsMap, f as ColumnFilterKind, a as ColumnFilterValue, C as ColumnFiltersState, r as MATRX_DRILL_GRAINS, s as MATRX_DRILL_MAX_LEVELS, t as MATRX_DRILL_NONE, u as MATRX_DRILL_OTHER_COLUMN, v as MATRX_DRILL_PIVOT_COLUMNS, w as MatrxDataTableContextMenuConfig, g as MatrxDataTableCopyConfig, x as MatrxDataTableCoverageConfig, c as MatrxDataTableDensity, y as MatrxDataTableDetailConfig, z as MatrxDataTableDrillConfig, B as MatrxDataTableEditConfig, D as MatrxDataTableEmptyState, E as MatrxDataTableExpandedDetailConfig, F as MatrxDataTableFacetsConfig, G as MatrxDataTableFilterUi, H as MatrxDataTableGroupingConfig, I as MatrxDataTableHierarchyConfig, J as MatrxDataTableHierarchyMove, K as MatrxDataTableMobileCardControls, N as MatrxDataTableMultiExpandedDetailConfig, O as MatrxDataTableQueryControl, e as MatrxDataTableQueryState, P as MatrxDataTableReadStatus, Q as MatrxDataTableSelectionConfig, R as MatrxDataTableSingleExpandedDetailConfig, U as MatrxDataTableSourceProcessing, V as MatrxDataTableSpreadsheetConfig, W as MatrxDataTableStyleConfig, X as MatrxDataTableSummaryConfig, Y as MatrxDataTableSummaryContext, Z as MatrxDataTableSummaryMetric, _ as MatrxDataTableToolbar, $ as MatrxDataTableUrlStateConfig, a0 as MatrxDataTableVirtualizeConfig, a1 as MatrxDataTableWindowConfig, a2 as MatrxDrillAnswerRow, a3 as MatrxDrillCrumb, a4 as MatrxDrillDimensionKind, a5 as MatrxDrillFilter, a6 as MatrxDrillGrain, a7 as MatrxDrillNode, a8 as MatrxDrillOther, a9 as MatrxDrillPivotColumn, aa as MatrxDrillRequest, ab as MatrxTablePagination, ac as NumberFilterOp, ad as SavedTableViewTab, ae as SortDirection, S as SortState, af as SpreadsheetSelection, ag as TableRankedSearchOptions, b as TableSavedViewsProps, T as TableSearchMatchMode, ah as TableSearchRole, ai as TableSearchScope, aj as TableViewQuery, ak as TableViewTab, al as TableViewTabs, am as TableViewTabsProps, an as TableViewTabsStore, ao as TextFilterMode, ap as ToolbarFacet, aq as addressHasDrill, ar as bucketLabel, as as bucketWindow, at as buildDrillTree, au as dimensionFor, av as dimensionRefLabel, aw as dimensionRefs, ax as drillCrumbs, ay as drillInto, az as drillIsGrouped, aA as drillPath, aB as drillQuestionFromParams, aC as drillQuestionToParams, aD as drillRequestKey, aE as drillRequests, aF as drillToRecords, aG as drillValueLabel, aH as emptyDrillQuestion, aI as inferTableSearchRole, aJ as nextDrillLevel, aK as otherOf, aL as parseDimensionRef, aM as pivotCell, aN as pivotColumns, aO as rankTableSearchRows, aP as resolveTableSearchScopes, aQ as sameDrillQuestion, aR as zoomOutTo } from '../layered-filters-rDTFmgfK.js';
5
5
  import { TableReadFailureProps, TableStaleNoticeProps } from './host.js';
6
6
  export { MatrxDataTableHost, MatrxDataTableProvider, MatrxTableRowAlchemy, TableContextMenuBoundaryProps, TableDoors, TableEntityRefProps, TableLinkProps, TableMenuIconProps, TablePeekProps, TableSidePanelProps, TableToolbarActionProps, TableWindowPanelProps, useMatrxDataTableHost, useMatrxTableRowAlchemy } from './host.js';
7
7
  import { CopyControlProps } from './copy-types.js';
@@ -327,13 +327,15 @@ interface MatrxDrillAnswerTableProps {
327
327
  question: MatrxDrillQuestion;
328
328
  onQuestionChange: (next: MatrxDrillQuestion) => void;
329
329
  answers: MatrxDrillAnswers;
330
+ /** Declared drill paths; a click follows the one its level sits on. */
331
+ paths?: readonly (readonly string[])[] | undefined;
330
332
  /** A read that failed, in words. */
331
333
  error?: string | null | undefined;
332
334
  rowNoun?: string | undefined;
333
335
  emptyLabel?: string | undefined;
334
336
  className?: string | undefined;
335
337
  }
336
- declare function MatrxDrillAnswerTable({ dimensions, measures, question, onQuestionChange, answers, error, rowNoun, emptyLabel, className, }: MatrxDrillAnswerTableProps): React.JSX.Element;
338
+ declare function MatrxDrillAnswerTable({ dimensions, measures, question, onQuestionChange, answers, paths, error, rowNoun, emptyLabel, className, }: MatrxDrillAnswerTableProps): React.JSX.Element;
337
339
 
338
340
  declare function MatrxDrillGroupByMenu({ dimensions, question, onQuestionChange, }: {
339
341
  dimensions: readonly MatrxDrillDimension[];
@@ -43832,14 +43832,23 @@ function drillPath(question, dimensions) {
43832
43832
  if (question.path && question.path.length > 0) return question.path;
43833
43833
  return dimensions.map((d) => d.kind === "time" ? `${d.key}:month` : d.key);
43834
43834
  }
43835
- function nextDrillLevel(question, dimensions) {
43835
+ function nextDrillLevel(question, dimensions, paths = []) {
43836
+ const deepest = question.by[question.by.length - 1];
43837
+ const usedRefs = /* @__PURE__ */ new Set([...question.where.map((w) => w.dim), ...question.by]);
43838
+ if (deepest) {
43839
+ for (const levels of paths) {
43840
+ const at2 = levels.indexOf(deepest);
43841
+ if (at2 < 0) continue;
43842
+ const next = levels.slice(at2 + 1).find((ref) => !usedRefs.has(ref) && dimensionFor(dimensions, ref));
43843
+ if (next) return next;
43844
+ }
43845
+ }
43836
43846
  const path2 = drillPath(question, dimensions);
43837
43847
  const used = /* @__PURE__ */ new Set([
43838
43848
  ...question.where.map((w) => parseDimensionRef(w.dim).key),
43839
43849
  ...question.by.map((b) => parseDimensionRef(b).key),
43840
43850
  ...question.across ? [parseDimensionRef(question.across).key] : []
43841
43851
  ]);
43842
- const deepest = question.by[question.by.length - 1];
43843
43852
  const from = deepest ? path2.indexOf(deepest) : -1;
43844
43853
  const ordered = from >= 0 ? [...path2.slice(from + 1), ...path2.slice(0, from)] : path2;
43845
43854
  for (const ref of ordered) {
@@ -43847,10 +43856,10 @@ function nextDrillLevel(question, dimensions) {
43847
43856
  }
43848
43857
  return null;
43849
43858
  }
43850
- function drillInto(question, groups, dimensions, into) {
43859
+ function drillInto(question, groups, dimensions, into, paths = []) {
43851
43860
  const added = question.by.filter((ref) => ref in groups).map((ref) => ({ dim: ref, value: groups[ref] ?? null }));
43852
43861
  const narrowed = { ...question, where: [...question.where, ...added] };
43853
- const next = into === void 0 ? nextDrillLevel(question, dimensions) : into;
43862
+ const next = into === void 0 ? nextDrillLevel(question, dimensions, paths) : into;
43854
43863
  return { ...narrowed, by: next ? [next] : [], across: next && question.across === next ? null : question.across ?? null };
43855
43864
  }
43856
43865
  function drillToRecords(question, groups) {
@@ -44091,6 +44100,7 @@ function normalize(q) {
44091
44100
 
44092
44101
  // src/data-table/DrillAnswerTable.tsx
44093
44102
  import { Fragment as Fragment11, jsx as jsx41, jsxs as jsxs31 } from "react/jsx-runtime";
44103
+ var NO_PATHS = [];
44094
44104
  function plural(n2, noun) {
44095
44105
  return `${n2.toLocaleString()} ${n2 === 1 ? noun : `${noun}s`}`;
44096
44106
  }
@@ -44147,6 +44157,7 @@ function MatrxDrillAnswerTable({
44147
44157
  question,
44148
44158
  onQuestionChange,
44149
44159
  answers,
44160
+ paths = NO_PATHS,
44150
44161
  error,
44151
44162
  rowNoun = "record",
44152
44163
  emptyLabel = "No value",
@@ -44163,7 +44174,7 @@ function MatrxDrillAnswerTable({
44163
44174
  [question, answers, dimensions, measures]
44164
44175
  );
44165
44176
  const pivot = Boolean(question.across) && columns !== null && columns.length > 0;
44166
- const next = nextDrillLevel(question, dimensions);
44177
+ const next = nextDrillLevel(question, dimensions, paths);
44167
44178
  const nextLabel = next ? dimensionRefLabel(dimensions, next) : null;
44168
44179
  const byKeys = new Set(question.by.map((ref) => parseDimensionRef(ref).key));
44169
44180
  const filteredKeys = new Set(question.where.map((w) => parseDimensionRef(w.dim).key));
@@ -44240,7 +44251,7 @@ function MatrxDrillAnswerTable({
44240
44251
  const scope = { ...question, by: question.by.slice(0, node.level + 1) };
44241
44252
  const intoRef = deepest ? next : question.by[node.level + 1] ?? null;
44242
44253
  const intoLabel = intoRef ? dimensionRefLabel(dimensions, intoRef) : null;
44243
- const drill = () => onQuestionChange(drillInto(scope, node.groups, dimensions, intoRef));
44254
+ const drill = () => onQuestionChange(drillInto(scope, node.groups, dimensions, intoRef, paths));
44244
44255
  const records = () => onQuestionChange(drillToRecords(scope, node.groups));
44245
44256
  return /* @__PURE__ */ jsxs31(Fragment10, { children: [
44246
44257
  /* @__PURE__ */ jsx41(
@@ -53871,6 +53882,7 @@ function MatrxDataTableCore(coreProps) {
53871
53882
  question: drill.question,
53872
53883
  onQuestionChange: drill.onQuestionChange,
53873
53884
  answers: drill.answers,
53885
+ ...drill.paths ? { paths: drill.paths } : {},
53874
53886
  error: drill.error,
53875
53887
  rowNoun: drill.rowNoun ?? grouping?.rowNoun ?? "record",
53876
53888
  emptyLabel: drill.emptyLabel