@conduction/nextcloud-vue 2.97.0 → 2.99.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 (160) hide show
  1. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js +12 -0
  2. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js.map +1 -1
  3. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js +11 -2
  4. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js.map +1 -1
  5. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +17 -0
  6. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
  7. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
  8. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue.js +1 -1
  9. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue2.js.map +1 -1
  10. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue3.js +1 -1
  11. package/dist/esm/components/CnBreadcrumbs/CnBreadcrumbs.vue3.js.map +1 -1
  12. package/dist/esm/components/CnChartWidget/CnChartWidget.vue.js +1 -1
  13. package/dist/esm/components/CnChartWidget/CnChartWidget.vue2.js +106 -2
  14. package/dist/esm/components/CnChartWidget/CnChartWidget.vue2.js.map +1 -1
  15. package/dist/esm/components/CnChartWidget/CnChartWidget.vue3.js.map +1 -1
  16. package/dist/esm/components/CnChecklistRunWidget/CnChecklistRunWidget.vue.js +9 -0
  17. package/dist/esm/components/CnChecklistRunWidget/CnChecklistRunWidget.vue.js.map +1 -0
  18. package/dist/esm/components/CnChecklistRunWidget/CnChecklistRunWidget.vue2.js +964 -0
  19. package/dist/esm/components/CnChecklistRunWidget/CnChecklistRunWidget.vue2.js.map +1 -0
  20. package/dist/esm/components/CnChecklistRunWidget/CnChecklistRunWidget.vue3.js +282 -0
  21. package/dist/esm/components/CnChecklistRunWidget/CnChecklistRunWidget.vue3.js.map +1 -0
  22. package/dist/esm/components/CnChecklistRunWidget/index.js +28 -0
  23. package/dist/esm/components/CnChecklistRunWidget/index.js.map +1 -0
  24. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
  25. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +1 -0
  26. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  27. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  28. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +26 -8
  29. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  30. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  31. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +188 -5
  32. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  33. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js +2 -1
  34. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  35. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue.js +1 -1
  36. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js +3 -3
  37. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js.map +1 -1
  38. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue3.js.map +1 -1
  39. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue.js +1 -1
  40. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue2.js +27 -0
  41. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue2.js.map +1 -1
  42. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue3.js +16 -2
  43. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue3.js.map +1 -1
  44. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +43 -3
  45. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  46. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  47. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue.js +9 -0
  48. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue.js.map +1 -0
  49. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue2.js +239 -0
  50. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue2.js.map +1 -0
  51. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue3.js +182 -0
  52. package/dist/esm/components/CnOrderedListField/CnOrderedListField.vue3.js.map +1 -0
  53. package/dist/esm/components/CnSettingsField/CnSettingsField.vue.js +9 -0
  54. package/dist/esm/components/CnSettingsField/CnSettingsField.vue.js.map +1 -0
  55. package/dist/esm/components/CnSettingsField/CnSettingsField.vue2.js +265 -0
  56. package/dist/esm/components/CnSettingsField/CnSettingsField.vue2.js.map +1 -0
  57. package/dist/esm/components/CnSettingsField/CnSettingsField.vue3.js +191 -0
  58. package/dist/esm/components/CnSettingsField/CnSettingsField.vue3.js.map +1 -0
  59. package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue.js +9 -0
  60. package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue.js.map +1 -0
  61. package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue2.js +508 -0
  62. package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue2.js.map +1 -0
  63. package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue3.js +99 -0
  64. package/dist/esm/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue3.js.map +1 -0
  65. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue.js +1 -1
  66. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js +18 -70
  67. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js.map +1 -1
  68. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js +6 -44
  69. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js.map +1 -1
  70. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue.js +1 -1
  71. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue2.js +83 -9
  72. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue2.js.map +1 -1
  73. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue3.js +80 -11
  74. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue3.js.map +1 -1
  75. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +2 -0
  76. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
  77. package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue.js +9 -0
  78. package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue.js.map +1 -0
  79. package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue2.js +472 -0
  80. package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue2.js.map +1 -0
  81. package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue3.js +231 -0
  82. package/dist/esm/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue3.js.map +1 -0
  83. package/dist/esm/components/CnWorkingCalendarWidget/index.js +27 -0
  84. package/dist/esm/components/CnWorkingCalendarWidget/index.js.map +1 -0
  85. package/dist/esm/composables/indexSources.js +238 -2
  86. package/dist/esm/composables/indexSources.js.map +1 -1
  87. package/dist/esm/composables/useFlowStore.js +2 -1
  88. package/dist/esm/composables/useFlowStore.js.map +1 -1
  89. package/dist/esm/composables/useOrganisationStore.js +115 -0
  90. package/dist/esm/composables/useOrganisationStore.js.map +1 -0
  91. package/dist/esm/index.js +5 -0
  92. package/dist/esm/index.js.map +1 -1
  93. package/dist/esm/l10n/en.json.js +109 -1
  94. package/dist/esm/l10n/en.json.js.map +1 -1
  95. package/dist/esm/l10n/nl.json.js +138 -1
  96. package/dist/esm/l10n/nl.json.js.map +1 -1
  97. package/dist/esm/library-style.js +1 -1
  98. package/dist/esm/nextcloud-vue.css +1071 -274
  99. package/dist/esm/utils/builtInFormatters.js +34 -1
  100. package/dist/esm/utils/builtInFormatters.js.map +1 -1
  101. package/dist/esm/utils/libraryWidgetKeys.js +2 -0
  102. package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
  103. package/dist/esm/utils/matrixCells.js +158 -0
  104. package/dist/esm/utils/matrixCells.js.map +1 -0
  105. package/dist/esm/utils/nextcloudDirectory.js +121 -0
  106. package/dist/esm/utils/nextcloudDirectory.js.map +1 -0
  107. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  108. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  109. package/dist/esm/utils/workingCalendarMonth.js +85 -0
  110. package/dist/esm/utils/workingCalendarMonth.js.map +1 -0
  111. package/dist/nextcloud-vue.cjs.js +14888 -10014
  112. package/dist/nextcloud-vue.cjs.js.map +2 -2
  113. package/dist/nextcloud-vue.css +1071 -274
  114. package/l10n/en.json +109 -1
  115. package/l10n/nl.json +138 -1
  116. package/package.json +2 -2
  117. package/scripts/merge-l10n.js +196 -0
  118. package/src/components/CnActionsMenu/CnActionsMenu.vue +14 -1
  119. package/src/components/CnAppRoot/CnAppRoot.md +1 -0
  120. package/src/components/CnAppRoot/CnAppRoot.vue +17 -0
  121. package/src/components/CnBreadcrumbs/CnBreadcrumbs.vue +1 -0
  122. package/src/components/CnChartWidget/CnChartWidget.md +2 -1
  123. package/src/components/CnChartWidget/CnChartWidget.vue +106 -2
  124. package/src/components/CnChecklistRunWidget/CnChecklistRunWidget.vue +1269 -0
  125. package/src/components/CnChecklistRunWidget/index.js +27 -0
  126. package/src/components/CnDashboardPage/CnDashboardPage.vue +1 -0
  127. package/src/components/CnDataTable/CnDataTable.vue +26 -8
  128. package/src/components/CnDetailPage/CnDetailPage.md +48 -0
  129. package/src/components/CnDetailPage/CnDetailPage.vue +189 -5
  130. package/src/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue +3 -3
  131. package/src/components/CnFeaturesBoard/CnFeaturesBoard.vue +38 -2
  132. package/src/components/CnIndexPage/CnIndexPage.md +28 -0
  133. package/src/components/CnIndexPage/CnIndexPage.vue +43 -3
  134. package/src/components/CnOrderedListField/CnOrderedListField.vue +458 -0
  135. package/src/components/CnOrderedListField/index.js +7 -0
  136. package/src/components/CnSettingsField/CnSettingsField.vue +449 -0
  137. package/src/components/CnSettingsField/index.js +4 -0
  138. package/src/components/CnSettingsFieldsSection/CnSettingsFieldsSection.vue +613 -0
  139. package/src/components/CnSettingsFieldsSection/index.js +4 -0
  140. package/src/components/CnSettingsPage/CnSettingsPage.vue +6 -86
  141. package/src/components/CnUserSettingsDialog/CnUserSettingsDialog.vue +139 -10
  142. package/src/components/CnWidgetGrid/registerDashboardWidgets.js +2 -0
  143. package/src/components/CnWorkingCalendarWidget/CnWorkingCalendarWidget.vue +725 -0
  144. package/src/components/CnWorkingCalendarWidget/index.js +26 -0
  145. package/src/components/index.js +5 -0
  146. package/src/composables/indexSources.js +237 -1
  147. package/src/composables/useFlowStore.js +2 -1
  148. package/src/composables/useOrganisationStore.js +111 -0
  149. package/src/css/badge.css +32 -16
  150. package/src/css/look-board-detail.css +80 -8
  151. package/src/css/look-board-index.css +52 -8
  152. package/src/css/look-board.css +219 -1
  153. package/src/index.js +5 -0
  154. package/src/schemas/app-manifest-v2.schema.json +33 -3
  155. package/src/utils/builtInFormatters.js +33 -0
  156. package/src/utils/libraryWidgetKeys.js +2 -0
  157. package/src/utils/matrixCells.js +154 -0
  158. package/src/utils/nextcloudDirectory.js +117 -0
  159. package/src/utils/validateManifestV2.compiled.js +3 -3
  160. package/src/utils/workingCalendarMonth.js +82 -0
@@ -138,9 +138,11 @@ import { useDataSource } from '../../composables/useDataSource.js'
138
138
  import { getByPath, useEndpointSource } from '../../composables/useEndpointSource.js'
139
139
  import { useObjectStore } from '../../store/useObjectStore.js'
140
140
  import { resolveObjectOpType } from '../../utils/actionsDispatcher.js'
141
+ import { fetchReferenceObjects } from '../../utils/boardReferenceColumns.js'
141
142
  import { resolveObjectTokenContext } from '../../utils/detailObjectContext.js'
142
143
  import { safeCurrencyCode } from '../../utils/formatMetric.js'
143
- import { resolveFilterTokens } from '../../utils/resolveFilterTokens.js'
144
+ import { cellsFromRecord, pivotCells } from '../../utils/matrixCells.js'
145
+ import { hasUnresolvedTokens, resolveFilterTokens } from '../../utils/resolveFilterTokens.js'
144
146
  import { userLocale } from '../../utils/userLocale.js'
145
147
 
146
148
  /**
@@ -388,6 +390,26 @@ export default {
388
390
  default: null,
389
391
  },
390
392
 
393
+ /**
394
+ * `matrix`: read the cells from records that each hold one cell, in
395
+ * a register: `{ register, schema, filter?, rowField, columnField,
396
+ * valueField, rowLabelField?, columnLabelField?, rowLabels?,
397
+ * columnLabels?, valueLabels?, rowOrder?, columnOrder?, rowOrderField?,
398
+ * columnOrderField?, limit? }`. `filter` takes tokens such as
399
+ * `@object.matrixVersion`; the list waits while one is unresolved.
400
+ * With `cellsPath` the matrix sits inside ONE record instead: the
401
+ * first record `filter` finds (else `fallbackFilter`), its array at
402
+ * `cellsPath` narrowed by `cellFilter` (tokens allowed), the axis
403
+ * order from `rowOrderPath` / `columnOrderPath` on that record.
404
+ * Wins over `series` / `categories`.
405
+ *
406
+ * @spec openspec/changes/matrix-cell-records/specs/matrix-cell-records/spec.md#requirement-a-matrix-can-read-its-cells-from-records
407
+ */
408
+ cellSource: {
409
+ type: Object,
410
+ default: null,
411
+ },
412
+
391
413
  /**
392
414
  * Chart data series. Format depends on chart type.
393
415
  * For line/area/bar: [{ name: string, data: number[] }]
@@ -800,6 +822,8 @@ export default {
800
822
  // `drilldown` click navigates with the filterable value, not the
801
823
  // display label.
802
824
  aggregateData: null,
825
+ // The `cellSource` matrix, laid out (`{ series, categories, columnKeys }`), or null.
826
+ cellData: null,
803
827
  // Active `views[]` switcher key (null = the first view). Local
804
828
  // UI state only — never persisted.
805
829
  activeViewKey: null,
@@ -900,6 +924,9 @@ export default {
900
924
  * and `labels`.
901
925
  */
902
926
  resolvedSeries() {
927
+ if (this.cellData) {
928
+ return this.cellData.series
929
+ }
903
930
  const ep = this.endpointChartData
904
931
  if (ep) {
905
932
  return ep.series
@@ -913,6 +940,9 @@ export default {
913
940
  },
914
941
 
915
942
  resolvedCategories() {
943
+ if (this.cellData) {
944
+ return this.cellData.categories
945
+ }
916
946
  const ep = this.endpointChartData
917
947
  if (ep) {
918
948
  return ep.categories
@@ -926,6 +956,9 @@ export default {
926
956
  },
927
957
 
928
958
  resolvedLabels() {
959
+ if (this.cellData) {
960
+ return this.cellData.categories
961
+ }
929
962
  const ep = this.endpointChartData
930
963
  if (ep) {
931
964
  return ep.labels
@@ -1316,6 +1349,30 @@ export default {
1316
1349
  return this.emptyLabel !== '' && !this.hasChartData
1317
1350
  },
1318
1351
 
1352
+ /**
1353
+ * The `cellSource` list as it would be asked, tokens resolved, or null
1354
+ * while there is none or a filter token is unresolved. Refetches when
1355
+ * it changes.
1356
+ *
1357
+ * @return {string|null} The key.
1358
+ * @spec openspec/changes/matrix-cell-records/specs/matrix-cell-records/spec.md#requirement-a-matrix-can-read-its-cells-from-records
1359
+ */
1360
+ cellSourceKey() {
1361
+ const src = this.cellSource
1362
+ if (!src || typeof src !== 'object' || !src.register || !src.schema || !src.rowField || !src.columnField || !src.valueField) {
1363
+ return null
1364
+ }
1365
+ const ctx = this.chartTokenCtx()
1366
+ const resolve = (value) => resolveFilterTokens(value && typeof value === 'object' ? value : {}, ctx)
1367
+ const filter = resolve(src.filter)
1368
+ const cellFilter = resolve(src.cellFilter)
1369
+ if (hasUnresolvedTokens(filter) || hasUnresolvedTokens(cellFilter)) {
1370
+ return null
1371
+ }
1372
+ const fallbackFilter = src.fallbackFilter ? resolve(src.fallbackFilter) : null
1373
+ return JSON.stringify({ register: src.register, schema: src.schema, filter, fallbackFilter, cellFilter, limit: src.cellsPath ? 1 : (src.limit || 500) })
1374
+ },
1375
+
1319
1376
  /**
1320
1377
  * The rows of a `bar-list`: the categories of the first displayed
1321
1378
  * series, each with its value's share of `barMax` (or the largest
@@ -1370,6 +1427,13 @@ export default {
1370
1427
  cells: columns.map((column, index) => {
1371
1428
  const raw = Array.isArray(entry.data) ? entry.data[index] : undefined
1372
1429
  const isCurrent = current !== null && current.row === rowIndex && current.column === index
1430
+ const valueLabels = this.cellSource && typeof this.cellSource.valueLabels === 'object' ? this.cellSource.valueLabels : null
1431
+ if (valueLabels && raw !== null && raw !== undefined && typeof valueLabels[String(raw)] === 'string') {
1432
+ const label = valueLabels[String(raw)]
1433
+ const tone = map[String(raw)] || map[label]
1434
+ const level = TONE_LEVELS[tone] ?? 0
1435
+ return { text: this.hostTranslate(label), level: level || 'tone', color: level ? '' : (tone || ''), current: isCurrent }
1436
+ }
1373
1437
  if (typeof raw === 'string') {
1374
1438
  const tone = map[raw]
1375
1439
  const level = TONE_LEVELS[tone] ?? 0
@@ -1409,7 +1473,8 @@ export default {
1409
1473
  const series = Array.isArray(this.plottedSeries) ? this.plottedSeries : []
1410
1474
  const rowIndex = series.findIndex((entry, i) => entry && (String(entry.key ?? '') === row || String(entry.name ?? '') === row || String(i + 1) === row))
1411
1475
  const columns = Array.isArray(this.resolvedCategories) ? this.resolvedCategories.map((c) => String(c)) : []
1412
- const keys = Array.isArray(def.columnKeys) ? def.columnKeys.map((k) => String(k)) : []
1476
+ const declared = Array.isArray(def.columnKeys) ? def.columnKeys : (this.cellData ? this.cellData.columnKeys : [])
1477
+ const keys = declared.map((k) => String(k))
1413
1478
  let columnIndex = keys.indexOf(column)
1414
1479
  if (columnIndex < 0) {
1415
1480
  columnIndex = columns.findIndex((c, i) => c === column || String(i + 1) === column)
@@ -1586,6 +1651,10 @@ export default {
1586
1651
  aggregateKey() {
1587
1652
  this.fetchAggregateSource()
1588
1653
  },
1654
+
1655
+ cellSourceKey() {
1656
+ this.fetchCells()
1657
+ },
1589
1658
  },
1590
1659
 
1591
1660
  created() {
@@ -1597,6 +1666,7 @@ export default {
1597
1666
  this.fetchGroupBy()
1598
1667
  this.fetchTimeBucket()
1599
1668
  this.fetchAggregateSource()
1669
+ this.fetchCells()
1600
1670
  // Subscribe to the widget Refresh bus (B3 event-bus opt-in mode)
1601
1671
  // FIRST, before the ResizeObserver early-return — environments
1602
1672
  // without ResizeObserver (jsdom) must still get the subscription.
@@ -1753,6 +1823,7 @@ export default {
1753
1823
  this.fetchGroupBy(),
1754
1824
  this.fetchTimeBucket(),
1755
1825
  this.fetchAggregateSource(),
1826
+ this.fetchCells(),
1756
1827
  ])
1757
1828
  },
1758
1829
 
@@ -1973,6 +2044,39 @@ export default {
1973
2044
  }
1974
2045
  },
1975
2046
 
2047
+ /**
2048
+ * Read the `cellSource` records and lay them out as the matrix: one
2049
+ * record per cell, or with `cellsPath` the cells inside one record. A
2050
+ * failed read leaves the matrix empty rather than showing stale
2051
+ * cells; an answer to an older request is dropped.
2052
+ *
2053
+ * @return {Promise<void>}
2054
+ * @spec openspec/changes/matrix-cell-records/specs/matrix-cell-records/spec.md#requirement-a-matrix-can-read-its-cells-from-records
2055
+ * @spec openspec/changes/matrix-cell-records/specs/matrix-cell-records/spec.md#requirement-a-matrix-can-read-its-cells-from-one-record
2056
+ */
2057
+ async fetchCells() {
2058
+ const key = this.cellSourceKey
2059
+ if (key === null) {
2060
+ this.cellData = null
2061
+ return
2062
+ }
2063
+ const { register, schema, filter, fallbackFilter, cellFilter, limit } = JSON.parse(key)
2064
+ this._cellRequest = key
2065
+ let records = await fetchReferenceObjects({ register, schema, filter, limit }).catch(() => [])
2066
+ if (this.cellSource.cellsPath && records.length === 0 && fallbackFilter) {
2067
+ records = await fetchReferenceObjects({ register, schema, filter: fallbackFilter, limit }).catch(() => [])
2068
+ }
2069
+ if (this._cellRequest !== key) {
2070
+ return
2071
+ }
2072
+ if (this.cellSource.cellsPath) {
2073
+ const { cells, config } = cellsFromRecord(records[0] || null, this.cellSource, cellFilter)
2074
+ this.cellData = pivotCells(cells, config)
2075
+ return
2076
+ }
2077
+ this.cellData = pivotCells(records, this.cellSource)
2078
+ },
2079
+
1976
2080
  /**
1977
2081
  * Resolve the OBJECT-form `dataSource.aggregate` (Wave 3, #91) into
1978
2082
  * chart data: a categorical group-by over the schema's objects with