@payload-onpage/lexical 0.0.0-stage → 0.2.0

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.
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Lexical nodes for editing Payload rich text in place.
3
+ *
4
+ * - PayloadLinkNode — Payload stores links as
5
+ * { type: "link", id, fields: { url, newTab, linkType, doc? }, children, … }
6
+ * (not @lexical/link's { url, rel, target }). This node reads and writes that
7
+ * shape, keeping `id` and every key in `fields`.
8
+ * - OpaqueNode — any node type we don't edit (upload, block, relationship,
9
+ * horizontalrule…) is carried through untouched and shown as a locked chip,
10
+ * so editing a paragraph never loses an image or embed.
11
+ */
12
+ import React from 'react';
13
+ import { DecoratorNode, ElementNode, type LexicalNode, type NodeKey, type SerializedElementNode, type SerializedLexicalNode, type Spread } from 'lexical';
14
+ export interface PayloadLinkFields {
15
+ url?: string;
16
+ newTab?: boolean;
17
+ linkType?: string;
18
+ [key: string]: unknown;
19
+ }
20
+ export type SerializedPayloadLinkNode = Spread<{
21
+ type: 'link';
22
+ version: number;
23
+ fields: PayloadLinkFields;
24
+ id?: string;
25
+ }, SerializedElementNode>;
26
+ export declare class PayloadLinkNode extends ElementNode {
27
+ __fields: PayloadLinkFields;
28
+ __linkId?: string;
29
+ static getType(): string;
30
+ static clone(node: PayloadLinkNode): PayloadLinkNode;
31
+ constructor(fields?: PayloadLinkFields, id?: string, key?: NodeKey);
32
+ createDOM(): HTMLElement;
33
+ updateDOM(prev: PayloadLinkNode, dom: HTMLElement): boolean;
34
+ static importJSON(json: SerializedPayloadLinkNode): PayloadLinkNode;
35
+ exportJSON(): SerializedPayloadLinkNode;
36
+ getFields(): PayloadLinkFields;
37
+ setFields(fields: PayloadLinkFields): this;
38
+ isInline(): boolean;
39
+ canBeEmpty(): boolean;
40
+ canInsertTextBefore(): boolean;
41
+ canInsertTextAfter(): boolean;
42
+ }
43
+ export declare function $createPayloadLinkNode(fields: PayloadLinkFields, id?: string): PayloadLinkNode;
44
+ export declare function $isPayloadLinkNode(node: LexicalNode | null | undefined): node is PayloadLinkNode;
45
+ import { OPAQUE_TYPE } from './constants.ts';
46
+ export { OPAQUE_TYPE };
47
+ export type SerializedOpaqueNode = Spread<{
48
+ type: typeof OPAQUE_TYPE;
49
+ version: 1;
50
+ data: OpaqueData;
51
+ }, SerializedLexicalNode>;
52
+ /** The Payload node an OpaqueNode carries, untouched. */
53
+ export interface OpaqueData {
54
+ type?: string;
55
+ value?: {
56
+ filename?: unknown;
57
+ } | string | number;
58
+ fields?: {
59
+ blockType?: unknown;
60
+ };
61
+ [key: string]: unknown;
62
+ }
63
+ export declare function describeNode(data: OpaqueData): string;
64
+ export declare class OpaqueNode extends DecoratorNode<React.ReactNode> {
65
+ __data: OpaqueData;
66
+ static getType(): string;
67
+ static clone(node: OpaqueNode): OpaqueNode;
68
+ constructor(data: OpaqueData, key?: NodeKey);
69
+ createDOM(): HTMLElement;
70
+ updateDOM(): boolean;
71
+ isInline(): boolean;
72
+ static importJSON(json: SerializedOpaqueNode): OpaqueNode;
73
+ exportJSON(): SerializedOpaqueNode;
74
+ decorate(): React.ReactNode;
75
+ }
76
+ //# sourceMappingURL=nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../src/nodes.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,MAAM,EACZ,MAAM,SAAS,CAAA;AAEhB,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAC5C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EACzE,qBAAqB,CACtB,CAAA;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;WAED,OAAO,IAAI,MAAM;WAIjB,KAAK,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe;gBAIjD,MAAM,GAAE,iBAAsB,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO;IAM7D,SAAS,IAAI,WAAW;IAWxB,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO;WAcpD,UAAU,CAAC,IAAI,EAAE,yBAAyB,GAAG,eAAe;IAInE,UAAU,IAAI,yBAAyB;IAUhD,SAAS,IAAI,iBAAiB;IAI9B,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAMjC,QAAQ,IAAI,OAAO;IAInB,UAAU,IAAI,OAAO;IAIrB,mBAAmB,IAAI,OAAO;IAI9B,kBAAkB,IAAI,OAAO;CAGvC;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,eAAe,CAE9F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,eAAe,CAEhG;AAID,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,EAAE,WAAW,EAAE,CAAA;AAGtB,MAAM,MAAM,oBAAoB,GAAG,MAAM,CACvC;IAAE,IAAI,EAAE,OAAO,WAAW,CAAC;IAAC,OAAO,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,EAC1D,qBAAqB,CACtB,CAAA;AAED,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,GAAG,MAAM,CAAA;IAChD,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAmBrD;AAED,qBAAa,UAAW,SAAQ,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC;IAC5D,MAAM,EAAE,UAAU,CAAA;WAEF,OAAO,IAAI,MAAM;WAIjB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;gBAIvC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,OAAO;IAKlC,SAAS,IAAI,WAAW;IAIxB,SAAS,IAAI,OAAO;IAIpB,QAAQ,IAAI,OAAO;WAIZ,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,UAAU;IAIzD,UAAU,IAAI,oBAAoB;IAIlC,QAAQ,IAAI,KAAK,CAAC,SAAS;CAOrC"}
package/dist/nodes.js ADDED
@@ -0,0 +1,136 @@
1
+ 'use client';
2
+ import { jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { DecoratorNode, ElementNode, } from 'lexical';
4
+ export class PayloadLinkNode extends ElementNode {
5
+ __fields;
6
+ __linkId;
7
+ static getType() {
8
+ return 'link';
9
+ }
10
+ static clone(node) {
11
+ return new PayloadLinkNode({ ...node.__fields }, node.__linkId, node.__key);
12
+ }
13
+ constructor(fields = {}, id, key) {
14
+ super(key);
15
+ this.__fields = fields;
16
+ this.__linkId = id;
17
+ }
18
+ createDOM() {
19
+ const a = document.createElement('a');
20
+ a.setAttribute('href', this.__fields.url || '#');
21
+ if (this.__fields.newTab) {
22
+ a.setAttribute('target', '_blank');
23
+ a.setAttribute('rel', 'noopener noreferrer');
24
+ }
25
+ a.addEventListener('click', (e) => e.preventDefault());
26
+ return a;
27
+ }
28
+ updateDOM(prev, dom) {
29
+ if (prev.__fields.url !== this.__fields.url)
30
+ dom.setAttribute('href', this.__fields.url || '#');
31
+ if (prev.__fields.newTab !== this.__fields.newTab) {
32
+ if (this.__fields.newTab) {
33
+ dom.setAttribute('target', '_blank');
34
+ dom.setAttribute('rel', 'noopener noreferrer');
35
+ }
36
+ else {
37
+ dom.removeAttribute('target');
38
+ dom.removeAttribute('rel');
39
+ }
40
+ }
41
+ return false;
42
+ }
43
+ static importJSON(json) {
44
+ return $createPayloadLinkNode(json.fields ?? {}, json.id).updateFromJSON(json);
45
+ }
46
+ exportJSON() {
47
+ return {
48
+ ...super.exportJSON(),
49
+ type: 'link',
50
+ version: 3,
51
+ fields: { ...this.getLatest().__fields },
52
+ ...(this.getLatest().__linkId ? { id: this.getLatest().__linkId } : {}),
53
+ };
54
+ }
55
+ getFields() {
56
+ return this.getLatest().__fields;
57
+ }
58
+ setFields(fields) {
59
+ const writable = this.getWritable();
60
+ writable.__fields = fields;
61
+ return writable;
62
+ }
63
+ isInline() {
64
+ return true;
65
+ }
66
+ canBeEmpty() {
67
+ return false;
68
+ }
69
+ canInsertTextBefore() {
70
+ return false;
71
+ }
72
+ canInsertTextAfter() {
73
+ return false;
74
+ }
75
+ }
76
+ export function $createPayloadLinkNode(fields, id) {
77
+ return new PayloadLinkNode(fields, id);
78
+ }
79
+ export function $isPayloadLinkNode(node) {
80
+ return node instanceof PayloadLinkNode;
81
+ }
82
+ // ── Opaque ───────────────────────────────────────────────────────────────
83
+ import { OPAQUE_TYPE } from "./constants.js";
84
+ export { OPAQUE_TYPE };
85
+ const INLINE_TYPES = new Set(['inlineBlock', 'autolink']);
86
+ export function describeNode(data) {
87
+ const filename = typeof data.value === 'object' && typeof data.value?.filename === 'string'
88
+ ? data.value.filename
89
+ : '';
90
+ const blockType = typeof data.fields?.blockType === 'string' ? data.fields.blockType : 'Block';
91
+ switch (data.type) {
92
+ case 'upload':
93
+ return `Image${filename ? ` · ${filename}` : ''} — edit in admin`;
94
+ case 'horizontalrule':
95
+ return 'Divider';
96
+ case 'block':
97
+ case 'inlineBlock':
98
+ return `${blockType} — edit in admin`;
99
+ case 'relationship':
100
+ return 'Linked document — edit in admin';
101
+ default:
102
+ return `${data.type ?? 'Content'} — edit in admin`;
103
+ }
104
+ }
105
+ export class OpaqueNode extends DecoratorNode {
106
+ __data;
107
+ static getType() {
108
+ return OPAQUE_TYPE;
109
+ }
110
+ static clone(node) {
111
+ return new OpaqueNode(node.__data, node.__key);
112
+ }
113
+ constructor(data, key) {
114
+ super(key);
115
+ this.__data = data;
116
+ }
117
+ createDOM() {
118
+ return document.createElement(this.isInline() ? 'span' : 'div');
119
+ }
120
+ updateDOM() {
121
+ return false;
122
+ }
123
+ isInline() {
124
+ return INLINE_TYPES.has(this.__data.type ?? '');
125
+ }
126
+ static importJSON(json) {
127
+ return new OpaqueNode(json.data);
128
+ }
129
+ exportJSON() {
130
+ return { type: OPAQUE_TYPE, version: 1, data: this.getLatest().__data };
131
+ }
132
+ decorate() {
133
+ return (_jsxs("span", { className: "po-opaque", contentEditable: false, "data-testid": "onpage-opaque", children: ["\u29C9 ", describeNode(this.__data)] }));
134
+ }
135
+ }
136
+ //# sourceMappingURL=nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../src/nodes.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,71 @@
1
1
  {
2
2
  "name": "@payload-onpage/lexical",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.2.0",
4
+ "description": "payload-onpage rich-text field editor: inline Lexical editing compatible with Payload's Lexical JSON.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "sideEffects": false,
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/jellologic/payload-onpage.git",
11
+ "directory": "packages/lexical"
12
+ },
13
+ "homepage": "https://github.com/jellologic/payload-onpage#readme",
14
+ "bugs": "https://github.com/jellologic/payload-onpage/issues",
15
+ "keywords": [
16
+ "payload",
17
+ "payloadcms",
18
+ "payload-plugin",
19
+ "nextjs",
20
+ "visual-editing",
21
+ "live-preview",
22
+ "inline-editing",
23
+ "cms"
24
+ ],
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/index.d.ts",
28
+ "default": "./dist/index.js"
29
+ },
30
+ "./editor": {
31
+ "types": "./dist/editor.d.ts",
32
+ "default": "./dist/editor.js"
33
+ }
34
+ },
35
+ "main": "./dist/index.js",
36
+ "types": "./dist/index.d.ts",
37
+ "files": [
38
+ "dist",
39
+ "!dist/.tsbuildinfo",
40
+ "src",
41
+ "!src/**/__tests__",
42
+ "README.md",
43
+ "LICENSE"
44
+ ],
45
+ "scripts": {
46
+ "build": "tsc -b",
47
+ "typecheck": "tsc -b",
48
+ "test": "bun test src",
49
+ "clean": "rm -rf dist tsconfig.tsbuildinfo"
50
+ },
51
+ "publishConfig": {
52
+ "access": "public",
53
+ "provenance": true
54
+ },
55
+ "dependencies": {
56
+ "@payload-onpage/core": "0.1.0",
57
+ "@payload-onpage/react": "0.1.0"
58
+ },
59
+ "peerDependencies": {
60
+ "@lexical/list": "~0.50.0",
61
+ "@lexical/react": "~0.50.0",
62
+ "@lexical/rich-text": "~0.50.0",
63
+ "@lexical/selection": "~0.50.0",
64
+ "@lexical/utils": "~0.50.0",
65
+ "lexical": "~0.50.0",
66
+ "react": "^19.0.0"
67
+ },
68
+ "engines": {
69
+ "node": ">=20.9.0"
70
+ }
71
+ }