@verdant-web/tiptap 0.1.4 → 0.1.5
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/esm/react.js +8 -3
- package/dist/esm/react.js.map +1 -1
- package/package.json +3 -3
- package/src/react.ts +26 -23
package/dist/esm/react.js
CHANGED
|
@@ -13,7 +13,7 @@ export function useSyncedEditor(parent, fieldName, { editorOptions: extraOptions
|
|
|
13
13
|
const live = useWatch(parent);
|
|
14
14
|
const field = live[fieldName];
|
|
15
15
|
const updatingRef = useRef(false);
|
|
16
|
-
const update =
|
|
16
|
+
const update = useStableCallback((editor) => {
|
|
17
17
|
if (updatingRef.current) {
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
@@ -29,13 +29,13 @@ export function useSyncedEditor(parent, fieldName, { editorOptions: extraOptions
|
|
|
29
29
|
replaceSubObjects: false,
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
|
-
}
|
|
32
|
+
});
|
|
33
33
|
const cachedInitialContent = useRef(ensureDocShape(getFieldSnapshot(field, nullDocumentDefault, fieldName)));
|
|
34
34
|
const editor = useEditor(Object.assign(Object.assign({}, extraOptions), { content: cachedInitialContent.current, onUpdate: (ctx) => {
|
|
35
35
|
var _a;
|
|
36
36
|
update(ctx.editor);
|
|
37
37
|
(_a = extraOptions === null || extraOptions === void 0 ? void 0 : extraOptions.onUpdate) === null || _a === void 0 ? void 0 : _a.call(extraOptions, ctx);
|
|
38
|
-
} }),
|
|
38
|
+
} }), editorDependencies);
|
|
39
39
|
useEffect(() => {
|
|
40
40
|
function updateFromField() {
|
|
41
41
|
if (editor && !editor.isDestroyed) {
|
|
@@ -74,4 +74,9 @@ function getFieldSnapshot(field, nullDocumentDefault, fieldName) {
|
|
|
74
74
|
}
|
|
75
75
|
return content;
|
|
76
76
|
}
|
|
77
|
+
function useStableCallback(callback) {
|
|
78
|
+
const ref = useRef(callback);
|
|
79
|
+
ref.current = callback;
|
|
80
|
+
return useCallback((...args) => ref.current(...args), []);
|
|
81
|
+
}
|
|
77
82
|
//# sourceMappingURL=react.js.map
|
package/dist/esm/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/react.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAoB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAkBvD,MAAM,UAAU,eAAe,CAI9B,MAAW,EACX,SAAc,EACd,EACC,aAAa,EAAE,YAAY,EAC3B,kBAAkB,EAClB,mBAAmB,MAKhB,EAAE;IAEN,MAAM,aAAa,GAAG,MAAM,CAAC;QAC5B,mBAAmB;QACnB,SAAS;KACT,CAAC,CAAC;IACH,aAAa,CAAC,OAAO,GAAG;QACvB,mBAAmB;QACnB,SAAS;KACT,CAAC;IACF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAA2B,CAAC;IACxD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/react.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verdant-web/tiptap",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"access": "public",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/esm/index.js",
|
|
@@ -60,9 +60,9 @@
|
|
|
60
60
|
"react-dom": "19.0.0",
|
|
61
61
|
"@types/react-dom": "19.0.4",
|
|
62
62
|
"@verdant-web/cli": "4.8.2",
|
|
63
|
-
"@verdant-web/
|
|
63
|
+
"@verdant-web/store": "4.1.6",
|
|
64
64
|
"@verdant-web/server": "3.3.8",
|
|
65
|
-
"@verdant-web/
|
|
65
|
+
"@verdant-web/react": "40.2.4"
|
|
66
66
|
},
|
|
67
67
|
"scripts": {
|
|
68
68
|
"test": "vitest",
|
package/src/react.ts
CHANGED
|
@@ -47,29 +47,26 @@ export function useSyncedEditor<
|
|
|
47
47
|
const live = useWatch(parent);
|
|
48
48
|
const field = live[fieldName] as ObjectEntity<any, any>;
|
|
49
49
|
const updatingRef = useRef(false);
|
|
50
|
-
const update =
|
|
51
|
-
(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
50
|
+
const update = useStableCallback((editor: Editor) => {
|
|
51
|
+
if (updatingRef.current) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
55
54
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
[parent],
|
|
72
|
-
);
|
|
55
|
+
const newData = editor.getJSON();
|
|
56
|
+
const value = parent.get(cachedOptions.current.fieldName) as ObjectEntity<
|
|
57
|
+
any,
|
|
58
|
+
any
|
|
59
|
+
> | null;
|
|
60
|
+
if (!value) {
|
|
61
|
+
parent.set(cachedOptions.current.fieldName as any, newData);
|
|
62
|
+
} else {
|
|
63
|
+
value.update(newData, {
|
|
64
|
+
merge: false,
|
|
65
|
+
dangerouslyDisableMerge: true,
|
|
66
|
+
replaceSubObjects: false,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
});
|
|
73
70
|
|
|
74
71
|
const cachedInitialContent = useRef(
|
|
75
72
|
ensureDocShape(getFieldSnapshot(field, nullDocumentDefault, fieldName)),
|
|
@@ -83,7 +80,7 @@ export function useSyncedEditor<
|
|
|
83
80
|
extraOptions?.onUpdate?.(ctx);
|
|
84
81
|
},
|
|
85
82
|
},
|
|
86
|
-
|
|
83
|
+
editorDependencies,
|
|
87
84
|
);
|
|
88
85
|
|
|
89
86
|
useEffect(() => {
|
|
@@ -141,3 +138,9 @@ function getFieldSnapshot(
|
|
|
141
138
|
}
|
|
142
139
|
return content;
|
|
143
140
|
}
|
|
141
|
+
|
|
142
|
+
function useStableCallback<T extends (...args: any[]) => any>(callback: T) {
|
|
143
|
+
const ref = useRef(callback);
|
|
144
|
+
ref.current = callback;
|
|
145
|
+
return useCallback((...args: Parameters<T>) => ref.current(...args), []);
|
|
146
|
+
}
|