@puckeditor/plugin-heading-analyzer 0.24.1-canary.609983db → 0.24.1-canary.87f4b195

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
@@ -794,36 +794,47 @@ var HeadingAnalyzer = () => {
794
794
  const data = usePuck((s) => s.appState.data);
795
795
  const [hierarchy, setHierarchy] = (0, import_react10.useState)([]);
796
796
  (0, import_react10.useEffect)(() => {
797
- const frame = getFrame();
798
- let entry = frame == null ? void 0 : frame.querySelector(`[data-puck-entry]`);
797
+ let frame;
798
+ let entry = null;
799
799
  const createHierarchy = () => {
800
- setHierarchy(buildHierarchy(entry));
800
+ setHierarchy(entry ? buildHierarchy(entry) : []);
801
801
  };
802
802
  const entryObserver = new MutationObserver(() => {
803
803
  createHierarchy();
804
804
  });
805
805
  const frameObserver = new MutationObserver(() => {
806
- entry = frame == null ? void 0 : frame.querySelector(`[data-puck-entry]`);
806
+ connect();
807
+ });
808
+ const connect = () => {
809
+ var _a;
810
+ const nextFrame = getFrame();
811
+ const nextEntry = (_a = nextFrame == null ? void 0 : nextFrame.querySelector(`[data-puck-entry]`)) != null ? _a : null;
812
+ if (nextFrame === frame && nextEntry === entry) return;
813
+ frame = nextFrame;
814
+ entry = nextEntry;
815
+ entryObserver.disconnect();
816
+ frameObserver.disconnect();
817
+ createHierarchy();
807
818
  if (entry) {
808
- registerEntryObserver();
809
- frameObserver.disconnect();
819
+ entryObserver.observe(entry, {
820
+ subtree: true,
821
+ childList: true,
822
+ characterData: true
823
+ });
824
+ } else if (frame) {
825
+ frameObserver.observe(frame, { subtree: true, childList: true });
810
826
  }
811
- });
812
- const registerEntryObserver = () => {
813
- if (!entry) return;
814
- entryObserver.observe(entry, { subtree: true, childList: true });
815
827
  };
816
- const registerFrameObserver = () => {
817
- if (!frame) return;
818
- frameObserver.observe(frame, { subtree: true, childList: true });
828
+ const onLoad = (e) => {
829
+ var _a;
830
+ if (((_a = e.target) == null ? void 0 : _a.id) === "preview-frame") {
831
+ connect();
832
+ }
819
833
  };
820
- if (entry) {
821
- createHierarchy();
822
- registerEntryObserver();
823
- } else {
824
- registerFrameObserver();
825
- }
834
+ document.addEventListener("load", onLoad, true);
835
+ connect();
826
836
  return () => {
837
+ document.removeEventListener("load", onLoad, true);
827
838
  entryObserver.disconnect();
828
839
  frameObserver.disconnect();
829
840
  };
package/dist/index.mjs CHANGED
@@ -782,36 +782,47 @@ var HeadingAnalyzer = () => {
782
782
  const data = usePuck((s) => s.appState.data);
783
783
  const [hierarchy, setHierarchy] = useState([]);
784
784
  useEffect5(() => {
785
- const frame = getFrame();
786
- let entry = frame == null ? void 0 : frame.querySelector(`[data-puck-entry]`);
785
+ let frame;
786
+ let entry = null;
787
787
  const createHierarchy = () => {
788
- setHierarchy(buildHierarchy(entry));
788
+ setHierarchy(entry ? buildHierarchy(entry) : []);
789
789
  };
790
790
  const entryObserver = new MutationObserver(() => {
791
791
  createHierarchy();
792
792
  });
793
793
  const frameObserver = new MutationObserver(() => {
794
- entry = frame == null ? void 0 : frame.querySelector(`[data-puck-entry]`);
794
+ connect();
795
+ });
796
+ const connect = () => {
797
+ var _a;
798
+ const nextFrame = getFrame();
799
+ const nextEntry = (_a = nextFrame == null ? void 0 : nextFrame.querySelector(`[data-puck-entry]`)) != null ? _a : null;
800
+ if (nextFrame === frame && nextEntry === entry) return;
801
+ frame = nextFrame;
802
+ entry = nextEntry;
803
+ entryObserver.disconnect();
804
+ frameObserver.disconnect();
805
+ createHierarchy();
795
806
  if (entry) {
796
- registerEntryObserver();
797
- frameObserver.disconnect();
807
+ entryObserver.observe(entry, {
808
+ subtree: true,
809
+ childList: true,
810
+ characterData: true
811
+ });
812
+ } else if (frame) {
813
+ frameObserver.observe(frame, { subtree: true, childList: true });
798
814
  }
799
- });
800
- const registerEntryObserver = () => {
801
- if (!entry) return;
802
- entryObserver.observe(entry, { subtree: true, childList: true });
803
815
  };
804
- const registerFrameObserver = () => {
805
- if (!frame) return;
806
- frameObserver.observe(frame, { subtree: true, childList: true });
816
+ const onLoad = (e) => {
817
+ var _a;
818
+ if (((_a = e.target) == null ? void 0 : _a.id) === "preview-frame") {
819
+ connect();
820
+ }
807
821
  };
808
- if (entry) {
809
- createHierarchy();
810
- registerEntryObserver();
811
- } else {
812
- registerFrameObserver();
813
- }
822
+ document.addEventListener("load", onLoad, true);
823
+ connect();
814
824
  return () => {
825
+ document.removeEventListener("load", onLoad, true);
815
826
  entryObserver.disconnect();
816
827
  frameObserver.disconnect();
817
828
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@puckeditor/plugin-heading-analyzer",
3
- "version": "0.24.1-canary.609983db",
3
+ "version": "0.24.1-canary.87f4b195",
4
4
  "author": "Chris Villa <chris@puckeditor.com>",
5
5
  "repository": {
6
6
  "type": "git",
@@ -23,12 +23,21 @@
23
23
  "dist"
24
24
  ],
25
25
  "devDependencies": {
26
- "@puckeditor/core": "^0.24.1-canary.609983db",
26
+ "@puckeditor/core": "^0.24.1-canary.87f4b195",
27
+ "@testing-library/dom": "^10.4.0",
28
+ "@testing-library/react": "^16.1.0",
29
+ "@types/jest": "^29.5.14",
27
30
  "@types/minimatch": "3.0.5",
28
31
  "@types/react": "^19.0.1",
29
32
  "@types/react-dom": "^19.0.2",
30
33
  "eslint": "^9.0.0",
31
34
  "eslint-config-custom": "0.0.0",
35
+ "identity-obj-proxy": "^3.0.0",
36
+ "jest": "^29.7.0",
37
+ "jest-environment-jsdom": "^30.0.0-beta.3",
38
+ "react": "^19.0.0",
39
+ "react-dom": "^19.0.0",
40
+ "ts-jest": "^29.3.4",
32
41
  "tsconfig": "0.0.0",
33
42
  "tsup": "^8.2.4",
34
43
  "tsup-config": "0.0.0",
@@ -42,6 +51,7 @@
42
51
  },
43
52
  "scripts": {
44
53
  "lint": "eslint \"**/*.ts*\"",
45
- "build": "rm -rf dist && tsup index.ts"
54
+ "build": "rm -rf dist && tsup index.ts",
55
+ "test": "jest"
46
56
  }
47
57
  }