@octanejs/lexical 0.1.2 → 0.1.4
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/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @octanejs/lexical
|
|
2
2
|
|
|
3
|
-
[Lexical](https://lexical.dev) for the [octane](https://github.com/octanejs/octane)
|
|
3
|
+
[Lexical](https://lexical.dev) for the [octane](https://github.com/octanejs/octane) UI framework.
|
|
4
4
|
|
|
5
5
|
Lexical is an extensible rich-text editor framework. This package reuses Lexical's
|
|
6
6
|
framework-agnostic core (`lexical`, `@lexical/rich-text`, `@lexical/history`,
|
|
@@ -65,3 +65,9 @@ directly. Only `@lexical/react`'s components/hooks are reimplemented — transla
|
|
|
65
65
|
React hooks to octane's (1:1 in nearly all cases), `forwardRef` to octane's
|
|
66
66
|
ref-as-prop, `@floating-ui/react` to `@floating-ui/dom`, and the class-based
|
|
67
67
|
`LexicalErrorBoundary` to octane's `<ErrorBoundary>`.
|
|
68
|
+
|
|
69
|
+
## Status
|
|
70
|
+
|
|
71
|
+
Current scope, known divergences, and verification status are tracked in the
|
|
72
|
+
generated [bindings status table](../../docs/bindings-status.md), sourced from
|
|
73
|
+
this package's [`status.json`](./status.json).
|
package/package.json
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@octanejs/lexical",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"octane": {
|
|
7
|
+
"hookSlots": {
|
|
8
|
+
"manual": [
|
|
9
|
+
"src"
|
|
10
|
+
]
|
|
11
|
+
}
|
|
12
|
+
},
|
|
6
13
|
"description": "Lexical bindings for the octane renderer — reuses the framework-agnostic @lexical/* core and reimplements the @lexical/react layer on octane's hooks.",
|
|
7
14
|
"author": {
|
|
8
15
|
"name": "Dominic Gannaway",
|
|
@@ -87,12 +94,12 @@
|
|
|
87
94
|
"@lexical/yjs": "0.46.0",
|
|
88
95
|
"lexical": "0.46.0",
|
|
89
96
|
"yjs": "^13.6.0",
|
|
90
|
-
"@octanejs/floating-ui": "0.1.
|
|
91
|
-
"octane": "0.1.
|
|
97
|
+
"@octanejs/floating-ui": "0.1.4",
|
|
98
|
+
"octane": "0.1.5"
|
|
92
99
|
},
|
|
93
100
|
"devDependencies": {
|
|
94
101
|
"@lexical/react": "0.46.0",
|
|
95
|
-
"@tsrx/react": "^0.2.
|
|
102
|
+
"@tsrx/react": "^0.2.37",
|
|
96
103
|
"esbuild": "^0.28.1",
|
|
97
104
|
"react": "^19.2.0",
|
|
98
105
|
"react-dom": "^19.2.0",
|
|
@@ -12,12 +12,12 @@ export function AutoLinkPlugin(props) {
|
|
|
12
12
|
const onChange = props.onChange;
|
|
13
13
|
const excludeParents = props.excludeParents;
|
|
14
14
|
|
|
15
|
-
//
|
|
15
|
+
// Explicit every-render check (matches @lexical/react).
|
|
16
16
|
useEffect(() => {
|
|
17
17
|
if (!editor.hasNodes([AutoLinkNode])) {
|
|
18
18
|
invariant(false, 'LexicalAutoLinkPlugin: AutoLinkNode not registered on editor');
|
|
19
19
|
}
|
|
20
|
-
});
|
|
20
|
+
}, null);
|
|
21
21
|
|
|
22
22
|
useEffect(
|
|
23
23
|
() => registerAutoLink(editor, {
|
|
@@ -10,12 +10,12 @@ export function LinkPlugin(props) {
|
|
|
10
10
|
const validateUrl = props.validateUrl;
|
|
11
11
|
const attributes = props.attributes;
|
|
12
12
|
|
|
13
|
-
//
|
|
13
|
+
// Explicit every-render check (matches @lexical/react).
|
|
14
14
|
useEffect(() => {
|
|
15
15
|
if (!editor.hasNodes([LinkNode])) {
|
|
16
16
|
throw new Error('LinkPlugin: LinkNode not registered on editor');
|
|
17
17
|
}
|
|
18
|
-
});
|
|
18
|
+
}, null);
|
|
19
19
|
|
|
20
20
|
useEffect(() => registerLink(editor, namedSignals({ attributes, validateUrl })), [
|
|
21
21
|
editor,
|
|
@@ -6,6 +6,8 @@ import { useMenuAnchorRef } from './shared/useMenuAnchorRef';
|
|
|
6
6
|
import { $getNodeByKey, COMMAND_PRIORITY_LOW } from 'lexical';
|
|
7
7
|
import { startTransition, useCallback, useEffect, useState } from 'octane';
|
|
8
8
|
|
|
9
|
+
export { MenuOption } from './shared/menuShared';
|
|
10
|
+
|
|
9
11
|
export function LexicalNodeMenuPlugin(props) {
|
|
10
12
|
const options = props.options;
|
|
11
13
|
const nodeKey = props.nodeKey;
|
|
@@ -16,6 +16,8 @@ import { startTransition, useCallback, useEffect, useState } from 'octane';
|
|
|
16
16
|
export { useBasicTypeaheadTriggerMatch, PUNCTUATION } from './typeaheadShared';
|
|
17
17
|
export { MenuOption, SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND } from './shared/menuShared';
|
|
18
18
|
export { useDynamicPositioning } from './shared/useDynamicPositioning';
|
|
19
|
+
// Upstream re-exports @lexical/utils' getScrollParent from this module.
|
|
20
|
+
export { getScrollParent } from '@lexical/utils';
|
|
19
21
|
|
|
20
22
|
export function LexicalTypeaheadMenuPlugin(props) {
|
|
21
23
|
const options = props.options;
|
package/src/shared/internal.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Slot mechanics shared by the binding's plain-`.ts` hooks (copied from
|
|
2
|
-
// @octanejs/router / @octanejs/query). The octane compiler injects a per-call-site
|
|
2
|
+
// @octanejs/tanstack-router / @octanejs/tanstack-query). The octane compiler injects a per-call-site
|
|
3
3
|
// Symbol slot into every hook call in `.tsrx`/`.tsx`, but these binding files are
|
|
4
4
|
// NOT compiled — so a hook here receives the caller's slot as its trailing argument
|
|
5
5
|
// and derives a distinct sub-slot for each base hook it composes.
|