@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.js CHANGED
@@ -55726,12 +55726,53 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
55726
55726
  React.useEffect(function () {
55727
55727
  if (popout) return;
55728
55728
  var handler = function handler(e) {
55729
+ var _sidebarWorkspaceRef$;
55729
55730
  var detail = (e === null || e === void 0 ? void 0 : e.detail) || {};
55730
55731
  if (!workspaceSelected) return;
55731
- var updated = moveWidgetAcrossContainers(workspaceSelected, detail.sourceGridContainerId, detail.sourceCellNumber, detail.targetGridContainerId, detail.targetCellNumber);
55732
+
55733
+ // CRITICAL: LayoutBuilder edits (deletes, same-container moves,
55734
+ // new widget drops) live in each LayoutBuilder's internal state
55735
+ // and propagate upward only via refs — they never write back
55736
+ // into `workspaceSelected`. So we must overlay the LIVE refs
55737
+ // before applying the cross-container move, otherwise we'd base
55738
+ // the move on stale state and clobber the user's unsaved edits
55739
+ // (they'd see deleted widgets reappear after a cross-container
55740
+ // drop). This mirrors `handleClickSaveWorkspace`'s own logic.
55741
+ var liveWorkspace = JSON.parse(JSON.stringify(workspaceSelected));
55742
+ liveWorkspace.pages = (liveWorkspace.pages || []).map(function (page) {
55743
+ var _pageRef$current;
55744
+ var pageRef = pageRefsMap.current[page.id];
55745
+ var liveLayout = pageRef === null || pageRef === void 0 || (_pageRef$current = pageRef.current) === null || _pageRef$current === void 0 ? void 0 : _pageRef$current.layout;
55746
+ return liveLayout ? _objectSpread$6(_objectSpread$6({}, page), {}, {
55747
+ layout: liveLayout
55748
+ }) : page;
55749
+ });
55750
+ if ((_sidebarWorkspaceRef$ = sidebarWorkspaceRef.current) !== null && _sidebarWorkspaceRef$ !== void 0 && _sidebarWorkspaceRef$.layout && Array.isArray(sidebarWorkspaceRef.current.layout)) {
55751
+ liveWorkspace.sidebarLayout = sidebarWorkspaceRef.current.layout;
55752
+ }
55753
+ var updated = moveWidgetAcrossContainers(liveWorkspace, detail.sourceGridContainerId, detail.sourceCellNumber, detail.targetGridContainerId, detail.targetCellNumber);
55732
55754
  if (!updated) {
55733
55755
  return;
55734
55756
  }
55757
+
55758
+ // Sync the refs so when LayoutBuilder's useEffect re-seeds
55759
+ // currentWorkspace from the new workspace prop below, and the
55760
+ // refs are also updated for the next save/cross-move.
55761
+ (updated.pages || []).forEach(function (page) {
55762
+ if (!pageRefsMap.current[page.id]) {
55763
+ pageRefsMap.current[page.id] = {
55764
+ current: null
55765
+ };
55766
+ }
55767
+ pageRefsMap.current[page.id].current = {
55768
+ layout: page.layout
55769
+ };
55770
+ });
55771
+ if (sidebarWorkspaceRef.current) {
55772
+ sidebarWorkspaceRef.current = _objectSpread$6(_objectSpread$6({}, sidebarWorkspaceRef.current || {}), {}, {
55773
+ layout: updated.sidebarLayout || []
55774
+ });
55775
+ }
55735
55776
  updateTabWorkspace(updated);
55736
55777
  if (dashApi && credentials !== null && credentials !== void 0 && credentials.appId) {
55737
55778
  try {
@@ -56263,9 +56304,9 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
56263
56304
  // adding a new page (especially relevant when going from 1 → 2
56264
56305
  // pages where the lone page's tab is hidden but its grid is live).
56265
56306
  var existingPages = workspacePages.map(function (p) {
56266
- var _pageRef$current;
56307
+ var _pageRef$current2;
56267
56308
  var pageRef = pageRefsMap.current[p.id];
56268
- var liveLayout = pageRef === null || pageRef === void 0 || (_pageRef$current = pageRef.current) === null || _pageRef$current === void 0 ? void 0 : _pageRef$current.layout;
56309
+ var liveLayout = pageRef === null || pageRef === void 0 || (_pageRef$current2 = pageRef.current) === null || _pageRef$current2 === void 0 ? void 0 : _pageRef$current2.layout;
56269
56310
  return liveLayout ? _objectSpread$6(_objectSpread$6({}, p), {}, {
56270
56311
  layout: liveLayout
56271
56312
  }) : p;
@@ -56502,11 +56543,11 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
56502
56543
 
56503
56544
  // Derive scrollable state from the active page's root layout item
56504
56545
  function getRootScrollable() {
56505
- var _pageRef$current2, _ws$pages;
56546
+ var _pageRef$current3, _ws$pages;
56506
56547
  var ws = currentWorkspaceRef.current || workspaceSelected;
56507
56548
  if (!ws) return false;
56508
56549
  var pageRef = pageRefsMap.current[currentActivePageId];
56509
- 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) {
56550
+ 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) {
56510
56551
  return p.id === currentActivePageId;
56511
56552
  })) === null || _ws$pages === void 0 ? void 0 : _ws$pages.layout);
56512
56553
  if (!layout) return false;
@@ -56517,15 +56558,15 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
56517
56558
  }
56518
56559
  function handleClickSaveWorkspace() {
56519
56560
  try {
56520
- var _sidebarWorkspaceRef$;
56561
+ var _sidebarWorkspaceRef$2;
56521
56562
  // we have to remove the widgetConfig which contains the component
56522
56563
  // sanitize the workspace layout remove widgetConfig items
56523
56564
  // Gather latest layout from each page's LayoutBuilder ref
56524
56565
  var workspaceToSave = DashReact.deepCopy(workspaceSelected);
56525
56566
  workspaceToSave.pages = (workspaceToSave.pages || []).map(function (page) {
56526
- var _pageRef$current3;
56567
+ var _pageRef$current4;
56527
56568
  var pageRef = pageRefsMap.current[page.id];
56528
- var latestLayout = (pageRef === null || pageRef === void 0 || (_pageRef$current3 = pageRef.current) === null || _pageRef$current3 === void 0 ? void 0 : _pageRef$current3.layout) || page.layout || [];
56569
+ var latestLayout = (pageRef === null || pageRef === void 0 || (_pageRef$current4 = pageRef.current) === null || _pageRef$current4 === void 0 ? void 0 : _pageRef$current4.layout) || page.layout || [];
56529
56570
  return _objectSpread$6(_objectSpread$6({}, page), {}, {
56530
56571
  layout: latestLayout.map(function (item) {
56531
56572
  var copy = _objectSpread$6({}, item);
@@ -56544,7 +56585,7 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
56544
56585
  }
56545
56586
 
56546
56587
  // Gather sidebar layout from its LayoutBuilder ref
56547
- if ((_sidebarWorkspaceRef$ = sidebarWorkspaceRef.current) !== null && _sidebarWorkspaceRef$ !== void 0 && _sidebarWorkspaceRef$.layout) {
56588
+ if ((_sidebarWorkspaceRef$2 = sidebarWorkspaceRef.current) !== null && _sidebarWorkspaceRef$2 !== void 0 && _sidebarWorkspaceRef$2.layout) {
56548
56589
  workspaceToSave.sidebarLayout = sidebarWorkspaceRef.current.layout.map(function (item) {
56549
56590
  var copy = _objectSpread$6({}, item);
56550
56591
  delete copy.widgetConfig;