@remirror/react-ssr
Advanced tools
Comparing version 0.0.0-pr2128.4 to 0.0.0-pr2166.1
@@ -1,138 +0,1 @@ | ||
import { ReactNode } from 'react'; | ||
import { AnyExtension, DOMOutputSpec, RemirrorManager, Fragment, ProsemirrorNode, Mark, NodeExtensionSpec, MarkExtensionSpec, EditorStateProps, Shape, EditorState, Transaction } from '@remirror/core'; | ||
import { DirectEditorProps, EditorView } from '@remirror/pm/view'; | ||
type NodeToDOM = NodeExtensionSpec['toDOM']; | ||
type MarkToDOM = MarkExtensionSpec['toDOM']; | ||
/** | ||
* Serialize the extension provided schema into a JSX element that can be displayed node and non-dom environments. | ||
*/ | ||
declare class ReactSerializer<Extension extends AnyExtension> { | ||
#private; | ||
/** | ||
* Receives the return value from toDOM defined in the node schema and transforms it | ||
* into JSX | ||
* | ||
* @param structure - The DOMOutput spec for the current node | ||
* @param wraps - passed through any elements that this component should be parent of | ||
*/ | ||
static renderSpec(structure: DOMOutputSpec, wraps?: ReactNode): ReactNode; | ||
/** | ||
* Create a serializer from the extension manager | ||
* | ||
* @param manager | ||
*/ | ||
static fromManager<Extension extends AnyExtension>(manager: RemirrorManager<Extension>): ReactSerializer<Extension>; | ||
/** | ||
* Pluck nodes from the extension manager | ||
* | ||
* @param manager | ||
*/ | ||
private static nodesFromManager; | ||
/** | ||
* Pluck marks from the extension manager | ||
* | ||
* @param manager | ||
*/ | ||
private static marksFromManager; | ||
nodes: Record<string, NodeToDOM>; | ||
marks: Record<string, MarkToDOM>; | ||
constructor(nodes: Record<string, NodeToDOM>, marks: Record<string, MarkToDOM>, manager: RemirrorManager<Extension>); | ||
/** | ||
* The main entry method on this class for traversing through a schema tree and creating JSx. | ||
* | ||
* ```ts | ||
* reactSerializer.serializeFragment(fragment) | ||
* ``` | ||
* | ||
* @param fragment | ||
*/ | ||
serializeFragment(fragment: Fragment): JSX.Element; | ||
/** | ||
* Transform the passed in node into a JSX Element | ||
* | ||
* @param node | ||
*/ | ||
serializeNode(node: ProsemirrorNode): ReactNode; | ||
/** | ||
* Transform the provided mark into a JSX Element that wraps the current node | ||
* | ||
* @param mark | ||
* @param inline | ||
* @param wrappedElement | ||
*/ | ||
serializeMark(mark: Mark, inline: boolean, wrappedElement: ReactNode): ReactNode; | ||
} | ||
interface RemirrorSSRProps<Extension extends AnyExtension> extends EditorStateProps { | ||
/** | ||
* The attributes to pass into the root div element. | ||
*/ | ||
attributes: Shape; | ||
/** | ||
* Whether or not the editor is in an editable state | ||
*/ | ||
editable: boolean; | ||
/** | ||
* The manager. | ||
*/ | ||
manager: RemirrorManager<Extension>; | ||
} | ||
/** | ||
* Remirror SSR component used for rendering in non dom environments. | ||
*/ | ||
declare const RemirrorSSR: <Extension extends AnyExtension>(props: RemirrorSSRProps<Extension>) => JSX.Element; | ||
/** | ||
* A mock editor view used only when prosemirror is running on the server | ||
*/ | ||
declare class EditorViewSSR { | ||
state: EditorState; | ||
dom: Element; | ||
dragging: null; | ||
root: Document | DocumentFragment; | ||
constructor(_place: Node | ((p: Node) => void) | { | ||
mount: Node; | ||
} | undefined, props: DirectEditorProps); | ||
update(_props: DirectEditorProps): void; | ||
setProps(_props: DirectEditorProps): void; | ||
updateState(_state: EditorState): void; | ||
someProps(_propName: string, f?: (prop: any) => any): any; | ||
hasFocus(): boolean; | ||
focus(): void; | ||
posAtCoords(_coords: { | ||
left: number; | ||
top: number; | ||
}): { | ||
pos: number; | ||
inside: number; | ||
} | null | undefined; | ||
coordsAtPos(_pos: number): { | ||
left: number; | ||
right: number; | ||
top: number; | ||
bottom: number; | ||
}; | ||
domAtPos(_pos: number): { | ||
node: Node; | ||
offset: number; | ||
}; | ||
nodeDOM(_pos: number): Node | null | undefined; | ||
posAtDOM(_node: Node, _offset: number, _bias?: number | null): number; | ||
endOfTextblock(_dir: 'up' | 'down' | 'left' | 'right' | 'forward' | 'backward', _state?: EditorState): boolean; | ||
/** | ||
* Removes the editor from the DOM and destroys all [node | ||
* views](#view.NodeView). | ||
*/ | ||
destroy(): void; | ||
dispatch(_tr: Transaction): void; | ||
} | ||
/** | ||
* Creates a new editor view | ||
* | ||
* @param place | ||
* @param props | ||
*/ | ||
declare function createEditorView(place: Node | ((p: HTMLElement) => void) | null, props: DirectEditorProps): EditorView; | ||
export { EditorViewSSR, ReactSerializer, RemirrorSSR, RemirrorSSRProps, createEditorView }; | ||
export {}; |
@@ -1,37 +0,7 @@ | ||
var __accessCheck = (obj, member, msg) => { | ||
if (!member.has(obj)) | ||
throw TypeError("Cannot " + msg); | ||
}; | ||
var __privateGet = (obj, member, getter) => { | ||
__accessCheck(obj, member, "read from private field"); | ||
return getter ? getter.call(obj) : member.get(obj); | ||
}; | ||
var __privateAdd = (obj, member, value) => { | ||
if (member.has(obj)) | ||
throw TypeError("Cannot add the same private member more than once"); | ||
member instanceof WeakSet ? member.add(obj) : member.set(obj, value); | ||
}; | ||
var __privateSet = (obj, member, value, setter) => { | ||
__accessCheck(obj, member, "write to private field"); | ||
setter ? setter.call(obj, value) : member.set(obj, value); | ||
return value; | ||
}; | ||
// packages/remirror__react-ssr/src/react-serializer.tsx | ||
import React, { createElement, Fragment } from "react"; | ||
import { | ||
ErrorConstant, | ||
invariant, | ||
isArray, | ||
isPlainObject, | ||
isString, | ||
object as object2 | ||
} from "@remirror/core"; | ||
import { ErrorConstant, invariant, isArray, isPlainObject, isString, object as object2 } from "@remirror/core"; | ||
// packages/remirror__react-ssr/src/ssr-utils.ts | ||
import { | ||
hasOwnProperty, | ||
keys, | ||
object | ||
} from "@remirror/core"; | ||
import { hasOwnProperty, keys, object } from "@remirror/core"; | ||
@@ -543,3 +513,2 @@ // packages/remirror__react-ssr/src/ssr-constants.ts | ||
function gatherDomMethods(specs) { | ||
var _a; | ||
const result = object(); | ||
@@ -550,3 +519,3 @@ for (const name in specs) { | ||
} | ||
const toDOM = (_a = specs[name]) == null ? void 0 : _a.toDOM; | ||
const toDOM = specs[name]?.toDOM; | ||
if (toDOM) { | ||
@@ -560,12 +529,3 @@ result[name] = toDOM; | ||
// packages/remirror__react-ssr/src/react-serializer.tsx | ||
var _components, _view; | ||
var _ReactSerializer = class { | ||
constructor(nodes, marks, manager) { | ||
__privateAdd(this, _components, void 0); | ||
__privateAdd(this, _view, void 0); | ||
this.nodes = nodes; | ||
this.marks = marks; | ||
__privateSet(this, _components, manager.store.components ?? object2()); | ||
__privateSet(this, _view, manager.view); | ||
} | ||
var ReactSerializer = class _ReactSerializer { | ||
/** | ||
@@ -614,7 +574,3 @@ * Receives the return value from toDOM defined in the node schema and transforms it | ||
static fromManager(manager) { | ||
return new _ReactSerializer( | ||
this.nodesFromManager(manager), | ||
this.marksFromManager(manager), | ||
manager | ||
); | ||
return new _ReactSerializer(this.nodesFromManager(manager), this.marksFromManager(manager), manager); | ||
} | ||
@@ -629,3 +585,3 @@ /** | ||
if (!result.text) { | ||
result.text = (node) => node.text ? node.text : ""; | ||
result.text = node => node.text ? node.text : ""; | ||
} | ||
@@ -642,2 +598,12 @@ return result; | ||
} | ||
nodes; | ||
marks; | ||
#components; | ||
#view; | ||
constructor(nodes, marks, manager) { | ||
this.nodes = nodes; | ||
this.marks = marks; | ||
this.#components = manager.store.components ?? object2(); | ||
this.#view = manager.view; | ||
} | ||
/** | ||
@@ -654,6 +620,6 @@ * The main entry method on this class for traversing through a schema tree and creating JSx. | ||
const children = []; | ||
fragment.forEach((node) => { | ||
fragment.forEach(node => { | ||
let child; | ||
child = this.serializeNode(node); | ||
[...node.marks].reverse().forEach((mark) => { | ||
[...node.marks].reverse().forEach(mark => { | ||
child = this.serializeMark(mark, node.isInline, child); | ||
@@ -671,3 +637,3 @@ }); | ||
serializeNode(node) { | ||
const managerStoreComponent = __privateGet(this, _components)[node.type.name]; | ||
const managerStoreComponent = this.#components[node.type.name]; | ||
const toDOM = this.nodes[node.type.name]; | ||
@@ -679,4 +645,11 @@ let children; | ||
if (managerStoreComponent) { | ||
const { Component, props } = managerStoreComponent; | ||
return /* @__PURE__ */ React.createElement(Component, { ...props, node, view: __privateGet(this, _view) }, children); | ||
const { | ||
Component, | ||
props | ||
} = managerStoreComponent; | ||
return /* @__PURE__ */React.createElement(Component, { | ||
...props, | ||
node, | ||
view: this.#view | ||
}, children); | ||
} | ||
@@ -697,26 +670,31 @@ return toDOM && _ReactSerializer.renderSpec(toDOM(node), children); | ||
}; | ||
var ReactSerializer = _ReactSerializer; | ||
_components = new WeakMap(); | ||
_view = new WeakMap(); | ||
// packages/remirror__react-ssr/src/ssr-component.tsx | ||
import React2 from "react"; | ||
var RemirrorSSR = (props) => { | ||
const { attributes, manager, state, editable } = props; | ||
var RemirrorSSR = props => { | ||
const { | ||
attributes, | ||
manager, | ||
state, | ||
editable | ||
} = props; | ||
const outerProperties = mapProps(attributes); | ||
const ssrElement = ReactSerializer.fromManager(manager).serializeFragment(state.doc.content); | ||
const transformedElement = manager.store.ssrTransformer(ssrElement, state); | ||
return /* @__PURE__ */ React2.createElement("div", { ...outerProperties, suppressContentEditableWarning: true, contentEditable: editable }, transformedElement); | ||
return /* @__PURE__ */React2.createElement("div", { | ||
...outerProperties, | ||
suppressContentEditableWarning: true, | ||
contentEditable: editable | ||
}, transformedElement); | ||
}; | ||
// packages/remirror__react-ssr/src/ssr-prosemirror-view.ts | ||
import { | ||
Cast, | ||
getDocument, | ||
shouldUseDomEnvironment | ||
} from "@remirror/core"; | ||
import { Cast, getDocument, shouldUseDomEnvironment } from "@remirror/core"; | ||
import { EditorView as EditorView2 } from "@remirror/pm/view"; | ||
var EditorViewSSR = class { | ||
state; | ||
dom; | ||
dragging = null; | ||
root; | ||
constructor(_place, props) { | ||
this.dragging = null; | ||
const doc = getDocument(); | ||
@@ -727,8 +705,5 @@ this.root = doc; | ||
} | ||
update(_props) { | ||
} | ||
setProps(_props) { | ||
} | ||
updateState(_state) { | ||
} | ||
update(_props) {} | ||
setProps(_props) {} | ||
updateState(_state) {} | ||
someProps(_propName, f) { | ||
@@ -740,4 +715,3 @@ return f ? f(null) : null; | ||
} | ||
focus() { | ||
} | ||
focus() {} | ||
posAtCoords(_coords) { | ||
@@ -747,6 +721,14 @@ return null; | ||
coordsAtPos(_pos) { | ||
return { bottom: 0, left: 0, right: 0, top: 0 }; | ||
return { | ||
bottom: 0, | ||
left: 0, | ||
right: 0, | ||
top: 0 | ||
}; | ||
} | ||
domAtPos(_pos) { | ||
return { node: this.dom, offset: 0 }; | ||
return { | ||
node: this.dom, | ||
offset: 0 | ||
}; | ||
} | ||
@@ -766,6 +748,4 @@ nodeDOM(_pos) { | ||
*/ | ||
destroy() { | ||
} | ||
dispatch(_tr) { | ||
} | ||
destroy() {} | ||
dispatch(_tr) {} | ||
}; | ||
@@ -776,7 +756,2 @@ function createEditorView(place, props) { | ||
} | ||
export { | ||
EditorViewSSR, | ||
ReactSerializer, | ||
RemirrorSSR, | ||
createEditorView | ||
}; | ||
export { EditorViewSSR, ReactSerializer, RemirrorSSR, createEditorView }; |
{ | ||
"name": "@remirror/react-ssr", | ||
"version": "0.0.0-pr2128.4", | ||
"version": "0.0.0-pr2166.1", | ||
"description": "Render the editor in an SSR environment", | ||
@@ -37,8 +37,8 @@ "keywords": [ | ||
"@babel/runtime": "^7.22.3", | ||
"@remirror/core": "0.0.0-pr2128.4", | ||
"@remirror/extension-react-ssr": "0.0.0-pr2128.4" | ||
"@remirror/core": "0.0.0-pr2166.1", | ||
"@remirror/extension-react-ssr": "0.0.0-pr2166.1" | ||
}, | ||
"devDependencies": { | ||
"@remirror/pm": "0.0.0-pr2128.4", | ||
"@remirror/react": "0.0.0-pr2128.4", | ||
"@remirror/pm": "0.0.0-pr2166.1", | ||
"@remirror/react": "0.0.0-pr2166.1", | ||
"@types/react": "^18.2.0", | ||
@@ -50,3 +50,3 @@ "@types/react-dom": "^18.2.0", | ||
"peerDependencies": { | ||
"@remirror/pm": "0.0.0-pr2128.4", | ||
"@remirror/pm": "0.0.0-pr2166.1", | ||
"@types/react": "^16.14.0 || ^17 || ^18", | ||
@@ -53,0 +53,0 @@ "@types/react-dom": "^16.9.0 || ^17 || ^18", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
17
126605
2463
+ Added@remirror/core@0.0.0-pr2166.1(transitive)
+ Added@remirror/core-constants@0.0.0-pr2166.1(transitive)
+ Added@remirror/core-helpers@0.0.0-pr2166.1(transitive)
+ Added@remirror/core-types@0.0.0-pr2166.1(transitive)
+ Added@remirror/core-utils@0.0.0-pr2166.1(transitive)
+ Added@remirror/extension-react-component@0.0.0-pr2166.1(transitive)
+ Added@remirror/extension-react-ssr@0.0.0-pr2166.1(transitive)
+ Added@remirror/icons@0.0.0-pr2166.1(transitive)
+ Added@remirror/messages@0.0.0-pr2166.1(transitive)
+ Added@remirror/pm@0.0.0-pr2166.1(transitive)
+ Added@remirror/react-utils@0.0.0-pr2166.1(transitive)
+ Added@remirror/types@0.0.0-pr2166.1(transitive)
+ Addedprosemirror-paste-rules@0.0.0-pr2166.1(transitive)
+ Addedprosemirror-suggest@0.0.0-pr2166.1(transitive)
+ Addedprosemirror-trailing-node@0.0.0-pr2166.1(transitive)
- Removed@remirror/core@0.0.0-pr2128.4(transitive)
- Removed@remirror/core-constants@0.0.0-pr2128.4(transitive)
- Removed@remirror/core-helpers@0.0.0-pr2128.4(transitive)
- Removed@remirror/core-types@0.0.0-pr2128.4(transitive)
- Removed@remirror/core-utils@0.0.0-pr2128.4(transitive)
- Removed@remirror/extension-react-component@0.0.0-pr2128.4(transitive)
- Removed@remirror/extension-react-ssr@0.0.0-pr2128.4(transitive)
- Removed@remirror/icons@0.0.0-pr2128.4(transitive)
- Removed@remirror/messages@0.0.0-pr2128.4(transitive)
- Removed@remirror/pm@0.0.0-pr2128.4(transitive)
- Removed@remirror/react-utils@0.0.0-pr2128.4(transitive)
- Removed@remirror/types@0.0.0-pr2128.4(transitive)
- Removedprosemirror-paste-rules@0.0.0-pr2128.4(transitive)
- Removedprosemirror-suggest@0.0.0-pr2128.4(transitive)
- Removedprosemirror-trailing-node@0.0.0-pr2128.4(transitive)