@platforma-sdk/model 1.45.42 → 1.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/annotations/converter.cjs +30 -14
  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 +30 -14
  5. package/dist/annotations/converter.js.map +1 -1
  6. package/dist/components/PFrameForGraphs.cjs +12 -27
  7. package/dist/components/PFrameForGraphs.cjs.map +1 -1
  8. package/dist/components/PFrameForGraphs.d.ts +4 -3
  9. package/dist/components/PFrameForGraphs.d.ts.map +1 -1
  10. package/dist/components/PFrameForGraphs.js +12 -28
  11. package/dist/components/PFrameForGraphs.js.map +1 -1
  12. package/dist/filters/converter.cjs +4 -2
  13. package/dist/filters/converter.cjs.map +1 -1
  14. package/dist/filters/converter.d.ts.map +1 -1
  15. package/dist/filters/converter.js +4 -2
  16. package/dist/filters/converter.js.map +1 -1
  17. package/dist/filters/types.d.ts +1 -1
  18. package/dist/filters/types.d.ts.map +1 -1
  19. package/dist/index.cjs +10 -0
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.ts +1 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/internal.cjs.map +1 -1
  26. package/dist/internal.js.map +1 -1
  27. package/dist/package.json.cjs +1 -1
  28. package/dist/package.json.js +1 -1
  29. package/dist/pframe.cjs +11 -5
  30. package/dist/pframe.cjs.map +1 -1
  31. package/dist/pframe.d.ts +1 -0
  32. package/dist/pframe.d.ts.map +1 -1
  33. package/dist/pframe.js +11 -5
  34. package/dist/pframe.js.map +1 -1
  35. package/dist/pframe_utils/index.cjs +294 -0
  36. package/dist/pframe_utils/index.cjs.map +1 -0
  37. package/dist/pframe_utils/index.d.ts +48 -0
  38. package/dist/pframe_utils/index.d.ts.map +1 -0
  39. package/dist/pframe_utils/index.js +285 -0
  40. package/dist/pframe_utils/index.js.map +1 -0
  41. package/dist/render/api.cjs.map +1 -1
  42. package/dist/render/api.d.ts +2 -2
  43. package/dist/render/api.d.ts.map +1 -1
  44. package/dist/render/api.js.map +1 -1
  45. package/dist/render/util/column_collection.cjs.map +1 -1
  46. package/dist/render/util/column_collection.d.ts +11 -6
  47. package/dist/render/util/column_collection.d.ts.map +1 -1
  48. package/dist/render/util/column_collection.js.map +1 -1
  49. package/dist/render/util/pcolumn_data.cjs +10 -6
  50. package/dist/render/util/pcolumn_data.cjs.map +1 -1
  51. package/dist/render/util/pcolumn_data.d.ts +3 -3
  52. package/dist/render/util/pcolumn_data.d.ts.map +1 -1
  53. package/dist/render/util/pcolumn_data.js +10 -6
  54. package/dist/render/util/pcolumn_data.js.map +1 -1
  55. package/package.json +12 -11
  56. package/src/annotations/converter.ts +35 -15
  57. package/src/components/PFrameForGraphs.ts +19 -37
  58. package/src/filters/converter.ts +4 -1
  59. package/src/filters/types.ts +1 -1
  60. package/src/global.d.ts +2 -2
  61. package/src/index.ts +1 -0
  62. package/src/internal.ts +2 -2
  63. package/src/pframe.ts +12 -5
  64. package/src/pframe_utils/index.ts +442 -0
  65. package/src/render/api.ts +6 -4
  66. package/src/render/util/column_collection.ts +13 -5
  67. package/src/render/util/pcolumn_data.ts +15 -10
package/src/render/api.ts CHANGED
@@ -5,6 +5,7 @@ import type {
5
5
  DataInfo,
6
6
  Option,
7
7
  PColumn,
8
+ PColumnLazy,
8
9
  PColumnSelector,
9
10
  PColumnSpec,
10
11
  PColumnValues,
@@ -79,8 +80,9 @@ export type UniversalColumnOption = { label: string; value: SUniversalPColumnId
79
80
  * @param data Data from a PColumn to transform
80
81
  * @returns Transformed data compatible with platform API
81
82
  */
82
- function transformPColumnData(data: PColumn<PColumnDataUniversal>):
83
- PColumn<PColumnValues | AccessorHandle | DataInfo<AccessorHandle>> {
83
+ function transformPColumnData(
84
+ data: PColumn<PColumnDataUniversal> | PColumnLazy<PColumnDataUniversal>,
85
+ ): PColumn<PColumnValues | AccessorHandle | DataInfo<AccessorHandle>> {
84
86
  return mapPObjectData(data, (d) => {
85
87
  if (d instanceof TreeNodeAccessor) {
86
88
  return d.handle;
@@ -591,7 +593,7 @@ export class RenderCtx<Args, UiState> {
591
593
  return this.resultPool.findLabels(axis);
592
594
  }
593
595
 
594
- private verifyInlineAndExplicitColumnsSupport(columns: PColumn<PColumnDataUniversal>[]) {
596
+ private verifyInlineAndExplicitColumnsSupport(columns: (PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>)[]) {
595
597
  const hasInlineColumns = columns.some((c) => !(c.data instanceof TreeNodeAccessor) || isDataInfo(c.data)); // Updated check for DataInfo
596
598
  const inlineColumnsSupport = this.ctx.featureFlags?.inlineColumnsSupport === true;
597
599
  if (hasInlineColumns && !inlineColumnsSupport) throw Error(`Inline or explicit columns not supported`); // Combined check
@@ -619,7 +621,7 @@ export class RenderCtx<Args, UiState> {
619
621
  }
620
622
 
621
623
  // TODO remove all non-PColumn fields
622
- public createPFrame(def: PFrameDef<PColumn<PColumnDataUniversal>>): PFrameHandle | undefined {
624
+ public createPFrame(def: PFrameDef<PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>>): PFrameHandle | undefined {
623
625
  this.verifyInlineAndExplicitColumnsSupport(def);
624
626
  if (!allPColumnsReady(def)) return undefined;
625
627
  return this.ctx.createPFrame(
@@ -7,6 +7,7 @@ import type {
7
7
  NativePObjectId,
8
8
  PartitionedDataInfoEntries,
9
9
  PColumn,
10
+ PColumnLazy,
10
11
  PColumnSelector,
11
12
  PColumnSpec,
12
13
  PColumnValues,
@@ -64,15 +65,22 @@ class ArrayColumnProvider implements ColumnProvider {
64
65
  }
65
66
  }
66
67
 
67
- export type PColumnEntryWithLabel = {
68
- id: PObjectId;
69
- spec: PColumnSpec;
70
- /** Lazy calculates the data, returns undefined if data is not ready. */
71
- data(): PColumnDataUniversal | undefined;
68
+ /** Lazy calculates the data, returns undefined if data is not ready. */
69
+ export type PColumnLazyWithLabel<T> = PColumnLazy<T> & {
72
70
  label: string;
73
71
  };
74
72
 
75
73
  /** Universal column is a column that uses a universal column id, and always have label. */
74
+ export type PColumnLazyUniversal<T> = PColumnLazyWithLabel<T> & {
75
+ id: SUniversalPColumnId;
76
+ };
77
+
78
+ /** @deprecated Use PColumnLazyWithLabel instead. */
79
+ export type PColumnEntryWithLabel = PColumnLazy<undefined | PColumnDataUniversal> & {
80
+ label: string;
81
+ };
82
+
83
+ /** @deprecated Use PColumnLazyUniversal instead. */
76
84
  export type PColumnEntryUniversal = PColumnEntryWithLabel & {
77
85
  id: SUniversalPColumnId;
78
86
  };
@@ -2,6 +2,7 @@ import type {
2
2
  DataInfo,
3
3
  PartitionedDataInfoEntries,
4
4
  PColumn,
5
+ PColumnLazy,
5
6
  PColumnValues,
6
7
  } from '@milaboratories/pl-model-common';
7
8
  import {
@@ -501,8 +502,9 @@ export function parsePColumnData(
501
502
  * @param acc - The input data, which can be TreeNodeAccessor, DataInfoEntries, DataInfo, or undefined.
502
503
  * @returns The data in DataInfoEntries format, or undefined if the input was undefined or data is not ready.
503
504
  */
504
- export function convertOrParsePColumnData(acc: TreeNodeAccessor | DataInfoEntries<TreeNodeAccessor> | DataInfo<TreeNodeAccessor> | undefined):
505
- DataInfoEntries<TreeNodeAccessor> | undefined {
505
+ export function convertOrParsePColumnData(
506
+ acc: TreeNodeAccessor | DataInfoEntries<TreeNodeAccessor> | DataInfo<TreeNodeAccessor> | undefined,
507
+ ): DataInfoEntries<TreeNodeAccessor> | undefined {
506
508
  if (acc === undefined) return undefined;
507
509
 
508
510
  if (isDataInfoEntries(acc)) return acc;
@@ -512,22 +514,25 @@ DataInfoEntries<TreeNodeAccessor> | undefined {
512
514
  throw new Error(`Unexpected input type: ${typeof acc}`);
513
515
  }
514
516
 
515
- export function isPColumnReady(c: PColumn<PColumnDataUniversal>): boolean {
517
+ export function isPColumnReady(c: (PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>)): c is PColumn<PColumnDataUniversal> | PColumnLazy<PColumnDataUniversal> {
516
518
  const isValues = (d: PColumnDataUniversal): d is PColumnValues => Array.isArray(d);
517
519
  const isAccessor = (d: PColumnDataUniversal): d is TreeNodeAccessor => d instanceof TreeNodeAccessor;
518
520
 
519
521
  let ready = true;
520
- if (isAccessor(c.data)) {
521
- ready &&= c.data.getIsReadyOrError();
522
- } else if (isDataInfo(c.data)) {
523
- visitDataInfo(c.data, (v) => ready &&= v.getIsReadyOrError());
524
- } else if (!isValues(c.data)) {
522
+ const data = typeof c.data === 'function' ? c.data() : c.data;
523
+ if (data == null) {
524
+ return false;
525
+ } else if (isAccessor(data)) {
526
+ ready &&= data.getIsReadyOrError();
527
+ } else if (isDataInfo(data)) {
528
+ visitDataInfo(data, (v) => ready &&= v.getIsReadyOrError());
529
+ } else if (!isValues(data)) {
525
530
  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
526
- throw Error(`unsupported column data type: ${c.data satisfies never}`);
531
+ throw Error(`unsupported column data type: ${data satisfies never}`);
527
532
  }
528
533
  return ready;
529
534
  }
530
535
 
531
- export function allPColumnsReady(columns: PColumn<PColumnDataUniversal>[]): boolean {
536
+ export function allPColumnsReady(columns: (PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>)[]): columns is (PColumn<PColumnDataUniversal> | PColumnLazy<PColumnDataUniversal>)[] {
532
537
  return columns.every(isPColumnReady);
533
538
  }