@crystaldesign/diva-backoffice 26.11.0-beta.16 → 26.11.0-beta.17

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.
@@ -37225,8 +37225,21 @@ var useEnricherContext = function useEnricherContext() {
37225
37225
  // dependency on it nothing would ever retry — the package would stay a placeholder.
37226
37226
  }, [placeholderId, root.dataStore.jwt]);
37227
37227
 
37228
+ // The URL param wins synchronously: direct navigation (deep link, agent entity link) renders before the sync effect updates the shared context.
37229
+ var ctx = getContext();
37230
+ var urlOverride = urlPackageId && urlPackageId !== ctx.packageId ? {
37231
+ packageId: urlPackageId,
37232
+ selectedPackage: {
37233
+ _id: urlPackageId,
37234
+ name: '',
37235
+ isoLanguageIds: [],
37236
+ isApi: false,
37237
+ onlyPlaceholder: true
37238
+ }
37239
+ } : {};
37240
+
37228
37241
  // Return context + handlers
37229
- return _objectSpread$18(_objectSpread$18({}, getContext()), {}, {
37242
+ return _objectSpread$18(_objectSpread$18(_objectSpread$18({}, ctx), urlOverride), {}, {
37230
37243
  setSelectedSerie: setSelectedSerie,
37231
37244
  setSelectedItem: setSelectedItem,
37232
37245
  setSelectedFeature: setSelectedFeature,
@@ -76757,7 +76770,7 @@ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t
76757
76770
  /** Definitions of the serie/item selection tools this toolset executes — sent to the backend per turn. */
76758
76771
  var BACKOFFICE_TOOL_DEFS = [{
76759
76772
  name: 'listSeries',
76760
- description: 'List the series (models) of the current backoffice catalog/package with serieNo and name, plus the currently selected serie/item.',
76773
+ description: 'List the series (models) of the current backoffice catalog/package with serieNo and name, plus the currently selected serie/item. Configurator-entry tool: only meaningful INSIDE a catalog/package editor, as the first step of deliberate engine work (selectSerie next) — for data/inventory questions use the table views instead.',
76761
76774
  input_schema: {
76762
76775
  type: 'object',
76763
76776
  properties: {}
@@ -77526,21 +77539,30 @@ function _locateRowCore() {
77526
77539
  }
77527
77540
  throw new Error("Column '".concat(column, "' not found \u2014 use a field id from listGrids."));
77528
77541
  case 4:
77529
- isNumber = colDef.cellDataType === 'number' || !!value && !Number.isNaN(Number(value)) && colDef.cellDataType !== 'text'; // Right after a navigation the first server-side block may still be LOADING without
77530
- // waiting, zero rows look "loaded", the scan misses, and the filter fallback fires even
77531
- // though the row would be visible on the first page.
77542
+ isNumber = colDef.cellDataType === 'number' || !!value && !Number.isNaN(Number(value)) && colDef.cellDataType !== 'text'; // A non-numeric value can never match a number column bail out before the server-side
77543
+ // filter would send NaN (the grid API 500s on it and the table is left in an error state).
77544
+ if (!(colDef.cellDataType === 'number' && Number.isNaN(Number(value)))) {
77545
+ _context3.next = 7;
77546
+ break;
77547
+ }
77548
+ return _context3.abrupt("return", {
77549
+ node: undefined,
77550
+ filterApplied: false,
77551
+ loadedMatches: 0
77552
+ });
77553
+ case 7:
77532
77554
  if (isRealRow(api.getDisplayedRowAtIndex(0))) {
77533
- _context3.next = 8;
77555
+ _context3.next = 10;
77534
77556
  break;
77535
77557
  }
77536
- _context3.next = 8;
77558
+ _context3.next = 10;
77537
77559
  return waitForRows(api);
77538
- case 8:
77560
+ case 10:
77539
77561
  loaded = scanLoadedRows(api, column, String(value), isNumber);
77540
77562
  firstNode = loaded.first;
77541
77563
  filterApplied = false;
77542
77564
  if (firstNode) {
77543
- _context3.next = 23;
77565
+ _context3.next = 25;
77544
77566
  break;
77545
77567
  }
77546
77568
  previousFilter = api.getFilterModel();
@@ -77555,12 +77577,12 @@ function _locateRowCore() {
77555
77577
  };
77556
77578
  api.setFilterModel(_defineProperty({}, column, filterModel));
77557
77579
  filterApplied = true;
77558
- _context3.next = 18;
77580
+ _context3.next = 20;
77559
77581
  return waitForRows(api);
77560
- case 18:
77582
+ case 20:
77561
77583
  candidate = (_api$getDisplayedRowA = api.getDisplayedRowAtIndex(0)) !== null && _api$getDisplayedRowA !== void 0 ? _api$getDisplayedRowA : undefined;
77562
77584
  if (isRealRow(candidate)) {
77563
- _context3.next = 22;
77585
+ _context3.next = 24;
77564
77586
  break;
77565
77587
  }
77566
77588
  // Restore the previous filter — leaving a dead filter active would make every
@@ -77571,14 +77593,14 @@ function _locateRowCore() {
77571
77593
  filterApplied: filterApplied,
77572
77594
  loadedMatches: 0
77573
77595
  });
77574
- case 22:
77596
+ case 24:
77575
77597
  firstNode = candidate;
77576
- case 23:
77598
+ case 25:
77577
77599
  api.ensureIndexVisible((_rowIndex = firstNode.rowIndex) !== null && _rowIndex !== void 0 ? _rowIndex : 0, 'middle');
77578
77600
  // Let the scrolled-to row render before highlighting.
77579
- _context3.next = 26;
77601
+ _context3.next = 28;
77580
77602
  return sleep(150);
77581
- case 26:
77603
+ case 28:
77582
77604
  api.flashCells({
77583
77605
  rowNodes: [firstNode]
77584
77606
  });
@@ -77595,7 +77617,7 @@ function _locateRowCore() {
77595
77617
  filterApplied: filterApplied,
77596
77618
  loadedMatches: loaded.count
77597
77619
  });
77598
- case 29:
77620
+ case 31:
77599
77621
  case "end":
77600
77622
  return _context3.stop();
77601
77623
  }
@@ -78198,7 +78220,7 @@ function showEntityFromLink(_x10, _x11) {
78198
78220
  function _showEntityFromLink() {
78199
78221
  _showEntityFromLink = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(root, href) {
78200
78222
  var _params$get, _params$get2, _params$get3, _params$get4, _params$get5, _params$get6, _params$get7, _params$get8;
78201
- var params, targetPath, grid, column, value, api, _yield$locateRowCore, parentNode, toolId, toolDeadline, opened, _i2, _arr, bar, tool, subGrid, subColumn, subValue, subApi;
78223
+ var params, targetPath, grid, column, value, targetMissing, api, _yield$locateRowCore$, parentNode, toolId, toolDeadline, opened, _i2, _arr, bar, tool, subGrid, subColumn, subValue, subApi;
78202
78224
  return _regeneratorRuntime.wrap(function _callee5$(_context5) {
78203
78225
  while (1) switch (_context5.prev = _context5.next) {
78204
78226
  case 0:
@@ -78223,47 +78245,62 @@ function _showEntityFromLink() {
78223
78245
  }
78224
78246
  return _context5.abrupt("return");
78225
78247
  case 10:
78226
- _context5.next = 12;
78227
- return waitForGrid(root, grid, 10000);
78248
+ if (!(value === column)) {
78249
+ _context5.next = 12;
78250
+ break;
78251
+ }
78252
+ return _context5.abrupt("return");
78228
78253
  case 12:
78254
+ // Locate failures past this point happen AFTER a successful navigation — mark them so the
78255
+ // caller can report "view opened, row not found" instead of a dead link.
78256
+ targetMissing = function targetMissing(msg) {
78257
+ return Object.assign(new Error(msg), {
78258
+ entityLinkTargetMissing: true
78259
+ });
78260
+ }; // Wait for the (possibly just navigated-to) table to mount and be ready.
78261
+ _context5.next = 15;
78262
+ return waitForGrid(root, grid, 10000);
78263
+ case 15:
78229
78264
  api = _context5.sent;
78230
78265
  if (api) {
78231
- _context5.next = 15;
78266
+ _context5.next = 18;
78232
78267
  break;
78233
78268
  }
78234
- return _context5.abrupt("return");
78235
- case 15:
78236
- _context5.next = 17;
78237
- return locateRowCore(api, column, value);
78238
- case 17:
78239
- _yield$locateRowCore = _context5.sent;
78240
- parentNode = _yield$locateRowCore.node;
78269
+ throw targetMissing("entity link: table '".concat(grid !== null && grid !== void 0 ? grid : '', "' not found on '").concat(targetPath, "'"));
78270
+ case 18:
78271
+ _context5.next = 20;
78272
+ return locateRowCore(api, column, value)["catch"](function (e) {
78273
+ throw targetMissing(e instanceof Error ? e.message : String(e));
78274
+ });
78275
+ case 20:
78276
+ _yield$locateRowCore$ = _context5.sent;
78277
+ parentNode = _yield$locateRowCore$.node;
78241
78278
  if (parentNode) {
78242
- _context5.next = 21;
78279
+ _context5.next = 24;
78243
78280
  break;
78244
78281
  }
78245
- return _context5.abrupt("return");
78246
- case 21:
78282
+ throw targetMissing("entity link: no row with ".concat(column, "='").concat(value, "' in '").concat(grid !== null && grid !== void 0 ? grid : '', "'"));
78283
+ case 24:
78247
78284
  // Subtable chain: the parent selection reveals a conditional toolbar tool — wait for it,
78248
78285
  // open it, then locate the sub-row inside its grid.
78249
78286
  toolId = (_params$get5 = params.get('tool')) !== null && _params$get5 !== void 0 ? _params$get5 : params.get('subGrid');
78250
78287
  if (toolId) {
78251
- _context5.next = 24;
78288
+ _context5.next = 27;
78252
78289
  break;
78253
78290
  }
78254
78291
  return _context5.abrupt("return");
78255
- case 24:
78292
+ case 27:
78256
78293
  toolDeadline = Date.now() + 5000;
78257
78294
  opened = false;
78258
- case 26:
78295
+ case 29:
78259
78296
  if (!(Date.now() < toolDeadline && !opened)) {
78260
- _context5.next = 44;
78297
+ _context5.next = 47;
78261
78298
  break;
78262
78299
  }
78263
78300
  _i2 = 0, _arr = [root.contentStore.rightToolBar, root.contentStore.bottomToolBar];
78264
- case 28:
78301
+ case 31:
78265
78302
  if (!(_i2 < _arr.length)) {
78266
- _context5.next = 39;
78303
+ _context5.next = 42;
78267
78304
  break;
78268
78305
  }
78269
78306
  bar = _arr[_i2];
@@ -78271,48 +78308,48 @@ function _showEntityFromLink() {
78271
78308
  return candidate.id.toLowerCase() === toolId.toLowerCase();
78272
78309
  });
78273
78310
  if (!tool) {
78274
- _context5.next = 36;
78311
+ _context5.next = 39;
78275
78312
  break;
78276
78313
  }
78277
78314
  bar.selectTool(tool.id);
78278
78315
  bar.hidden = false;
78279
78316
  opened = true;
78280
- return _context5.abrupt("break", 39);
78281
- case 36:
78317
+ return _context5.abrupt("break", 42);
78318
+ case 39:
78282
78319
  _i2++;
78283
- _context5.next = 28;
78320
+ _context5.next = 31;
78284
78321
  break;
78285
- case 39:
78322
+ case 42:
78286
78323
  if (opened) {
78287
- _context5.next = 42;
78324
+ _context5.next = 45;
78288
78325
  break;
78289
78326
  }
78290
- _context5.next = 42;
78327
+ _context5.next = 45;
78291
78328
  return sleep(250);
78292
- case 42:
78293
- _context5.next = 26;
78329
+ case 45:
78330
+ _context5.next = 29;
78294
78331
  break;
78295
- case 44:
78332
+ case 47:
78296
78333
  subGrid = (_params$get6 = params.get('subGrid')) !== null && _params$get6 !== void 0 ? _params$get6 : undefined;
78297
78334
  subColumn = (_params$get7 = params.get('subColumn')) !== null && _params$get7 !== void 0 ? _params$get7 : '';
78298
78335
  subValue = (_params$get8 = params.get('subValue')) !== null && _params$get8 !== void 0 ? _params$get8 : '';
78299
78336
  if (!(!opened || !subColumn || !subValue)) {
78300
- _context5.next = 49;
78337
+ _context5.next = 52;
78301
78338
  break;
78302
78339
  }
78303
78340
  return _context5.abrupt("return");
78304
- case 49:
78305
- _context5.next = 51;
78341
+ case 52:
78342
+ _context5.next = 54;
78306
78343
  return waitForGrid(root, subGrid, 10000);
78307
- case 51:
78344
+ case 54:
78308
78345
  subApi = _context5.sent;
78309
78346
  if (!subApi) {
78310
- _context5.next = 55;
78347
+ _context5.next = 58;
78311
78348
  break;
78312
78349
  }
78313
- _context5.next = 55;
78350
+ _context5.next = 58;
78314
78351
  return locateRowCore(subApi, subColumn, subValue);
78315
- case 55:
78352
+ case 58:
78316
78353
  case "end":
78317
78354
  return _context5.stop();
78318
78355
  }
@@ -78434,9 +78471,10 @@ var DivaAgent = function DivaAgent(_ref) {
78434
78471
  // Clicked diva:// entity links in agent answers → navigate + highlight the row.
78435
78472
  var onEntityLink = useCallback(function (href) {
78436
78473
  void showEntityFromLink(root, href)["catch"](function (e) {
78437
- return LOG$1.error(e);
78474
+ LOG$1.error(e);
78475
+ void message.warning(e !== null && e !== void 0 && e.entityLinkTargetMissing ? t('backoffice.divaAgent.linkRowNotFound', 'Ansicht geöffnet — die verlinkte Zeile wurde aber nicht gefunden.') : t('backoffice.divaAgent.linkFailed', 'Dieser Link kann nicht geöffnet werden — das Ziel existiert nicht (mehr).'));
78438
78476
  });
78439
- }, [root]);
78477
+ }, [root, t]);
78440
78478
 
78441
78479
  // Chat pool is keyed per organization; the catalog/package context is a TAG on each
78442
78480
  // conversation (it steers which chat continues, never filters the list).
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/layout/Toolbar/Tools/DivaAgent/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAYzE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;oCAW3E,SAAS,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;;;AAqI9E,wBAAmC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/layout/Toolbar/Tools/DivaAgent/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAazE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;oCAW3E,SAAS,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;;;AA4I9E,wBAAmC"}
@@ -1 +1 @@
1
- {"version":3,"file":"navigationToolset.d.ts","sourceRoot":"","sources":["../../../../../../../../src/layout/Toolbar/Tools/DivaAgent/navigationToolset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA6B,MAAM,2BAA2B,CAAC;AAGzF,OAAO,KAAK,SAAS,MAAM,6BAA6B,CAAC;AAOzD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAiHD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,qDAAgD,CAAC;AAgNpF;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,wBAAwB,GAAG,YAAY,CAoUnF;AAgBD;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CrF"}
1
+ {"version":3,"file":"navigationToolset.d.ts","sourceRoot":"","sources":["../../../../../../../../src/layout/Toolbar/Tools/DivaAgent/navigationToolset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA6B,MAAM,2BAA2B,CAAC;AAGzF,OAAO,KAAK,SAAS,MAAM,6BAA6B,CAAC;AAOzD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAiHD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,qDAAgD,CAAC;AAmNpF;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,wBAAwB,GAAG,YAAY,CAoUnF;AAgBD;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDrF"}
@@ -1,5 +1,39 @@
1
1
  import { SharedSelectState } from '@crystaldesign/diva-backoffice/ui/SelectSimple/types';
2
2
  export declare const useEnricherContext: (currentModules?: string[]) => {
3
+ setSelectedSerie: (serie: any) => void;
4
+ setSelectedItem: (item: any) => void;
5
+ setSelectedFeature: (feature: any) => void;
6
+ setSelectedPackage: (pkg: any | string, modules?: string[], path?: string, reset?: boolean) => void;
7
+ notifyPackageDataChanged: () => void;
8
+ packageId: string;
9
+ selectedPackage: {
10
+ _id: string;
11
+ name: string;
12
+ isoLanguageIds: never[];
13
+ isApi: boolean;
14
+ onlyPlaceholder: boolean;
15
+ };
16
+ /**
17
+ * If true, the package can only be viewed
18
+ */
19
+ viewOnly?: boolean;
20
+ enricherService: string;
21
+ organizationId: string;
22
+ packageSelectorState: SharedSelectState;
23
+ lookupSeriesSelectorState: SharedSelectState;
24
+ lookupFeatureSelectorState: SharedSelectState;
25
+ exclusivitiesSeriesSelectorState: SharedSelectState;
26
+ exclusivitiesFeatureSelectorState: SharedSelectState;
27
+ selectedSerie: any;
28
+ selectedItem: any;
29
+ selectedFeature: any;
30
+ /**
31
+ * Incremented whenever data of the selected package changed elsewhere (e.g. a table row was saved), so that
32
+ * dependents like the publish button know to refetch — deliberately NOT the same thing as `selectedPackage`,
33
+ * which feeds grid `applicationData`/config; replacing that object on every edit caused the grid to reset itself.
34
+ */
35
+ packageDataVersion: number;
36
+ } | {
3
37
  setSelectedSerie: (serie: any) => void;
4
38
  setSelectedItem: (item: any) => void;
5
39
  setSelectedFeature: (feature: any) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useEnricherContext.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/IDMEnricherEditor/hooks/useEnricherContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,iBAAiB,EAAE,MAAM,sDAAsD,CAAC;AA+BjG,eAAO,MAAM,kBAAkB,oBAAoB,MAAM,EAAE;8BA2D/C,GAAG;4BAOJ,GAAG;kCAMA,GAAG;8BAgBP,GAAG,GAAG,MAAM,YAAW,MAAM,EAAE,SAAyB,MAAM,UAAiB,OAAO;;eAhHnF,MAAM;qBACA,GAAG;IACpB;;OAEG;eACQ,OAAO;qBACD,MAAM;oBACP,MAAM;0BACA,iBAAiB;+BACZ,iBAAiB;gCAChB,iBAAiB;sCACX,iBAAiB;uCAChB,iBAAiB;mBACrC,GAAG;kBACJ,GAAG;qBACA,GAAG;IACpB;;;;OAIG;wBACiB,MAAM;CAkM3B,CAAC"}
1
+ {"version":3,"file":"useEnricherContext.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/IDMEnricherEditor/hooks/useEnricherContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,iBAAiB,EAAE,MAAM,sDAAsD,CAAC;AA+BjG,eAAO,MAAM,kBAAkB,oBAAoB,MAAM,EAAE;8BA2D/C,GAAG;4BAOJ,GAAG;kCAMA,GAAG;8BAgBP,GAAG,GAAG,MAAM,YAAW,MAAM,EAAE,SAAyB,MAAM,UAAiB,OAAO;;;;;;;;;;IA9G9F;;OAEG;eACQ,OAAO;qBACD,MAAM;oBACP,MAAM;0BACA,iBAAiB;+BACZ,iBAAiB;gCAChB,iBAAiB;sCACX,iBAAiB;uCAChB,iBAAiB;mBACrC,GAAG;kBACJ,GAAG;qBACA,GAAG;IACpB;;;;OAIG;wBACiB,MAAM;;8BA8DhB,GAAG;4BAOJ,GAAG;kCAMA,GAAG;8BAgBP,GAAG,GAAG,MAAM,YAAW,MAAM,EAAE,SAAyB,MAAM,UAAiB,OAAO;;eAhHnF,MAAM;qBACA,GAAG;IACpB;;OAEG;eACQ,OAAO;qBACD,MAAM;oBACP,MAAM;0BACA,iBAAiB;+BACZ,iBAAiB;gCAChB,iBAAiB;sCACX,iBAAiB;uCAChB,iBAAiB;mBACrC,GAAG;kBACJ,GAAG;qBACA,GAAG;IACpB;;;;OAIG;wBACiB,MAAM;CA0M3B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crystaldesign/diva-backoffice",
3
- "version": "26.11.0-beta.16",
3
+ "version": "26.11.0-beta.17",
4
4
  "description": "Ant Design backoffice shell: configuration plus the IDM and enricher editors.",
5
5
  "license": "COMMERCIAL",
6
6
  "devDependencies": {
@@ -16,14 +16,14 @@
16
16
  "dependencies": {
17
17
  "@ant-design/icons": "6.1.0",
18
18
  "@babel/runtime": "7.24.7",
19
- "@crystaldesign/content-box": "26.11.0-beta.16",
20
- "@crystaldesign/content-item": "26.11.0-beta.16",
21
- "@crystaldesign/diva-agent": "26.11.0-beta.16",
22
- "@crystaldesign/diva-core": "26.11.0-beta.16",
23
- "@crystaldesign/diva-utils": "26.11.0-beta.16",
24
- "@crystaldesign/media-upload": "26.11.0-beta.16",
25
- "@crystaldesign/rtf-editor": "26.11.0-beta.16",
26
- "@crystaldesign/spreadsheet": "26.11.0-beta.16",
19
+ "@crystaldesign/content-box": "26.11.0-beta.17",
20
+ "@crystaldesign/content-item": "26.11.0-beta.17",
21
+ "@crystaldesign/diva-agent": "26.11.0-beta.17",
22
+ "@crystaldesign/diva-core": "26.11.0-beta.17",
23
+ "@crystaldesign/diva-utils": "26.11.0-beta.17",
24
+ "@crystaldesign/media-upload": "26.11.0-beta.17",
25
+ "@crystaldesign/rtf-editor": "26.11.0-beta.17",
26
+ "@crystaldesign/spreadsheet": "26.11.0-beta.17",
27
27
  "@dnd-kit/core": "^6.1.0",
28
28
  "@dnd-kit/sortable": "^8.0.0",
29
29
  "@dnd-kit/utilities": "^3.2.2",
@@ -57,5 +57,5 @@
57
57
  },
58
58
  "module": "build/esm/index.js",
59
59
  "types": "./build/types/backoffice/src/index.d.ts",
60
- "gitHead": "143b333b4418b90014677f8a29c891f3878d1123"
60
+ "gitHead": "7e95de76bf4d331b60b8d678c01deb685aa64e40"
61
61
  }