@platforma-sdk/model 1.53.14 → 1.54.7

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 (142) hide show
  1. package/dist/annotations/converter.cjs +8 -32
  2. package/dist/annotations/converter.cjs.map +1 -1
  3. package/dist/annotations/converter.d.ts.map +1 -1
  4. package/dist/annotations/converter.js +7 -31
  5. package/dist/annotations/converter.js.map +1 -1
  6. package/dist/block_model.cjs +1 -0
  7. package/dist/block_model.cjs.map +1 -1
  8. package/dist/block_model.d.ts.map +1 -1
  9. package/dist/block_model.js +1 -0
  10. package/dist/block_model.js.map +1 -1
  11. package/dist/builder.cjs +1 -0
  12. package/dist/builder.cjs.map +1 -1
  13. package/dist/builder.d.ts.map +1 -1
  14. package/dist/builder.js +1 -0
  15. package/dist/builder.js.map +1 -1
  16. package/dist/components/PlDataTable/index.d.ts +5 -0
  17. package/dist/components/PlDataTable/index.d.ts.map +1 -0
  18. package/dist/components/PlDataTable/labels.cjs +91 -0
  19. package/dist/components/PlDataTable/labels.cjs.map +1 -0
  20. package/dist/components/PlDataTable/labels.d.ts +7 -0
  21. package/dist/components/PlDataTable/labels.d.ts.map +1 -0
  22. package/dist/components/PlDataTable/labels.js +88 -0
  23. package/dist/components/PlDataTable/labels.js.map +1 -0
  24. package/dist/components/PlDataTable/state-migration.cjs +162 -0
  25. package/dist/components/PlDataTable/state-migration.cjs.map +1 -0
  26. package/dist/components/PlDataTable/state-migration.d.ts +94 -0
  27. package/dist/components/PlDataTable/state-migration.d.ts.map +1 -0
  28. package/dist/components/PlDataTable/state-migration.js +158 -0
  29. package/dist/components/PlDataTable/state-migration.js.map +1 -0
  30. package/dist/components/PlDataTable/table.cjs +188 -0
  31. package/dist/components/PlDataTable/table.cjs.map +1 -0
  32. package/dist/components/PlDataTable/table.d.ts +26 -0
  33. package/dist/components/PlDataTable/table.d.ts.map +1 -0
  34. package/dist/components/PlDataTable/table.js +184 -0
  35. package/dist/components/PlDataTable/table.js.map +1 -0
  36. package/dist/components/PlDataTable/v4.d.ts +157 -0
  37. package/dist/components/PlDataTable/v4.d.ts.map +1 -0
  38. package/dist/components/PlDataTable/v5.d.ts +113 -0
  39. package/dist/components/PlDataTable/v5.d.ts.map +1 -0
  40. package/dist/filters/converters/filterEmpty.cjs +49 -0
  41. package/dist/filters/converters/filterEmpty.cjs.map +1 -0
  42. package/dist/filters/converters/filterEmpty.d.ts +4 -0
  43. package/dist/filters/converters/filterEmpty.d.ts.map +1 -0
  44. package/dist/filters/converters/filterEmpty.js +46 -0
  45. package/dist/filters/converters/filterEmpty.js.map +1 -0
  46. package/dist/filters/converters/filterToQuery.cjs +244 -0
  47. package/dist/filters/converters/filterToQuery.cjs.map +1 -0
  48. package/dist/filters/converters/filterToQuery.d.ts +4 -0
  49. package/dist/filters/converters/filterToQuery.d.ts.map +1 -0
  50. package/dist/filters/converters/filterToQuery.js +242 -0
  51. package/dist/filters/converters/filterToQuery.js.map +1 -0
  52. package/dist/filters/{converter.cjs → converters/filterUiToExpressionImpl.cjs} +3 -2
  53. package/dist/filters/converters/filterUiToExpressionImpl.cjs.map +1 -0
  54. package/dist/filters/{converter.d.ts → converters/filterUiToExpressionImpl.d.ts} +2 -2
  55. package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +1 -0
  56. package/dist/filters/{converter.js → converters/filterUiToExpressionImpl.js} +3 -2
  57. package/dist/filters/converters/filterUiToExpressionImpl.js.map +1 -0
  58. package/dist/filters/converters/index.d.ts +3 -0
  59. package/dist/filters/converters/index.d.ts.map +1 -0
  60. package/dist/filters/distill.cjs +46 -0
  61. package/dist/filters/distill.cjs.map +1 -0
  62. package/dist/filters/distill.d.ts +6 -0
  63. package/dist/filters/distill.d.ts.map +1 -0
  64. package/dist/filters/distill.js +44 -0
  65. package/dist/filters/distill.js.map +1 -0
  66. package/dist/filters/index.d.ts +2 -1
  67. package/dist/filters/index.d.ts.map +1 -1
  68. package/dist/filters/types.d.ts +1 -117
  69. package/dist/filters/types.d.ts.map +1 -1
  70. package/dist/index.cjs +17 -15
  71. package/dist/index.cjs.map +1 -1
  72. package/dist/index.js +5 -2
  73. package/dist/index.js.map +1 -1
  74. package/dist/package.json.cjs +1 -1
  75. package/dist/package.json.js +1 -1
  76. package/dist/pframe_utils/columns.cjs +2 -0
  77. package/dist/pframe_utils/columns.cjs.map +1 -1
  78. package/dist/pframe_utils/columns.js +2 -0
  79. package/dist/pframe_utils/columns.js.map +1 -1
  80. package/dist/pframe_utils/index.cjs +2 -0
  81. package/dist/pframe_utils/index.cjs.map +1 -1
  82. package/dist/pframe_utils/index.js +2 -0
  83. package/dist/pframe_utils/index.js.map +1 -1
  84. package/dist/pframe_utils/querySpec.d.ts +2 -0
  85. package/dist/pframe_utils/querySpec.d.ts.map +1 -0
  86. package/dist/render/api.cjs +7 -0
  87. package/dist/render/api.cjs.map +1 -1
  88. package/dist/render/api.d.ts +3 -2
  89. package/dist/render/api.d.ts.map +1 -1
  90. package/dist/render/api.js +8 -1
  91. package/dist/render/api.js.map +1 -1
  92. package/dist/render/future.d.ts +1 -1
  93. package/dist/render/index.d.ts +2 -1
  94. package/dist/render/index.d.ts.map +1 -1
  95. package/dist/render/internal.cjs.map +1 -1
  96. package/dist/render/internal.d.ts +4 -1
  97. package/dist/render/internal.d.ts.map +1 -1
  98. package/dist/render/internal.js.map +1 -1
  99. package/dist/render/util/column_collection.cjs.map +1 -1
  100. package/dist/render/util/column_collection.d.ts +1 -1
  101. package/dist/render/util/column_collection.d.ts.map +1 -1
  102. package/dist/render/util/column_collection.js.map +1 -1
  103. package/dist/render/util/pcolumn_data.cjs.map +1 -1
  104. package/dist/render/util/pcolumn_data.d.ts +1 -1
  105. package/dist/render/util/pcolumn_data.d.ts.map +1 -1
  106. package/dist/render/util/pcolumn_data.js.map +1 -1
  107. package/package.json +9 -8
  108. package/src/annotations/converter.ts +12 -40
  109. package/src/block_model.ts +1 -0
  110. package/src/builder.ts +1 -0
  111. package/src/components/PlDataTable/index.ts +22 -0
  112. package/src/components/PlDataTable/labels.ts +101 -0
  113. package/src/components/PlDataTable/state-migration.ts +285 -0
  114. package/src/components/PlDataTable/table.ts +279 -0
  115. package/src/components/PlDataTable/v4.ts +193 -0
  116. package/src/components/PlDataTable/v5.ts +140 -0
  117. package/src/filters/converters/filterEmpty.test.ts +125 -0
  118. package/src/filters/converters/filterEmpty.ts +57 -0
  119. package/src/filters/converters/filterToQuery.test.ts +417 -0
  120. package/src/filters/converters/filterToQuery.ts +258 -0
  121. package/src/filters/{converter.test.ts → converters/filterUiToExpressionImpl.test.ts} +2 -2
  122. package/src/filters/{converter.ts → converters/filterUiToExpressionImpl.ts} +3 -2
  123. package/src/filters/converters/index.ts +2 -0
  124. package/src/filters/distill.ts +59 -0
  125. package/src/filters/index.ts +2 -1
  126. package/src/filters/types.ts +8 -48
  127. package/src/pframe_utils/querySpec.ts +1 -0
  128. package/src/render/api.ts +13 -6
  129. package/src/render/index.ts +2 -1
  130. package/src/render/internal.ts +11 -0
  131. package/src/render/util/column_collection.ts +1 -1
  132. package/src/render/util/pcolumn_data.ts +1 -1
  133. package/dist/components/PlDataTable.cjs +0 -307
  134. package/dist/components/PlDataTable.cjs.map +0 -1
  135. package/dist/components/PlDataTable.d.ts +0 -366
  136. package/dist/components/PlDataTable.d.ts.map +0 -1
  137. package/dist/components/PlDataTable.js +0 -297
  138. package/dist/components/PlDataTable.js.map +0 -1
  139. package/dist/filters/converter.cjs.map +0 -1
  140. package/dist/filters/converter.d.ts.map +0 -1
  141. package/dist/filters/converter.js.map +0 -1
  142. package/src/components/PlDataTable.ts +0 -794
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sources":["../../../src/components/PlDataTable/table.ts"],"sourcesContent":["import type {\n AxisId,\n AxisSpec,\n DataInfo,\n PColumn,\n PColumnIdAndSpec,\n PColumnValues,\n PObjectId,\n PTableColumnId,\n PTableColumnIdAxis,\n PTableColumnIdColumn,\n PTableDefV2,\n PTableSorting,\n SpecQuery,\n SingleAxisSelector,\n SpecQueryExpression,\n SpecQueryJoinEntry,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n canonicalizeJson,\n getAxisId,\n getColumnIdAndSpec,\n isLinkerColumn,\n readAnnotation,\n uniqueBy,\n isBooleanExpression,\n} from \"@milaboratories/pl-model-common\";\nimport type { PTableFilters } from \"../../filters\";\nimport { filterSpecToSpecQueryExpr } from \"../../filters\";\nimport type { RenderCtxBase, TreeNodeAccessor, PColumnDataUniversal } from \"../../render\";\nimport { allPColumnsReady, deriveLabels } from \"../../render\";\nimport { identity, isFunction, isNil } from \"es-toolkit\";\nimport { filterEmptyPieces } from \"../../filters/converters/filterEmpty\";\nimport type { CreatePlDataTableOps, PlDataTableModel } from \"./v5\";\nimport { upgradePlDataTableStateV2 } from \"./state-migration\";\nimport type { PlDataTableStateV2 } from \"./state-migration\";\nimport type { PlDataTableSheet } from \"./v5\";\nimport { getAllLabelColumns, getMatchingLabelColumns } from \"./labels\";\n\n/** Convert a PTableColumnId to a SpecQueryExpression reference. */\nfunction columnIdToExpr(col: PTableColumnId): SpecQueryExpression {\n if (col.type === \"axis\") {\n return { type: \"axisRef\", value: col.id as SingleAxisSelector };\n }\n return { type: \"columnRef\", value: col.id };\n}\n\n/** Wrap a SpecQuery as a SpecQueryJoinEntry with empty qualifications. */\nfunction joinEntry<C>(input: SpecQuery<C>): SpecQueryJoinEntry<C> {\n return { entry: input, qualifications: [] };\n}\n\nfunction createPTableDef(params: {\n columns: PColumn<PColumnDataUniversal>[];\n labelColumns: PColumn<PColumnDataUniversal>[];\n coreJoinType: \"inner\" | \"full\";\n filters: PTableFilters;\n sorting: PTableSorting[];\n coreColumnPredicate?: (spec: PColumnIdAndSpec) => boolean;\n}): PTableDefV2<PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>> {\n let coreColumns = params.columns;\n const secondaryColumns: typeof params.columns = [];\n\n if (isFunction(params.coreColumnPredicate)) {\n coreColumns = [];\n for (const c of params.columns)\n if (params.coreColumnPredicate(getColumnIdAndSpec(c))) coreColumns.push(c);\n else secondaryColumns.push(c);\n }\n\n secondaryColumns.push(...params.labelColumns);\n\n // Build SpecQuery directly from columns\n const coreJoinQuery: SpecQuery<\n PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>\n > = {\n type: params.coreJoinType === \"inner\" ? \"innerJoin\" : \"fullJoin\",\n entries: coreColumns.map((c) => joinEntry({ type: \"column\", column: c })),\n };\n\n let query: SpecQuery<PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>> = {\n type: \"outerJoin\",\n primary: joinEntry(coreJoinQuery),\n secondary: secondaryColumns.map((c) => joinEntry({ type: \"column\", column: c })),\n };\n\n // Apply filters\n if (params.filters !== null) {\n const nonEmpty = filterEmptyPieces(params.filters);\n\n if (!isNil(nonEmpty)) {\n const pridicate = filterSpecToSpecQueryExpr(nonEmpty);\n if (!isBooleanExpression(pridicate)) {\n throw new Error(\n `Filter conversion produced a non-boolean expression (got type \"${pridicate.type}\"), expected a boolean predicate for query filtering`,\n );\n }\n query = {\n type: \"filter\",\n input: query,\n predicate: pridicate,\n };\n }\n }\n\n // Apply sorting\n if (params.sorting.length > 0) {\n query = {\n type: \"sort\",\n input: query,\n sortBy: params.sorting.map((s) => ({\n expression: columnIdToExpr(s.column),\n ascending: s.ascending,\n nullsFirst: s.ascending === s.naAndAbsentAreLeastValues,\n })),\n };\n }\n\n return { query };\n}\n\n/** Check if column should be omitted from the table */\nexport function isColumnHidden(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"hidden\";\n}\n\n/** Check if column is hidden by default */\nexport function isColumnOptional(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"optional\";\n}\n\n/**\n * Create p-table spec and handle given ui table state\n *\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns PlAgDataTableV2 table source\n */\nexport function createPlDataTableV2<A, U>(\n ctx: RenderCtxBase<A, U>,\n columns: PColumn<PColumnDataUniversal>[],\n tableState: PlDataTableStateV2 | undefined,\n ops?: CreatePlDataTableOps,\n): PlDataTableModel | undefined {\n if (columns.length === 0) return undefined;\n\n const tableStateNormalized = upgradePlDataTableStateV2(tableState);\n\n const allLabelColumns = getAllLabelColumns(ctx.resultPool);\n if (!allLabelColumns) return undefined;\n\n let fullLabelColumns = getMatchingLabelColumns(columns.map(getColumnIdAndSpec), allLabelColumns);\n fullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map(\n (v) => {\n return {\n ...v.value,\n spec: {\n ...v.value.spec,\n annotations: {\n ...v.value.spec.annotations,\n [Annotation.Label]: v.label,\n },\n },\n };\n },\n );\n\n const fullColumns = [...columns, ...fullLabelColumns];\n\n const fullColumnsAxes = uniqueBy(\n fullColumns.flatMap((c) => c.spec.axesSpec.map((a) => getAxisId(a))),\n (a) => canonicalizeJson<AxisId>(a),\n );\n const fullColumnsIds: PTableColumnId[] = [\n ...fullColumnsAxes.map((a) => ({ type: \"axis\", id: a }) satisfies PTableColumnIdAxis),\n ...fullColumns.map((c) => ({ type: \"column\", id: c.id }) satisfies PTableColumnIdColumn),\n ];\n const fullColumnsIdsSet = new Set(fullColumnsIds.map((c) => canonicalizeJson<PTableColumnId>(c)));\n const isValidColumnId = (id: PTableColumnId): boolean =>\n fullColumnsIdsSet.has(canonicalizeJson<PTableColumnId>(id));\n\n const coreJoinType = ops?.coreJoinType ?? \"full\";\n const filters = tableStateNormalized.pTableParams.filters;\n const sorting: PTableSorting[] = uniqueBy(\n [...tableStateNormalized.pTableParams.sorting, ...(ops?.sorting ?? [])],\n (s) => canonicalizeJson<PTableColumnId>(s.column),\n ).filter((s) => {\n const valid = isValidColumnId(s.column);\n if (!valid)\n ctx.logWarn(`Sorting ${JSON.stringify(s)} does not match provided columns, skipping`);\n return valid;\n });\n\n const fullDef = createPTableDef({\n columns,\n labelColumns: fullLabelColumns,\n coreJoinType,\n filters,\n sorting,\n coreColumnPredicate: ops?.coreColumnPredicate,\n });\n const fullHandle = ctx.createPTableV2(fullDef);\n if (!fullHandle) return undefined;\n\n const hiddenColumns = new Set<PObjectId>(\n ((): PObjectId[] => {\n // Inner join works as a filter - all columns must be present\n if (coreJoinType === \"inner\") return [];\n\n const hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;\n if (hiddenColIds) return hiddenColIds;\n\n return columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);\n })(),\n );\n\n // Preserve linker columns\n columns.filter((c) => isLinkerColumn(c.spec)).forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve core columns as they change the shape of join.\n const coreColumnPredicate = ops?.coreColumnPredicate;\n if (coreColumnPredicate) {\n const coreColumns = columns.flatMap((c) =>\n coreColumnPredicate(getColumnIdAndSpec(c)) ? [c.id] : [],\n );\n coreColumns.forEach((c) => hiddenColumns.delete(c));\n }\n\n // Sorting changes the order of result rows — preserve sorted columns from being hidden\n sorting\n .map((s) => s.column)\n .filter((c): c is PTableColumnIdColumn => c.type === \"column\")\n .forEach((c) => hiddenColumns.delete(c.id));\n\n const visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));\n const visibleLabelColumns = getMatchingLabelColumns(\n visibleColumns.map(getColumnIdAndSpec),\n allLabelColumns,\n );\n\n // if at least one column is not yet computed, we can't show the table\n if (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns])) return undefined;\n\n const visibleDef = createPTableDef({\n columns: visibleColumns,\n labelColumns: visibleLabelColumns,\n coreJoinType,\n filters,\n sorting,\n coreColumnPredicate,\n });\n const visibleHandle = ctx.createPTableV2(visibleDef);\n if (!visibleHandle) return undefined;\n\n return {\n sourceId: tableStateNormalized.pTableParams.sourceId,\n fullTableHandle: fullHandle,\n visibleTableHandle: visibleHandle,\n } satisfies PlDataTableModel;\n}\n\n/** Create sheet entries for PlDataTable */\nexport function createPlDataTableSheet<A, U>(\n ctx: RenderCtxBase<A, U>,\n axis: AxisSpec,\n values: (string | number)[],\n): PlDataTableSheet {\n const labels = ctx.resultPool.findLabels(axis);\n return {\n axis,\n options: values.map((v) => ({\n value: v,\n label: labels?.[v] ?? v.toString(),\n })),\n defaultValue: values[0],\n };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ import type { PTableColumnId } from "@milaboratories/pl-model-common";
2
+ export type PlDataTableFilterState = {
3
+ id: PTableColumnId;
4
+ alphabetic: boolean;
5
+ filter: null | {
6
+ value: PlTableFilter;
7
+ disabled: boolean;
8
+ };
9
+ };
10
+ /** PlTableFilters filter entry */
11
+ export type PlTableFilterIsNotNA = {
12
+ /** Predicate type */
13
+ type: "isNotNA";
14
+ };
15
+ /** PlTableFilters filter entry */
16
+ export type PlTableFilterIsNA = {
17
+ /** Predicate type */
18
+ type: "isNA";
19
+ };
20
+ /** PlTableFilters filter entries applicable to both string and number values */
21
+ export type PlTableFilterCommon = PlTableFilterIsNotNA | PlTableFilterIsNA;
22
+ /** PlTableFilters numeric filter entry */
23
+ export type PlTableFilterNumberEquals = {
24
+ /** Predicate type */
25
+ type: "number_equals";
26
+ /** Reference value */
27
+ reference: number;
28
+ };
29
+ /** PlTableFilters numeric filter entry */
30
+ export type PlTableFilterNumberNotEquals = {
31
+ /** Predicate type */
32
+ type: "number_notEquals";
33
+ /** Reference value */
34
+ reference: number;
35
+ };
36
+ /** PlTableFilters numeric filter entry */
37
+ export type PlTableFilterNumberGreaterThan = {
38
+ /** Predicate type */
39
+ type: "number_greaterThan";
40
+ /** Reference value */
41
+ reference: number;
42
+ };
43
+ /** PlTableFilters numeric filter entry */
44
+ export type PlTableFilterNumberGreaterThanOrEqualTo = {
45
+ /** Predicate type */
46
+ type: "number_greaterThanOrEqualTo";
47
+ /** Reference value */
48
+ reference: number;
49
+ };
50
+ /** PlTableFilters numeric filter entry */
51
+ export type PlTableFilterNumberLessThan = {
52
+ /** Predicate type */
53
+ type: "number_lessThan";
54
+ /** Reference value */
55
+ reference: number;
56
+ };
57
+ /** PlTableFilters numeric filter entry */
58
+ export type PlTableFilterNumberLessThanOrEqualTo = {
59
+ /** Predicate type */
60
+ type: "number_lessThanOrEqualTo";
61
+ /** Reference value */
62
+ reference: number;
63
+ };
64
+ /** PlTableFilters numeric filter entry */
65
+ export type PlTableFilterNumberBetween = {
66
+ /** Predicate type */
67
+ type: "number_between";
68
+ /** Reference value for the lower bound */
69
+ lowerBound: number;
70
+ /** Defines whether values equal to lower bound reference value should be matched */
71
+ includeLowerBound: boolean;
72
+ /** Reference value for the upper bound */
73
+ upperBound: number;
74
+ /** Defines whether values equal to upper bound reference value should be matched */
75
+ includeUpperBound: boolean;
76
+ };
77
+ /** All PlTableFilters numeric filter entries */
78
+ export type PlTableFilterNumber = PlTableFilterCommon | PlTableFilterNumberEquals | PlTableFilterNumberNotEquals | PlTableFilterNumberGreaterThan | PlTableFilterNumberGreaterThanOrEqualTo | PlTableFilterNumberLessThan | PlTableFilterNumberLessThanOrEqualTo | PlTableFilterNumberBetween;
79
+ /** All types of PlTableFilters numeric filter entries */
80
+ export type PlTableFilterNumberType = PlTableFilterNumber["type"];
81
+ /** PlTableFilters string filter entry */
82
+ export type PlTableFilterStringEquals = {
83
+ /** Predicate type */
84
+ type: "string_equals";
85
+ /** Reference value */
86
+ reference: string;
87
+ };
88
+ /** PlTableFilters string filter entry */
89
+ export type PlTableFilterStringNotEquals = {
90
+ /** Predicate type */
91
+ type: "string_notEquals";
92
+ /** Reference value */
93
+ reference: string;
94
+ };
95
+ /** PlTableFilters string filter entry */
96
+ export type PlTableFilterStringContains = {
97
+ /** Predicate type */
98
+ type: "string_contains";
99
+ /** Reference value */
100
+ reference: string;
101
+ };
102
+ /** PlTableFilters string filter entry */
103
+ export type PlTableFilterStringDoesNotContain = {
104
+ /** Predicate type */
105
+ type: "string_doesNotContain";
106
+ /** Reference value */
107
+ reference: string;
108
+ };
109
+ /** PlTableFilters string filter entry */
110
+ export type PlTableFilterStringMatches = {
111
+ /** Predicate type */
112
+ type: "string_matches";
113
+ /** Reference value */
114
+ reference: string;
115
+ };
116
+ /** PlTableFilters string filter entry */
117
+ export type PlTableFilterStringDoesNotMatch = {
118
+ /** Predicate type */
119
+ type: "string_doesNotMatch";
120
+ /** Reference value */
121
+ reference: string;
122
+ };
123
+ /** PlTableFilters string filter entry */
124
+ export type PlTableFilterStringContainsFuzzyMatch = {
125
+ /** Predicate type */
126
+ type: "string_containsFuzzyMatch";
127
+ /** Reference value */
128
+ reference: string;
129
+ /**
130
+ * Maximum acceptable edit distance between reference value and matched substring
131
+ * @see https://en.wikipedia.org/wiki/Edit_distance
132
+ */
133
+ maxEdits: number;
134
+ /**
135
+ * When {@link substitutionsOnly} is set to false
136
+ * Levenshtein distance is used as edit distance (substitutions and indels)
137
+ * @see https://en.wikipedia.org/wiki/Levenshtein_distance
138
+ * When {@link substitutionsOnly} is set to true
139
+ * Hamming distance is used as edit distance (substitutions only)
140
+ * @see https://en.wikipedia.org/wiki/Hamming_distance
141
+ */
142
+ substitutionsOnly: boolean;
143
+ /**
144
+ * Single character in {@link reference} that will labelColumn any
145
+ * single character in searched text.
146
+ */
147
+ wildcard?: string;
148
+ };
149
+ /** All PlTableFilters string filter entries */
150
+ export type PlTableFilterString = PlTableFilterCommon | PlTableFilterStringEquals | PlTableFilterStringNotEquals | PlTableFilterStringContains | PlTableFilterStringDoesNotContain | PlTableFilterStringMatches | PlTableFilterStringDoesNotMatch | PlTableFilterStringContainsFuzzyMatch;
151
+ /** All types of PlTableFilters string filter entries */
152
+ export type PlTableFilterStringType = PlTableFilterString["type"];
153
+ /** All PlTableFilters filter entries */
154
+ export type PlTableFilter = PlTableFilterNumber | PlTableFilterString;
155
+ /** All types of PlTableFilters filter entries */
156
+ export type PlTableFilterType = PlTableFilter["type"];
157
+ //# sourceMappingURL=v4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v4.d.ts","sourceRoot":"","sources":["../../../src/components/PlDataTable/v4.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ import type { AxisId, AxisSpec, CanonicalizedJson, ListOptionBase, PObjectId, PTableColumnSpec, PTableFilters, PTableRecordFilter, PTableSorting, PColumnIdAndSpec, PTableHandle } from "@milaboratories/pl-model-common";
2
+ import type { FilterSpec, FilterSpecLeaf } from "../../filters";
3
+ export type PlTableColumnId = {
4
+ /** Original column spec */
5
+ source: PTableColumnSpec;
6
+ /** Column spec with labeled axes replaced by label columns */
7
+ labeled: PTableColumnSpec;
8
+ };
9
+ export type PlTableColumnIdJson = CanonicalizedJson<PlTableColumnId>;
10
+ export type PlDataTableGridStateCore = {
11
+ /** Includes column ordering */
12
+ columnOrder?: {
13
+ /** All colIds in order */
14
+ orderedColIds: PlTableColumnIdJson[];
15
+ };
16
+ /** Includes current sort columns and direction */
17
+ sort?: {
18
+ /** Sorted columns and directions in order */
19
+ sortModel: {
20
+ /** Column Id to apply the sort to. */
21
+ colId: PlTableColumnIdJson;
22
+ /** Sort direction */
23
+ sort: "asc" | "desc";
24
+ }[];
25
+ };
26
+ /** Includes column visibility */
27
+ columnVisibility?: {
28
+ /** All colIds which were hidden */
29
+ hiddenColIds: PlTableColumnIdJson[];
30
+ };
31
+ };
32
+ export type PlDataTableSheet = {
33
+ /** spec of the axis to use */
34
+ axis: AxisSpec;
35
+ /** options to show in the filter dropdown */
36
+ options: ListOptionBase<string | number>[];
37
+ /** default (selected) value */
38
+ defaultValue?: string | number;
39
+ };
40
+ export type PlDataTableSheetState = {
41
+ /** id of the axis */
42
+ axisId: AxisId;
43
+ /** selected value */
44
+ value: string | number;
45
+ };
46
+ /** Tree-based filter state compatible with PlAdvancedFilter's RootFilter */
47
+ export type PlDataTableAdvancedFilter = FilterSpec<FilterSpecLeaf<string>, {
48
+ id: number;
49
+ isExpanded?: boolean;
50
+ }>;
51
+ export type PlDataTableStateV2CacheEntry = {
52
+ /** DataSource identifier for state management */
53
+ sourceId: string;
54
+ /** Internal ag-grid state */
55
+ gridState: PlDataTableGridStateCore;
56
+ /** Sheets state */
57
+ sheetsState: PlDataTableSheetState[];
58
+ /** Filters state (tree-based, compatible with PlAdvancedFilter) */
59
+ filtersState: PlDataTableAdvancedFilter | null;
60
+ };
61
+ export type PTableParamsV2 = {
62
+ sourceId: null;
63
+ hiddenColIds: null;
64
+ filters: null;
65
+ sorting: [];
66
+ } | {
67
+ sourceId: string;
68
+ hiddenColIds: PObjectId[] | null;
69
+ filters: PTableFilters;
70
+ sorting: PTableSorting[];
71
+ };
72
+ export type PlDataTableStateV2Normalized = {
73
+ /** Version for upgrades */
74
+ version: 5;
75
+ /** Internal states, LRU cache for 5 sourceId-s */
76
+ stateCache: PlDataTableStateV2CacheEntry[];
77
+ /** PTable params derived from the cache state for the current sourceId */
78
+ pTableParams: PTableParamsV2;
79
+ };
80
+ /** PlAgDataTable model */
81
+ export type PlDataTableModel = {
82
+ /** DataSource identifier for state management */
83
+ sourceId: string | null;
84
+ /** p-table including all columns, used to show the full specification of the table */
85
+ fullTableHandle: PTableHandle;
86
+ /** p-table including only visible columns, used to get the data */
87
+ visibleTableHandle: PTableHandle;
88
+ };
89
+ export type CreatePlDataTableOps = {
90
+ /** Filters for columns and non-partitioned axes */
91
+ filters?: PTableRecordFilter[];
92
+ /** Sorting to columns hidden from user */
93
+ sorting?: PTableSorting[];
94
+ /**
95
+ * Selects columns for which will be inner-joined to the table.
96
+ *
97
+ * Default behaviour: all columns are considered to be core
98
+ */
99
+ coreColumnPredicate?: (spec: PColumnIdAndSpec) => boolean;
100
+ /**
101
+ * Determines how core columns should be joined together:
102
+ * inner - so user will only see records present in all core columns
103
+ * full - so user will only see records present in any of the core columns
104
+ *
105
+ * All non-core columns will be left joined to the table produced by the core
106
+ * columns, in other words records form the pool of non-core columns will only
107
+ * make their way into the final table if core table contains corresponding key.
108
+ *
109
+ * Default: 'full'
110
+ */
111
+ coreJoinType?: "inner" | "full";
112
+ };
113
+ //# sourceMappingURL=v5.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v5.d.ts","sourceRoot":"","sources":["../../../src/components/PlDataTable/v5.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ function filterPredicate(item) {
4
+ // No need to convert empty steps
5
+ if (item.type == null) {
6
+ return false;
7
+ }
8
+ if (item.type === "or") {
9
+ return item.filters.length > 0;
10
+ }
11
+ if (item.type === "and") {
12
+ return item.filters.length > 0;
13
+ }
14
+ if (item.type === "not") {
15
+ return filterPredicate(item.filter);
16
+ }
17
+ // Filter out any item that has undefined values in required fields
18
+ return !Object.values(item).some((v) => v === undefined);
19
+ }
20
+ function filterEmptyPieces(item) {
21
+ if (item.type === "or" || item.type === "and") {
22
+ const filtered = item.filters
23
+ .map(filterEmptyPieces)
24
+ .filter((f) => f !== null && filterPredicate(f));
25
+ return filtered.length === 0
26
+ ? null
27
+ : {
28
+ ...item,
29
+ filters: filtered,
30
+ };
31
+ }
32
+ if (item.type === "not") {
33
+ const inner = filterEmptyPieces(item.filter);
34
+ return inner === null || !filterPredicate(inner)
35
+ ? null
36
+ : {
37
+ ...item,
38
+ filter: inner,
39
+ };
40
+ }
41
+ if (!filterPredicate(item)) {
42
+ return null;
43
+ }
44
+ return item;
45
+ }
46
+
47
+ exports.filterEmptyPieces = filterEmptyPieces;
48
+ exports.filterPredicate = filterPredicate;
49
+ //# sourceMappingURL=filterEmpty.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterEmpty.cjs","sources":["../../../src/filters/converters/filterEmpty.ts"],"sourcesContent":["import { FilterSpec, FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\n\nexport function filterPredicate(\n item: FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n): boolean {\n // No need to convert empty steps\n if (item.type == null) {\n return false;\n }\n\n if (item.type === \"or\") {\n return item.filters.length > 0;\n }\n\n if (item.type === \"and\") {\n return item.filters.length > 0;\n }\n\n if (item.type === \"not\") {\n return filterPredicate(item.filter);\n }\n\n // Filter out any item that has undefined values in required fields\n return !Object.values(item).some((v) => v === undefined);\n}\n\nexport function filterEmptyPieces<T extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>>(\n item: T,\n): null | T {\n if (item.type === \"or\" || item.type === \"and\") {\n const filtered = item.filters\n .map(filterEmptyPieces)\n .filter((f): f is T => f !== null && filterPredicate(f));\n\n return filtered.length === 0\n ? null\n : {\n ...item,\n filters: filtered,\n };\n }\n if (item.type === \"not\") {\n const inner = filterEmptyPieces(item.filter);\n return inner === null || !filterPredicate(inner)\n ? null\n : {\n ...item,\n filter: inner,\n };\n }\n\n if (!filterPredicate(item)) {\n return null;\n }\n\n return item;\n}\n"],"names":[],"mappings":";;AAEM,SAAU,eAAe,CAC7B,IAA2D,EAAA;;AAG3D,IAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;AACrB,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AACtB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;IAChC;AAEA,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;AACvB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;IAChC;AAEA,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;AACvB,QAAA,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;IACrC;;AAGA,IAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;AAC1D;AAEM,SAAU,iBAAiB,CAC/B,IAAO,EAAA;AAEP,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;AAC7C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC;aACnB,GAAG,CAAC,iBAAiB;AACrB,aAAA,MAAM,CAAC,CAAC,CAAC,KAAa,CAAC,KAAK,IAAI,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;AAE1D,QAAA,OAAO,QAAQ,CAAC,MAAM,KAAK;AACzB,cAAE;AACF,cAAE;AACE,gBAAA,GAAG,IAAI;AACP,gBAAA,OAAO,EAAE,QAAQ;aAClB;IACP;AACA,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;QACvB,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5C,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK;AAC7C,cAAE;AACF,cAAE;AACE,gBAAA,GAAG,IAAI;AACP,gBAAA,MAAM,EAAE,KAAK;aACd;IACP;AAEA,IAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AAC1B,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,IAAI;AACb;;;;;"}
@@ -0,0 +1,4 @@
1
+ import { FilterSpec, FilterSpecLeaf } from "@milaboratories/pl-model-common";
2
+ export declare function filterPredicate(item: FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>): boolean;
3
+ export declare function filterEmptyPieces<T extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>>(item: T): null | T;
4
+ //# sourceMappingURL=filterEmpty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterEmpty.d.ts","sourceRoot":"","sources":["../../../src/filters/converters/filterEmpty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAE7E,wBAAgB,eAAe,CAC7B,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAC1D,OAAO,CAoBT;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAC/F,IAAI,EAAE,CAAC,GACN,IAAI,GAAG,CAAC,CA4BV"}
@@ -0,0 +1,46 @@
1
+ function filterPredicate(item) {
2
+ // No need to convert empty steps
3
+ if (item.type == null) {
4
+ return false;
5
+ }
6
+ if (item.type === "or") {
7
+ return item.filters.length > 0;
8
+ }
9
+ if (item.type === "and") {
10
+ return item.filters.length > 0;
11
+ }
12
+ if (item.type === "not") {
13
+ return filterPredicate(item.filter);
14
+ }
15
+ // Filter out any item that has undefined values in required fields
16
+ return !Object.values(item).some((v) => v === undefined);
17
+ }
18
+ function filterEmptyPieces(item) {
19
+ if (item.type === "or" || item.type === "and") {
20
+ const filtered = item.filters
21
+ .map(filterEmptyPieces)
22
+ .filter((f) => f !== null && filterPredicate(f));
23
+ return filtered.length === 0
24
+ ? null
25
+ : {
26
+ ...item,
27
+ filters: filtered,
28
+ };
29
+ }
30
+ if (item.type === "not") {
31
+ const inner = filterEmptyPieces(item.filter);
32
+ return inner === null || !filterPredicate(inner)
33
+ ? null
34
+ : {
35
+ ...item,
36
+ filter: inner,
37
+ };
38
+ }
39
+ if (!filterPredicate(item)) {
40
+ return null;
41
+ }
42
+ return item;
43
+ }
44
+
45
+ export { filterEmptyPieces, filterPredicate };
46
+ //# sourceMappingURL=filterEmpty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterEmpty.js","sources":["../../../src/filters/converters/filterEmpty.ts"],"sourcesContent":["import { FilterSpec, FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\n\nexport function filterPredicate(\n item: FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n): boolean {\n // No need to convert empty steps\n if (item.type == null) {\n return false;\n }\n\n if (item.type === \"or\") {\n return item.filters.length > 0;\n }\n\n if (item.type === \"and\") {\n return item.filters.length > 0;\n }\n\n if (item.type === \"not\") {\n return filterPredicate(item.filter);\n }\n\n // Filter out any item that has undefined values in required fields\n return !Object.values(item).some((v) => v === undefined);\n}\n\nexport function filterEmptyPieces<T extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>>(\n item: T,\n): null | T {\n if (item.type === \"or\" || item.type === \"and\") {\n const filtered = item.filters\n .map(filterEmptyPieces)\n .filter((f): f is T => f !== null && filterPredicate(f));\n\n return filtered.length === 0\n ? null\n : {\n ...item,\n filters: filtered,\n };\n }\n if (item.type === \"not\") {\n const inner = filterEmptyPieces(item.filter);\n return inner === null || !filterPredicate(inner)\n ? null\n : {\n ...item,\n filter: inner,\n };\n }\n\n if (!filterPredicate(item)) {\n return null;\n }\n\n return item;\n}\n"],"names":[],"mappings":"AAEM,SAAU,eAAe,CAC7B,IAA2D,EAAA;;AAG3D,IAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;AACrB,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AACtB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;IAChC;AAEA,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;AACvB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;IAChC;AAEA,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;AACvB,QAAA,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;IACrC;;AAGA,IAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;AAC1D;AAEM,SAAU,iBAAiB,CAC/B,IAAO,EAAA;AAEP,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;AAC7C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC;aACnB,GAAG,CAAC,iBAAiB;AACrB,aAAA,MAAM,CAAC,CAAC,CAAC,KAAa,CAAC,KAAK,IAAI,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;AAE1D,QAAA,OAAO,QAAQ,CAAC,MAAM,KAAK;AACzB,cAAE;AACF,cAAE;AACE,gBAAA,GAAG,IAAI;AACP,gBAAA,OAAO,EAAE,QAAQ;aAClB;IACP;AACA,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;QACvB,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5C,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK;AAC7C,cAAE;AACF,cAAE;AACE,gBAAA,GAAG,IAAI;AACP,gBAAA,MAAM,EAAE,KAAK;aACd;IACP;AAEA,IAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AAC1B,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,IAAI;AACb;;;;"}