@puckeditor/plugin-pages 0.9.0-canary.26589e83 → 0.9.0-canary.2cecde46

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
@@ -8665,11 +8665,14 @@ function registerDynamicConfig(config, data) {
8665
8665
  }
8666
8666
  }
8667
8667
  var resolvedVersions = /* @__PURE__ */ new WeakMap();
8668
- var rememberResolvedData = (data, resolved) => resolvedVersions.set(data, resolved);
8668
+ var rememberResolvedData = (data, resolved) => resolvedVersions.set(data, resolvedVersions.get(resolved) ?? resolved);
8669
8669
  var isDirty = ({
8670
8670
  appState,
8671
8671
  history
8672
- }, version2) => history.histories.length > 1 && !(0, import_fast_equals.deepEqual)(appState.data, version2?.data);
8672
+ }, version2) => history.histories.length > 1 && !(0, import_fast_equals.deepEqual)(
8673
+ appState.data,
8674
+ version2 && (resolvedVersions.get(version2.data) ?? version2.data)
8675
+ );
8673
8676
  var usePageEditorState = () => {
8674
8677
  const getPuck = (0, import_core3.useGetPuck)();
8675
8678
  return (0, import_react25.useMemo)(() => {
@@ -8677,9 +8680,9 @@ var usePageEditorState = () => {
8677
8680
  const { config } = getPuck();
8678
8681
  const pageData = { root: {}, content: [], ...data };
8679
8682
  registerDynamicConfig(config, pageData);
8680
- const resolvedData = (data && resolvedVersions.get(data)) ?? await (0, import_core3.resolveAllData)(pageData, config);
8683
+ let resolvedData = (data && resolvedVersions.get(data)) ?? await (0, import_core3.resolveAllData)(pageData, config);
8684
+ if (isCurrent()) resolvedData = showData(resolvedData);
8681
8685
  if (data) rememberResolvedData(data, resolvedData);
8682
- if (isCurrent()) showData(resolvedData);
8683
8686
  };
8684
8687
  const showData = (data) => {
8685
8688
  const { appState, history, dispatch } = getPuck();
@@ -8690,6 +8693,17 @@ var usePageEditorState = () => {
8690
8693
  };
8691
8694
  history.setHistories([{ state: nextState }]);
8692
8695
  dispatch({ type: "set", state: nextState });
8696
+ const shownData = getPuck().appState.data;
8697
+ setTimeout(() => dropStaleHistory(nextState, shownData), 250);
8698
+ return shownData;
8699
+ };
8700
+ const dropStaleHistory = (shown, shownData) => {
8701
+ const { appState, history } = getPuck();
8702
+ const [first, ...rest] = history.histories;
8703
+ if (first?.state !== shown || !rest.length) return;
8704
+ history.setHistories(
8705
+ (0, import_fast_equals.deepEqual)(appState.data, shownData) ? [{ state: appState }] : [first, { state: appState }]
8706
+ );
8693
8707
  };
8694
8708
  const unloadPageData = () => {
8695
8709
  const { appState, history } = getPuck();
package/dist/index.mjs CHANGED
@@ -8663,11 +8663,14 @@ function registerDynamicConfig(config, data) {
8663
8663
  }
8664
8664
  }
8665
8665
  var resolvedVersions = /* @__PURE__ */ new WeakMap();
8666
- var rememberResolvedData = (data, resolved) => resolvedVersions.set(data, resolved);
8666
+ var rememberResolvedData = (data, resolved) => resolvedVersions.set(data, resolvedVersions.get(resolved) ?? resolved);
8667
8667
  var isDirty = ({
8668
8668
  appState,
8669
8669
  history
8670
- }, version2) => history.histories.length > 1 && !deepEqual2(appState.data, version2?.data);
8670
+ }, version2) => history.histories.length > 1 && !deepEqual2(
8671
+ appState.data,
8672
+ version2 && (resolvedVersions.get(version2.data) ?? version2.data)
8673
+ );
8671
8674
  var usePageEditorState = () => {
8672
8675
  const getPuck = useGetPuck();
8673
8676
  return useMemo21(() => {
@@ -8675,9 +8678,9 @@ var usePageEditorState = () => {
8675
8678
  const { config } = getPuck();
8676
8679
  const pageData = { root: {}, content: [], ...data };
8677
8680
  registerDynamicConfig(config, pageData);
8678
- const resolvedData = (data && resolvedVersions.get(data)) ?? await resolveAllData(pageData, config);
8681
+ let resolvedData = (data && resolvedVersions.get(data)) ?? await resolveAllData(pageData, config);
8682
+ if (isCurrent()) resolvedData = showData(resolvedData);
8679
8683
  if (data) rememberResolvedData(data, resolvedData);
8680
- if (isCurrent()) showData(resolvedData);
8681
8684
  };
8682
8685
  const showData = (data) => {
8683
8686
  const { appState, history, dispatch } = getPuck();
@@ -8688,6 +8691,17 @@ var usePageEditorState = () => {
8688
8691
  };
8689
8692
  history.setHistories([{ state: nextState }]);
8690
8693
  dispatch({ type: "set", state: nextState });
8694
+ const shownData = getPuck().appState.data;
8695
+ setTimeout(() => dropStaleHistory(nextState, shownData), 250);
8696
+ return shownData;
8697
+ };
8698
+ const dropStaleHistory = (shown, shownData) => {
8699
+ const { appState, history } = getPuck();
8700
+ const [first, ...rest] = history.histories;
8701
+ if (first?.state !== shown || !rest.length) return;
8702
+ history.setHistories(
8703
+ deepEqual2(appState.data, shownData) ? [{ state: appState }] : [first, { state: appState }]
8704
+ );
8691
8705
  };
8692
8706
  const unloadPageData = () => {
8693
8707
  const { appState, history } = getPuck();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@puckeditor/plugin-pages",
3
- "version": "0.9.0-canary.26589e83",
3
+ "version": "0.9.0-canary.2cecde46",
4
4
  "author": "Chris Villa <chris@puckeditor.com>",
5
5
  "repository": {
6
6
  "type": "git",
@@ -46,9 +46,9 @@
46
46
  "typescript": "^5.5.4",
47
47
  "vite-tsconfig-paths": "^5.1.4",
48
48
  "vitest": "^4.1.11",
49
- "tsconfig": "0.9.0-canary.26589e83",
50
- "tsup-config": "0.9.0-canary.26589e83",
51
- "eslint-config-custom": "0.9.0-canary.26589e83"
49
+ "tsconfig": "0.9.0-canary.2cecde46",
50
+ "tsup-config": "0.9.0-canary.2cecde46",
51
+ "eslint-config-custom": "0.9.0-canary.2cecde46"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "@puckeditor/core": "^0",