@prosekit/core 0.8.3 → 0.8.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/dist/editor-CfkZ4TNU.d.ts +748 -0
- package/dist/editor-CfkZ4TNU.d.ts.map +1 -0
- package/dist/{editor-DlGlYOp-.js → editor-CizSwUN8.js} +76 -168
- package/dist/editor-CizSwUN8.js.map +1 -0
- package/dist/prosekit-core-test.d.ts +20 -19
- package/dist/prosekit-core-test.d.ts.map +1 -0
- package/dist/prosekit-core-test.js +4 -5
- package/dist/prosekit-core-test.js.map +1 -0
- package/dist/prosekit-core.d.ts +766 -743
- package/dist/prosekit-core.d.ts.map +1 -0
- package/dist/prosekit-core.js +26 -43
- package/dist/prosekit-core.js.map +1 -0
- package/package.json +12 -9
- package/src/commands/add-mark.ts +53 -0
- package/src/commands/expand-mark.ts +96 -0
- package/src/commands/insert-default-block.spec.ts +102 -0
- package/src/commands/insert-default-block.ts +49 -0
- package/src/commands/insert-node.ts +71 -0
- package/src/commands/insert-text.ts +24 -0
- package/src/commands/remove-mark.ts +54 -0
- package/src/commands/remove-node.ts +43 -0
- package/src/commands/select-all.ts +16 -0
- package/src/commands/set-block-type.ts +64 -0
- package/src/commands/set-node-attrs.ts +68 -0
- package/src/commands/toggle-mark.ts +65 -0
- package/src/commands/toggle-node.ts +47 -0
- package/src/commands/toggle-wrap.spec.ts +35 -0
- package/src/commands/toggle-wrap.ts +42 -0
- package/src/commands/unset-block-type.spec.ts +49 -0
- package/src/commands/unset-block-type.ts +84 -0
- package/src/commands/unset-mark.spec.ts +35 -0
- package/src/commands/unset-mark.ts +38 -0
- package/src/commands/wrap.ts +50 -0
- package/src/editor/action.spec.ts +143 -0
- package/src/editor/action.ts +248 -0
- package/src/editor/editor.spec.ts +186 -0
- package/src/editor/editor.ts +563 -0
- package/src/editor/union.spec.ts +108 -0
- package/src/editor/union.ts +47 -0
- package/src/editor/with-priority.ts +25 -0
- package/src/error.ts +28 -0
- package/src/extensions/clipboard-serializer.ts +107 -0
- package/src/extensions/command.ts +121 -0
- package/src/extensions/default-state.spec.ts +60 -0
- package/src/extensions/default-state.ts +76 -0
- package/src/extensions/doc.ts +31 -0
- package/src/extensions/events/doc-change.ts +34 -0
- package/src/extensions/events/dom-event.spec.ts +70 -0
- package/src/extensions/events/dom-event.ts +117 -0
- package/src/extensions/events/editor-event.ts +293 -0
- package/src/extensions/events/focus.spec.ts +50 -0
- package/src/extensions/events/focus.ts +28 -0
- package/src/extensions/events/plugin-view.ts +132 -0
- package/src/extensions/history.ts +81 -0
- package/src/extensions/keymap-base.ts +60 -0
- package/src/extensions/keymap.spec.ts +89 -0
- package/src/extensions/keymap.ts +96 -0
- package/src/extensions/mark-spec.spec.ts +177 -0
- package/src/extensions/mark-spec.ts +181 -0
- package/src/extensions/mark-view-effect.ts +85 -0
- package/src/extensions/mark-view.ts +43 -0
- package/src/extensions/node-spec.spec.ts +224 -0
- package/src/extensions/node-spec.ts +199 -0
- package/src/extensions/node-view-effect.ts +85 -0
- package/src/extensions/node-view.ts +43 -0
- package/src/extensions/paragraph.ts +61 -0
- package/src/extensions/plugin.ts +91 -0
- package/src/extensions/text.ts +34 -0
- package/src/facets/base-extension.ts +54 -0
- package/src/facets/command.ts +21 -0
- package/src/facets/facet-extension.spec.ts +173 -0
- package/src/facets/facet-extension.ts +53 -0
- package/src/facets/facet-node.spec.ts +265 -0
- package/src/facets/facet-node.ts +185 -0
- package/src/facets/facet-types.ts +9 -0
- package/src/facets/facet.spec.ts +76 -0
- package/src/facets/facet.ts +84 -0
- package/src/facets/root.ts +44 -0
- package/src/facets/schema-spec.ts +30 -0
- package/src/facets/schema.ts +26 -0
- package/src/facets/state.ts +57 -0
- package/src/facets/union-extension.ts +41 -0
- package/src/index.ts +302 -0
- package/src/test/index.ts +4 -0
- package/src/test/test-builder.ts +68 -0
- package/src/test/test-editor.spec.ts +104 -0
- package/src/test/test-editor.ts +113 -0
- package/src/testing/index.ts +283 -0
- package/src/testing/keyboard.ts +5 -0
- package/src/types/any-function.ts +4 -0
- package/src/types/assert-type-equal.ts +8 -0
- package/src/types/attrs.ts +32 -0
- package/src/types/base-node-view-options.ts +33 -0
- package/src/types/dom-node.ts +1 -0
- package/src/types/extension-command.ts +52 -0
- package/src/types/extension-mark.ts +15 -0
- package/src/types/extension-node.ts +15 -0
- package/src/types/extension.spec.ts +56 -0
- package/src/types/extension.ts +168 -0
- package/src/types/model.ts +54 -0
- package/src/types/object-entries.ts +13 -0
- package/src/types/pick-string-literal.spec.ts +10 -0
- package/src/types/pick-string-literal.ts +6 -0
- package/src/types/pick-sub-type.spec.ts +20 -0
- package/src/types/pick-sub-type.ts +6 -0
- package/src/types/priority.ts +12 -0
- package/src/types/setter.ts +4 -0
- package/src/types/simplify-deeper.spec.ts +40 -0
- package/src/types/simplify-deeper.ts +6 -0
- package/src/types/simplify-union.spec.ts +21 -0
- package/src/types/simplify-union.ts +11 -0
- package/src/utils/array-grouping.spec.ts +29 -0
- package/src/utils/array-grouping.ts +25 -0
- package/src/utils/array.ts +21 -0
- package/src/utils/assert.ts +13 -0
- package/src/utils/attrs-match.ts +20 -0
- package/src/utils/can-use-regex-lookbehind.ts +12 -0
- package/src/utils/clsx.spec.ts +14 -0
- package/src/utils/clsx.ts +12 -0
- package/src/utils/collect-children.ts +21 -0
- package/src/utils/collect-nodes.ts +37 -0
- package/src/utils/combine-event-handlers.spec.ts +27 -0
- package/src/utils/combine-event-handlers.ts +27 -0
- package/src/utils/contains-inline-node.ts +17 -0
- package/src/utils/deep-equals.spec.ts +26 -0
- package/src/utils/deep-equals.ts +29 -0
- package/src/utils/default-block-at.ts +15 -0
- package/src/utils/editor-content.spec.ts +47 -0
- package/src/utils/editor-content.ts +77 -0
- package/src/utils/env.ts +6 -0
- package/src/utils/find-parent-node-of-type.ts +29 -0
- package/src/utils/find-parent-node.spec.ts +68 -0
- package/src/utils/find-parent-node.ts +55 -0
- package/src/utils/get-custom-selection.ts +19 -0
- package/src/utils/get-dom-api.ts +56 -0
- package/src/utils/get-id.spec.ts +14 -0
- package/src/utils/get-id.ts +13 -0
- package/src/utils/get-mark-type.ts +20 -0
- package/src/utils/get-node-type.ts +20 -0
- package/src/utils/get-node-types.ts +19 -0
- package/src/utils/includes-mark.ts +18 -0
- package/src/utils/is-at-block-start.ts +26 -0
- package/src/utils/is-in-code-block.ts +18 -0
- package/src/utils/is-mark-absent.spec.ts +53 -0
- package/src/utils/is-mark-absent.ts +42 -0
- package/src/utils/is-mark-active.ts +27 -0
- package/src/utils/is-node-active.ts +25 -0
- package/src/utils/is-subset.spec.ts +12 -0
- package/src/utils/is-subset.ts +11 -0
- package/src/utils/maybe-run.spec.ts +39 -0
- package/src/utils/maybe-run.ts +11 -0
- package/src/utils/merge-objects.spec.ts +30 -0
- package/src/utils/merge-objects.ts +11 -0
- package/src/utils/merge-specs.ts +35 -0
- package/src/utils/object-equal.spec.ts +26 -0
- package/src/utils/object-equal.ts +28 -0
- package/src/utils/output-spec.test.ts +95 -0
- package/src/utils/output-spec.ts +130 -0
- package/src/utils/parse.spec.ts +46 -0
- package/src/utils/parse.ts +321 -0
- package/src/utils/remove-undefined-values.spec.ts +15 -0
- package/src/utils/remove-undefined-values.ts +9 -0
- package/src/utils/set-selection-around.ts +11 -0
- package/src/utils/type-assertion.ts +91 -0
- package/src/utils/unicode.spec.ts +10 -0
- package/src/utils/unicode.ts +4 -0
- package/src/utils/with-skip-code-block.ts +15 -0
- package/dist/editor-OUH5V8BA.d.ts +0 -754
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { Editor, EditorInstance, assert, createMarkActions, createNodeActions, isProseMirrorNode, setupEditorExtension } from "./editor-
|
|
1
|
+
import { Editor, EditorInstance, assert, createMarkActions, createNodeActions, isProseMirrorNode, setupEditorExtension } from "./editor-CizSwUN8.js";
|
|
2
2
|
import { NodeSelection, TextSelection } from "@prosekit/pm/state";
|
|
3
3
|
|
|
4
4
|
//#region src/test/test-builder.ts
|
|
5
5
|
const createNodeForTest = (type, attrs, children) => {
|
|
6
6
|
const tags = {};
|
|
7
|
-
|
|
8
|
-
let pos = isTopNode ? 0 : 1;
|
|
7
|
+
let pos = type === type.schema.topNodeType ? 0 : 1;
|
|
9
8
|
const normalizedChildren = [];
|
|
10
9
|
for (const child of children) if (child.tags) {
|
|
11
10
|
for (const [key, value] of Object.entries(child.tags)) tags[key] = pos + value;
|
|
@@ -47,7 +46,6 @@ const applyMarkForTest = (mark, children) => {
|
|
|
47
46
|
//#region src/test/test-editor.ts
|
|
48
47
|
function maybeResolve(doc, pos) {
|
|
49
48
|
if (pos != null) return doc.resolve(pos);
|
|
50
|
-
return void 0;
|
|
51
49
|
}
|
|
52
50
|
function getSelection(doc) {
|
|
53
51
|
const tags = doc.tags;
|
|
@@ -105,4 +103,5 @@ function createTestEditor(options) {
|
|
|
105
103
|
}
|
|
106
104
|
|
|
107
105
|
//#endregion
|
|
108
|
-
export { createTestEditor };
|
|
106
|
+
export { createTestEditor };
|
|
107
|
+
//# sourceMappingURL=prosekit-core-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prosekit-core-test.js","names":["createNodeForTest: CreateNodeFunction","tags: Tags","normalizedChildren: TaggedProseMirrorNode[]","node: TaggedProseMirrorNode | null","applyMarkForTest: ApplyMarkFunction","newNode: TaggedProseMirrorNode"],"sources":["../src/test/test-builder.ts","../src/test/test-editor.ts"],"sourcesContent":["import type { ProseMirrorNode } from '@prosekit/pm/model'\n\nimport type {\n ApplyMarkFunction,\n CreateNodeFunction,\n} from '../editor/action'\nimport { assert } from '../utils/assert'\n\ntype Tags = Record<string, number>\nexport type TaggedProseMirrorNode = ProseMirrorNode & { tags?: Tags }\n\nexport const createNodeForTest: CreateNodeFunction = (\n type,\n attrs,\n children: TaggedProseMirrorNode[],\n): TaggedProseMirrorNode => {\n const tags: Tags = {}\n const isTopNode = type === type.schema.topNodeType\n let pos = isTopNode ? 0 : 1\n const normalizedChildren: TaggedProseMirrorNode[] = []\n\n for (const child of children) {\n if (child.tags) {\n for (const [key, value] of Object.entries(child.tags)) {\n tags[key] = pos + value\n }\n normalizedChildren.push(child)\n pos += child.nodeSize\n } else if (child.isText) {\n const text = child.text!\n const re = /<(a|b)>/g\n let i = 0\n let out = ''\n for (const match of text.matchAll(re)) {\n out += text.slice(i, match.index)\n tags[match[1]] = pos + out.length\n i = match.index + match[0].length\n }\n out += text.slice(i)\n if (out) {\n normalizedChildren.push(child.type.schema.text(out).mark(child.marks))\n pos += out.length\n }\n } else {\n normalizedChildren.push(child)\n pos += child.nodeSize\n }\n }\n\n const node: TaggedProseMirrorNode | null = type.createAndFill(\n attrs,\n normalizedChildren,\n )\n assert(node, `Failed to create node ${type.name}`)\n node.tags = tags\n return node\n}\n\nexport const applyMarkForTest: ApplyMarkFunction = (\n mark,\n children: TaggedProseMirrorNode[],\n): TaggedProseMirrorNode[] => {\n return children.map((node) => {\n const newNode: TaggedProseMirrorNode = node.mark(mark.addToSet(node.marks))\n newNode.tags = node.tags\n return newNode\n })\n}\n","import type { ProseMirrorNode } from '@prosekit/pm/model'\nimport {\n NodeSelection,\n TextSelection,\n type Selection,\n} from '@prosekit/pm/state'\n\nimport {\n createMarkActions,\n createNodeActions,\n} from '../editor/action'\nimport {\n Editor,\n EditorInstance,\n setupEditorExtension,\n type EditorOptions,\n} from '../editor/editor'\nimport type { Extension } from '../types/extension'\nimport type {\n NodeJSON,\n SelectionJSON,\n} from '../types/model'\nimport { isProseMirrorNode } from '../utils/type-assertion'\n\nimport {\n applyMarkForTest,\n createNodeForTest,\n type TaggedProseMirrorNode,\n} from './test-builder'\n\nfunction maybeResolve(doc: ProseMirrorNode, pos?: number) {\n if (pos != null) {\n return doc.resolve(pos)\n }\n return undefined\n}\n\nfunction getSelection(doc: TaggedProseMirrorNode): Selection {\n const tags = doc.tags\n const $a = maybeResolve(doc, tags?.a)\n const $b = maybeResolve(doc, tags?.b)\n\n if ($a) {\n if ($a.parent.inlineContent) {\n return new TextSelection($a, $b)\n } else {\n return new NodeSelection($a)\n }\n }\n return TextSelection.atStart(doc)\n}\n\nclass TestEditorInstance extends EditorInstance {\n constructor(extension: Extension) {\n super(extension)\n this.nodes = createNodeActions(this.schema, this.getState, createNodeForTest)\n this.marks = createMarkActions(this.schema, this.getState, applyMarkForTest)\n }\n\n override setContent(\n content: ProseMirrorNode | NodeJSON | string | HTMLElement,\n selection?: SelectionJSON | Selection | 'start' | 'end',\n ): void {\n return super.setContent(\n content,\n isProseMirrorNode(content) && !selection\n ? getSelection(content)\n : selection,\n )\n }\n}\n\n/**\n * An editor for testing purposes.\n * @public\n */\nexport class TestEditor<E extends Extension = Extension> extends Editor<E> {\n constructor(instance: EditorInstance) {\n super(instance)\n }\n\n /**\n * Set the editor state to the given document. You can use special tokens\n * `<a>` and `<b>` to set the anchor and head positions of the selection.\n *\n * @example\n *\n * ```ts\n * const editor = createTestEditor({ extension })\n * const n = editor.nodes\n * const doc = n.doc(n.paragraph('<a>Hello<b> world!'))\n * editor.set(doc) // \"Hello\" is selected.\n * ```\n */\n set(doc: ProseMirrorNode): void {\n return this.setContent(doc)\n }\n\n dispatchEvent(event: Event): void {\n this.view.dispatchEvent(event)\n }\n}\n\n/**\n * @public\n */\nexport function createTestEditor<E extends Extension>(\n options: EditorOptions<E>,\n): TestEditor<E> {\n const extension = setupEditorExtension(options)\n const instance = new TestEditorInstance(extension)\n return new TestEditor(instance)\n}\n"],"mappings":";;;;AAWA,MAAaA,qBACX,MACA,OACA,aAC0B;CAC1B,MAAMC,OAAa,EAAE;CAErB,IAAI,MADc,SAAS,KAAK,OAAO,cACjB,IAAI;CAC1B,MAAMC,qBAA8C,EAAE;AAEtD,MAAK,MAAM,SAAS,SAClB,KAAI,MAAM,MAAM;AACd,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,KAAK,CACnD,MAAK,OAAO,MAAM;AAEpB,qBAAmB,KAAK,MAAM;AAC9B,SAAO,MAAM;YACJ,MAAM,QAAQ;EACvB,MAAM,OAAO,MAAM;EACnB,MAAM,KAAK;EACX,IAAI,IAAI;EACR,IAAI,MAAM;AACV,OAAK,MAAM,SAAS,KAAK,SAAS,GAAG,EAAE;AACrC,UAAO,KAAK,MAAM,GAAG,MAAM,MAAM;AACjC,QAAK,MAAM,MAAM,MAAM,IAAI;AAC3B,OAAI,MAAM,QAAQ,MAAM,GAAG;;AAE7B,SAAO,KAAK,MAAM,EAAE;AACpB,MAAI,KAAK;AACP,sBAAmB,KAAK,MAAM,KAAK,OAAO,KAAK,IAAI,CAAC,KAAK,MAAM,MAAM,CAAC;AACtE,UAAO,IAAI;;QAER;AACL,qBAAmB,KAAK,MAAM;AAC9B,SAAO,MAAM;;CAIjB,MAAMC,OAAqC,KAAK,cAC9C,OACA,mBACD;AACD,QAAO,MAAM,yBAAyB,KAAK,OAAO;AAClD,MAAK,OAAO;AACZ,QAAO;;AAGT,MAAaC,oBACX,MACA,aAC4B;AAC5B,QAAO,SAAS,KAAK,SAAS;EAC5B,MAAMC,UAAiC,KAAK,KAAK,KAAK,SAAS,KAAK,MAAM,CAAC;AAC3E,UAAQ,OAAO,KAAK;AACpB,SAAO;GACP;;;;;ACpCJ,SAAS,aAAa,KAAsB,KAAc;AACxD,KAAI,OAAO,KACT,QAAO,IAAI,QAAQ,IAAI;;AAK3B,SAAS,aAAa,KAAuC;CAC3D,MAAM,OAAO,IAAI;CACjB,MAAM,KAAK,aAAa,KAAK,MAAM,EAAE;CACrC,MAAM,KAAK,aAAa,KAAK,MAAM,EAAE;AAErC,KAAI,GACF,KAAI,GAAG,OAAO,cACZ,QAAO,IAAI,cAAc,IAAI,GAAG;KAEhC,QAAO,IAAI,cAAc,GAAG;AAGhC,QAAO,cAAc,QAAQ,IAAI;;AAGnC,IAAM,qBAAN,cAAiC,eAAe;CAC9C,YAAY,WAAsB;AAChC,QAAM,UAAU;AAChB,OAAK,QAAQ,kBAAkB,KAAK,QAAQ,KAAK,UAAU,kBAAkB;AAC7E,OAAK,QAAQ,kBAAkB,KAAK,QAAQ,KAAK,UAAU,iBAAiB;;CAG9E,AAAS,WACP,SACA,WACM;AACN,SAAO,MAAM,WACX,SACA,kBAAkB,QAAQ,IAAI,CAAC,YAC3B,aAAa,QAAQ,GACrB,UACL;;;;;;;AAQL,IAAa,aAAb,cAAiE,OAAU;CACzE,YAAY,UAA0B;AACpC,QAAM,SAAS;;;;;;;;;;;;;;;CAgBjB,IAAI,KAA4B;AAC9B,SAAO,KAAK,WAAW,IAAI;;CAG7B,cAAc,OAAoB;AAChC,OAAK,KAAK,cAAc,MAAM;;;;;;AAOlC,SAAgB,iBACd,SACe;CACf,MAAM,YAAY,qBAAqB,QAAQ;CAC/C,MAAM,WAAW,IAAI,mBAAmB,UAAU;AAClD,QAAO,IAAI,WAAW,SAAS"}
|