@trops/dash-core 0.1.405 → 0.1.406

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.
package/dist/index.esm.js CHANGED
@@ -55708,12 +55708,53 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
55708
55708
  useEffect(function () {
55709
55709
  if (popout) return;
55710
55710
  var handler = function handler(e) {
55711
+ var _sidebarWorkspaceRef$;
55711
55712
  var detail = (e === null || e === void 0 ? void 0 : e.detail) || {};
55712
55713
  if (!workspaceSelected) return;
55713
- var updated = moveWidgetAcrossContainers(workspaceSelected, detail.sourceGridContainerId, detail.sourceCellNumber, detail.targetGridContainerId, detail.targetCellNumber);
55714
+
55715
+ // CRITICAL: LayoutBuilder edits (deletes, same-container moves,
55716
+ // new widget drops) live in each LayoutBuilder's internal state
55717
+ // and propagate upward only via refs — they never write back
55718
+ // into `workspaceSelected`. So we must overlay the LIVE refs
55719
+ // before applying the cross-container move, otherwise we'd base
55720
+ // the move on stale state and clobber the user's unsaved edits
55721
+ // (they'd see deleted widgets reappear after a cross-container
55722
+ // drop). This mirrors `handleClickSaveWorkspace`'s own logic.
55723
+ var liveWorkspace = JSON.parse(JSON.stringify(workspaceSelected));
55724
+ liveWorkspace.pages = (liveWorkspace.pages || []).map(function (page) {
55725
+ var _pageRef$current;
55726
+ var pageRef = pageRefsMap.current[page.id];
55727
+ var liveLayout = pageRef === null || pageRef === void 0 || (_pageRef$current = pageRef.current) === null || _pageRef$current === void 0 ? void 0 : _pageRef$current.layout;
55728
+ return liveLayout ? _objectSpread$6(_objectSpread$6({}, page), {}, {
55729
+ layout: liveLayout
55730
+ }) : page;
55731
+ });
55732
+ if ((_sidebarWorkspaceRef$ = sidebarWorkspaceRef.current) !== null && _sidebarWorkspaceRef$ !== void 0 && _sidebarWorkspaceRef$.layout && Array.isArray(sidebarWorkspaceRef.current.layout)) {
55733
+ liveWorkspace.sidebarLayout = sidebarWorkspaceRef.current.layout;
55734
+ }
55735
+ var updated = moveWidgetAcrossContainers(liveWorkspace, detail.sourceGridContainerId, detail.sourceCellNumber, detail.targetGridContainerId, detail.targetCellNumber);
55714
55736
  if (!updated) {
55715
55737
  return;
55716
55738
  }
55739
+
55740
+ // Sync the refs so when LayoutBuilder's useEffect re-seeds
55741
+ // currentWorkspace from the new workspace prop below, and the
55742
+ // refs are also updated for the next save/cross-move.
55743
+ (updated.pages || []).forEach(function (page) {
55744
+ if (!pageRefsMap.current[page.id]) {
55745
+ pageRefsMap.current[page.id] = {
55746
+ current: null
55747
+ };
55748
+ }
55749
+ pageRefsMap.current[page.id].current = {
55750
+ layout: page.layout
55751
+ };
55752
+ });
55753
+ if (sidebarWorkspaceRef.current) {
55754
+ sidebarWorkspaceRef.current = _objectSpread$6(_objectSpread$6({}, sidebarWorkspaceRef.current || {}), {}, {
55755
+ layout: updated.sidebarLayout || []
55756
+ });
55757
+ }
55717
55758
  updateTabWorkspace(updated);
55718
55759
  if (dashApi && credentials !== null && credentials !== void 0 && credentials.appId) {
55719
55760
  try {
@@ -56245,9 +56286,9 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
56245
56286
  // adding a new page (especially relevant when going from 1 → 2
56246
56287
  // pages where the lone page's tab is hidden but its grid is live).
56247
56288
  var existingPages = workspacePages.map(function (p) {
56248
- var _pageRef$current;
56289
+ var _pageRef$current2;
56249
56290
  var pageRef = pageRefsMap.current[p.id];
56250
- var liveLayout = pageRef === null || pageRef === void 0 || (_pageRef$current = pageRef.current) === null || _pageRef$current === void 0 ? void 0 : _pageRef$current.layout;
56291
+ var liveLayout = pageRef === null || pageRef === void 0 || (_pageRef$current2 = pageRef.current) === null || _pageRef$current2 === void 0 ? void 0 : _pageRef$current2.layout;
56251
56292
  return liveLayout ? _objectSpread$6(_objectSpread$6({}, p), {}, {
56252
56293
  layout: liveLayout
56253
56294
  }) : p;
@@ -56484,11 +56525,11 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
56484
56525
 
56485
56526
  // Derive scrollable state from the active page's root layout item
56486
56527
  function getRootScrollable() {
56487
- var _pageRef$current2, _ws$pages;
56528
+ var _pageRef$current3, _ws$pages;
56488
56529
  var ws = currentWorkspaceRef.current || workspaceSelected;
56489
56530
  if (!ws) return false;
56490
56531
  var pageRef = pageRefsMap.current[currentActivePageId];
56491
- var layout = (pageRef === null || pageRef === void 0 || (_pageRef$current2 = pageRef.current) === null || _pageRef$current2 === void 0 ? void 0 : _pageRef$current2.layout) || ((_ws$pages = ws.pages) === null || _ws$pages === void 0 || (_ws$pages = _ws$pages.find(function (p) {
56532
+ var layout = (pageRef === null || pageRef === void 0 || (_pageRef$current3 = pageRef.current) === null || _pageRef$current3 === void 0 ? void 0 : _pageRef$current3.layout) || ((_ws$pages = ws.pages) === null || _ws$pages === void 0 || (_ws$pages = _ws$pages.find(function (p) {
56492
56533
  return p.id === currentActivePageId;
56493
56534
  })) === null || _ws$pages === void 0 ? void 0 : _ws$pages.layout);
56494
56535
  if (!layout) return false;
@@ -56499,15 +56540,15 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
56499
56540
  }
56500
56541
  function handleClickSaveWorkspace() {
56501
56542
  try {
56502
- var _sidebarWorkspaceRef$;
56543
+ var _sidebarWorkspaceRef$2;
56503
56544
  // we have to remove the widgetConfig which contains the component
56504
56545
  // sanitize the workspace layout remove widgetConfig items
56505
56546
  // Gather latest layout from each page's LayoutBuilder ref
56506
56547
  var workspaceToSave = deepCopy(workspaceSelected);
56507
56548
  workspaceToSave.pages = (workspaceToSave.pages || []).map(function (page) {
56508
- var _pageRef$current3;
56549
+ var _pageRef$current4;
56509
56550
  var pageRef = pageRefsMap.current[page.id];
56510
- var latestLayout = (pageRef === null || pageRef === void 0 || (_pageRef$current3 = pageRef.current) === null || _pageRef$current3 === void 0 ? void 0 : _pageRef$current3.layout) || page.layout || [];
56551
+ var latestLayout = (pageRef === null || pageRef === void 0 || (_pageRef$current4 = pageRef.current) === null || _pageRef$current4 === void 0 ? void 0 : _pageRef$current4.layout) || page.layout || [];
56511
56552
  return _objectSpread$6(_objectSpread$6({}, page), {}, {
56512
56553
  layout: latestLayout.map(function (item) {
56513
56554
  var copy = _objectSpread$6({}, item);
@@ -56526,7 +56567,7 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
56526
56567
  }
56527
56568
 
56528
56569
  // Gather sidebar layout from its LayoutBuilder ref
56529
- if ((_sidebarWorkspaceRef$ = sidebarWorkspaceRef.current) !== null && _sidebarWorkspaceRef$ !== void 0 && _sidebarWorkspaceRef$.layout) {
56570
+ if ((_sidebarWorkspaceRef$2 = sidebarWorkspaceRef.current) !== null && _sidebarWorkspaceRef$2 !== void 0 && _sidebarWorkspaceRef$2.layout) {
56530
56571
  workspaceToSave.sidebarLayout = sidebarWorkspaceRef.current.layout.map(function (item) {
56531
56572
  var copy = _objectSpread$6({}, item);
56532
56573
  delete copy.widgetConfig;