@kerebron/extension-yjs 0.5.3 → 0.5.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 +3 -89
- package/esm/ExtensionYjs.d.ts +10 -1
- package/esm/ExtensionYjs.d.ts.map +1 -1
- package/esm/ExtensionYjs.js +47 -6
- package/esm/ExtensionYjs.js.map +1 -1
- package/esm/MarkYChange.d.ts +7 -0
- package/esm/MarkYChange.d.ts.map +1 -0
- package/esm/MarkYChange.js +21 -0
- package/esm/MarkYChange.js.map +1 -0
- package/esm/ProsemirrorBinding.d.ts +60 -0
- package/esm/ProsemirrorBinding.d.ts.map +1 -0
- package/esm/ProsemirrorBinding.js +405 -0
- package/esm/ProsemirrorBinding.js.map +1 -0
- package/esm/createNodeFromYElement.d.ts +10 -0
- package/esm/createNodeFromYElement.d.ts.map +1 -0
- package/esm/createNodeFromYElement.js +123 -0
- package/esm/createNodeFromYElement.js.map +1 -0
- package/esm/debug.d.ts +13 -0
- package/esm/debug.d.ts.map +1 -0
- package/esm/debug.js +147 -0
- package/esm/debug.js.map +1 -0
- package/esm/keys.d.ts +5 -8
- package/esm/keys.d.ts.map +1 -1
- package/esm/keys.js +1 -6
- package/esm/keys.js.map +1 -1
- package/esm/lib.d.ts +1 -2
- package/esm/lib.d.ts.map +1 -1
- package/esm/lib.js +12 -2
- package/esm/lib.js.map +1 -1
- package/esm/updateYFragment.d.ts +17 -0
- package/esm/updateYFragment.d.ts.map +1 -0
- package/esm/updateYFragment.js +333 -0
- package/esm/updateYFragment.js.map +1 -0
- package/esm/utils.d.ts +2 -0
- package/esm/utils.d.ts.map +1 -1
- package/esm/utils.js +4 -0
- package/esm/utils.js.map +1 -1
- package/esm/yPositionPlugin.d.ts +12 -4
- package/esm/yPositionPlugin.d.ts.map +1 -1
- package/esm/yPositionPlugin.js +114 -61
- package/esm/yPositionPlugin.js.map +1 -1
- package/esm/ySyncPlugin.d.ts +16 -78
- package/esm/ySyncPlugin.d.ts.map +1 -1
- package/esm/ySyncPlugin.js +81 -848
- package/esm/ySyncPlugin.js.map +1 -1
- package/esm/yUndoPlugin.d.ts +1 -1
- package/esm/yUndoPlugin.d.ts.map +1 -1
- package/esm/yUndoPlugin.js +1 -1
- package/esm/yUndoPlugin.js.map +1 -1
- package/package.json +9 -3
- package/src/ExtensionYjs.ts +65 -9
- package/src/MarkYChange.ts +23 -0
- package/src/ProsemirrorBinding.ts +607 -0
- package/src/createNodeFromYElement.ts +175 -0
- package/src/debug.ts +218 -0
- package/src/keys.ts +9 -9
- package/src/lib.ts +11 -3
- package/src/updateYFragment.ts +439 -0
- package/src/utils.ts +6 -0
- package/src/yPositionPlugin.ts +167 -92
- package/src/ySyncPlugin.ts +135 -1193
- package/src/yUndoPlugin.ts +1 -1
- package/esm/convertUtils.d.ts +0 -59
- package/esm/convertUtils.d.ts.map +0 -1
- package/esm/convertUtils.js +0 -89
- package/esm/convertUtils.js.map +0 -1
- package/src/convertUtils.ts +0 -143
package/README.md
CHANGED
|
@@ -1,91 +1,5 @@
|
|
|
1
|
-
# Kerebron - Prosemirror based online editor kit
|
|
2
1
|
|
|
3
|
-
|
|
2
|
+
# Debugging:
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
</a>
|
|
8
|
-
|
|
9
|
-
## Playground Demo
|
|
10
|
-
|
|
11
|
-
[playground](https://kerebron.com) - be nice.
|
|
12
|
-
|
|
13
|
-
## Overview
|
|
14
|
-
|
|
15
|
-
Using vanilla Prosemirror modules is often impossible because of
|
|
16
|
-
incompatibilities.
|
|
17
|
-
|
|
18
|
-
Kerebron forks several prosemirror projects into one monorepo in order to keep
|
|
19
|
-
them in sync.
|
|
20
|
-
|
|
21
|
-
Project is inspired on https://tiptap.dev/, but instead of building wrapper
|
|
22
|
-
around a wrapper it borrows concept of extension and command manager.
|
|
23
|
-
|
|
24
|
-
It has simplified tooling (deno), fewer dependencies and resulting in lower
|
|
25
|
-
number of output npm modules.
|
|
26
|
-
|
|
27
|
-
**Work in progress**
|
|
28
|
-
|
|
29
|
-
## Build
|
|
30
|
-
|
|
31
|
-
###
|
|
32
|
-
|
|
33
|
-
Update git submodules
|
|
34
|
-
|
|
35
|
-
```sh
|
|
36
|
-
git submodule init
|
|
37
|
-
git submodule update
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### Build static examples and `.wasm` files
|
|
41
|
-
|
|
42
|
-
```sh
|
|
43
|
-
deno task -f @kerebron/odt-wasm build
|
|
44
|
-
deno task -f @kerebron build
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Development
|
|
48
|
-
|
|
49
|
-
To start example server:
|
|
50
|
-
|
|
51
|
-
```sh
|
|
52
|
-
deno task dev
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Examples
|
|
56
|
-
|
|
57
|
-
TODO
|
|
58
|
-
|
|
59
|
-
### NPM packages are generated using DNT
|
|
60
|
-
|
|
61
|
-
- https://deno.com/blog/publish-esm-cjs-module-dnt - the easiest way to publish
|
|
62
|
-
a hybrid npm module for ESM and CommonJS
|
|
63
|
-
- https://github.com/denoland/dnt
|
|
64
|
-
- https://gaubee.com/article/Publishing-Your-Deno-Project-as-a-Monorepo-using-dnt/
|
|
65
|
-
|
|
66
|
-
To generate npm packages
|
|
67
|
-
|
|
68
|
-
```sh
|
|
69
|
-
deno -A ./build/build_npm.ts
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
## Run through docker
|
|
73
|
-
|
|
74
|
-
```sh
|
|
75
|
-
docker build . -t editor-test
|
|
76
|
-
docker run -it -p 8000:8000 -v $PWD:/usr/src/app editor-test
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## Prerequisites
|
|
80
|
-
|
|
81
|
-
Install deno
|
|
82
|
-
|
|
83
|
-
```sh
|
|
84
|
-
npm install -g deno
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
Install rust
|
|
88
|
-
|
|
89
|
-
```sh
|
|
90
|
-
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
|
91
|
-
```
|
|
4
|
+
* ydoc => pm Event - grep for: yXmlChanged
|
|
5
|
+
* pm => ydoc Event - grep for: prosemirrorChanged
|
package/esm/ExtensionYjs.d.ts
CHANGED
|
@@ -1,17 +1,26 @@
|
|
|
1
|
+
import type { Schema } from 'prosemirror-model';
|
|
1
2
|
import type { Plugin } from 'prosemirror-state';
|
|
3
|
+
import * as Y from 'yjs';
|
|
2
4
|
import * as awarenessProtocol from 'y-protocols/awareness';
|
|
3
|
-
import { Extension } from '@kerebron/editor';
|
|
5
|
+
import { Converter, CoreEditor, Extension } from '@kerebron/editor';
|
|
4
6
|
import type { CommandFactories, CommandShortcuts } from '@kerebron/editor/commands';
|
|
5
7
|
export interface YjsProvider {
|
|
6
8
|
on(eventName: string, callback: (event: any) => void): void;
|
|
7
9
|
awareness: awarenessProtocol.Awareness;
|
|
8
10
|
}
|
|
11
|
+
export type CreateWsProvider = (roomId: string) => [YjsProvider, Y.Doc];
|
|
12
|
+
export interface YjsConfig {
|
|
13
|
+
createWsProvider: CreateWsProvider;
|
|
14
|
+
}
|
|
9
15
|
export declare class ExtensionYjs extends Extension {
|
|
16
|
+
config: YjsConfig;
|
|
10
17
|
name: string;
|
|
11
18
|
conflicts: string[];
|
|
12
19
|
requires: string[];
|
|
13
20
|
getCommandFactories(): Partial<CommandFactories>;
|
|
14
21
|
getKeyboardShortcuts(): Partial<CommandShortcuts>;
|
|
22
|
+
constructor(config: YjsConfig);
|
|
23
|
+
getConverters(editor: CoreEditor, schema: Schema): Record<string, Converter>;
|
|
15
24
|
getProseMirrorPlugins(): Plugin[];
|
|
16
25
|
}
|
|
17
26
|
//# sourceMappingURL=ExtensionYjs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtensionYjs.d.ts","sourceRoot":"","sources":["../src/ExtensionYjs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ExtensionYjs.d.ts","sourceRoot":"","sources":["../src/ExtensionYjs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AAOnC,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5D,SAAS,EAAE,iBAAiB,CAAC,SAAS,CAAC;CACxC;AAaD,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAExE,MAAM,WAAW,SAAS;IACxB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,qBAAa,YAAa,SAAQ,SAAS;IAqBb,MAAM,EAAE,SAAS;IApB7C,IAAI,SAAS;IAEJ,SAAS,WAAe;IACjC,QAAQ,WAAwB;IAGvB,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAOhD,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;gBAO9B,MAAM,EAAE,SAAS;IAepC,aAAa,CACpB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,GACb,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;IAyBnB,qBAAqB,IAAI,MAAM,EAAE;CAO3C"}
|
package/esm/ExtensionYjs.js
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import { Extension } from '@kerebron/editor';
|
|
2
|
+
import { ySyncPluginKey } from './keys.js';
|
|
2
3
|
import { ySyncPlugin } from './ySyncPlugin.js';
|
|
3
4
|
import { yPositionPlugin } from './yPositionPlugin.js';
|
|
4
5
|
import { redo, undo, yUndoPlugin } from './yUndoPlugin.js';
|
|
5
|
-
|
|
6
|
+
function stringToIndex(str, arrayLength) {
|
|
7
|
+
let hash = 0;
|
|
8
|
+
for (let i = 0; i < str.length; i++) {
|
|
9
|
+
hash = (hash << 5) - hash + str.charCodeAt(i);
|
|
10
|
+
hash |= 0; // force 32-bit integer
|
|
11
|
+
}
|
|
12
|
+
return Math.abs(hash) % arrayLength;
|
|
13
|
+
}
|
|
6
14
|
export class ExtensionYjs extends Extension {
|
|
15
|
+
config;
|
|
7
16
|
name = 'yjs';
|
|
8
17
|
conflicts = ['history'];
|
|
9
18
|
requires = ['remote-selection'];
|
|
@@ -20,13 +29,45 @@ export class ExtensionYjs extends Extension {
|
|
|
20
29
|
'Mod-y': 'redo',
|
|
21
30
|
};
|
|
22
31
|
}
|
|
32
|
+
constructor(config) {
|
|
33
|
+
super();
|
|
34
|
+
this.config = config;
|
|
35
|
+
}
|
|
36
|
+
// changeUser(userName: string) {
|
|
37
|
+
// const idx = stringToIndex(userName, userColors.length);
|
|
38
|
+
// const userColor = userColors[idx];
|
|
39
|
+
// this.wsProvider.awareness.setLocalStateField('user', {
|
|
40
|
+
// name: userName,
|
|
41
|
+
// color: userColor.color,
|
|
42
|
+
// colorLight: userColor.light,
|
|
43
|
+
// });
|
|
44
|
+
// }
|
|
45
|
+
// //
|
|
46
|
+
getConverters(editor, schema) {
|
|
47
|
+
return {
|
|
48
|
+
'yjs': {
|
|
49
|
+
fromDoc: async (document) => {
|
|
50
|
+
throw new Error('Not implemented');
|
|
51
|
+
},
|
|
52
|
+
toDoc: async (buffer) => {
|
|
53
|
+
const roomId = new TextDecoder().decode(buffer);
|
|
54
|
+
const tr = editor.state.tr.setMeta(ySyncPluginKey, {
|
|
55
|
+
roomId: '',
|
|
56
|
+
});
|
|
57
|
+
editor.view.dispatch(tr);
|
|
58
|
+
setTimeout(() => {
|
|
59
|
+
const tr = editor.state.tr.setMeta(ySyncPluginKey, { roomId });
|
|
60
|
+
editor.view.dispatch(tr);
|
|
61
|
+
}, 100);
|
|
62
|
+
return schema.topNodeType.createAndFill();
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
23
67
|
getProseMirrorPlugins() {
|
|
24
|
-
const ydoc = this.config.ydoc;
|
|
25
|
-
const fragment = ydoc.getXmlFragment('prosemirror');
|
|
26
|
-
const { mapping } = initProseMirrorDoc(fragment, this.editor.schema);
|
|
27
68
|
return [
|
|
28
|
-
ySyncPlugin(
|
|
29
|
-
yPositionPlugin(this.
|
|
69
|
+
ySyncPlugin(this.editor.schema, this.config.createWsProvider),
|
|
70
|
+
yPositionPlugin(this.editor),
|
|
30
71
|
yUndoPlugin(),
|
|
31
72
|
];
|
|
32
73
|
}
|
package/esm/ExtensionYjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtensionYjs.js","sourceRoot":"","sources":["../src/ExtensionYjs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExtensionYjs.js","sourceRoot":"","sources":["../src/ExtensionYjs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkYChange.d.ts","sourceRoot":"","sources":["../src/MarkYChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,qBAAa,WAAY,SAAQ,IAAI;IAC1B,IAAI,SAAa;IAEjB,WAAW,IAAI,QAAQ;CAgBjC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Mark } from '@kerebron/editor';
|
|
2
|
+
export class MarkYChange extends Mark {
|
|
3
|
+
name = 'ychange';
|
|
4
|
+
getMarkSpec() {
|
|
5
|
+
return {
|
|
6
|
+
attrs: {
|
|
7
|
+
user: { default: null },
|
|
8
|
+
type: { default: null },
|
|
9
|
+
},
|
|
10
|
+
inclusive: false,
|
|
11
|
+
parseDOM: [{ tag: 'ychange' }],
|
|
12
|
+
toDOM(node) {
|
|
13
|
+
return ['ychange', {
|
|
14
|
+
ychange_user: node.attrs.user,
|
|
15
|
+
ychange_type: node.attrs.type,
|
|
16
|
+
}];
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=MarkYChange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkYChange.js","sourceRoot":"","sources":["../src/MarkYChange.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,MAAM,OAAO,WAAY,SAAQ,IAAI;IAC1B,IAAI,GAAG,SAAS,CAAC;IAEjB,WAAW;QAClB,OAAO;YACL,KAAK,EAAE;gBACL,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBACvB,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;aACxB;YACD,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI;gBACR,OAAO,CAAC,SAAS,EAAE;wBACjB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;wBAC7B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;qBAC9B,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { mutex } from 'lib0/mutex';
|
|
2
|
+
import { Node } from 'prosemirror-model';
|
|
3
|
+
import { EditorState, Transaction } from 'prosemirror-state';
|
|
4
|
+
import * as Y from 'yjs';
|
|
5
|
+
import { ProsemirrorMapping } from './lib.js';
|
|
6
|
+
import { type ColorDef, type YSyncPluginState } from './ySyncPlugin.js';
|
|
7
|
+
export declare const defaultColors: Array<ColorDef>;
|
|
8
|
+
export interface BindingMetadata {
|
|
9
|
+
mapping: ProsemirrorMapping;
|
|
10
|
+
isOMark: Map<string, boolean>;
|
|
11
|
+
}
|
|
12
|
+
interface TransactionSelection {
|
|
13
|
+
type: string;
|
|
14
|
+
anchor: Y.RelativePosition;
|
|
15
|
+
head: Y.RelativePosition;
|
|
16
|
+
}
|
|
17
|
+
export declare const getRelativeSelection: (pmbinding: ProsemirrorBinding, state: EditorState) => TransactionSelection;
|
|
18
|
+
interface IEditorView {
|
|
19
|
+
state: EditorState;
|
|
20
|
+
dispatch(tr: Transaction): void;
|
|
21
|
+
fake?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Binding for prosemirror.
|
|
25
|
+
*
|
|
26
|
+
* @protected
|
|
27
|
+
*/
|
|
28
|
+
export declare class ProsemirrorBinding implements BindingMetadata {
|
|
29
|
+
readonly mapping: ProsemirrorMapping;
|
|
30
|
+
ydoc: Y.Doc;
|
|
31
|
+
isOMark: Map<string, boolean>;
|
|
32
|
+
type: Y.XmlFragment;
|
|
33
|
+
readonly mux: mutex;
|
|
34
|
+
prosemirrorView?: IEditorView;
|
|
35
|
+
private _beforeTransactionSelection;
|
|
36
|
+
private readonly beforeAllTransactions;
|
|
37
|
+
private readonly afterAllTransactions;
|
|
38
|
+
private _observeFunction;
|
|
39
|
+
private _domSelectionInView;
|
|
40
|
+
get beforeTransactionSelection(): TransactionSelection | null;
|
|
41
|
+
set beforeTransactionSelection(value: TransactionSelection);
|
|
42
|
+
constructor(yXmlFragment: Y.XmlFragment, mapping?: ProsemirrorMapping);
|
|
43
|
+
changeRoom(yXmlFragment: Y.XmlFragment): void;
|
|
44
|
+
debug(msg?: string): void;
|
|
45
|
+
_isLocalCursorInView(): boolean;
|
|
46
|
+
_isDomSelectionInView(): boolean;
|
|
47
|
+
renderSnapshot(snapshot: Y.Snapshot | undefined, prevSnapshot: Y.Snapshot | undefined): void;
|
|
48
|
+
unrenderSnapshot(): void;
|
|
49
|
+
_forceRerender(): void;
|
|
50
|
+
_renderSnapshot(snapshot: Y.Snapshot | Uint8Array | undefined, prevSnapshot: Y.Snapshot | Uint8Array, pluginState: YSyncPluginState): void;
|
|
51
|
+
yXmlChanged(events: Array<Y.YEvent<any>>, transaction: Y.Transaction): void;
|
|
52
|
+
prosemirrorChanged(doc: Node): void;
|
|
53
|
+
/**
|
|
54
|
+
* View is ready to listen to changes. Register observers.
|
|
55
|
+
*/
|
|
56
|
+
initView(prosemirrorView?: IEditorView): void;
|
|
57
|
+
destroy(): void;
|
|
58
|
+
}
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=ProsemirrorBinding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProsemirrorBinding.d.ts","sourceRoot":"","sources":["../src/ProsemirrorBinding.ts"],"names":[],"mappings":"AAMA,OAAO,EAAe,KAAK,EAAE,MAAM,YAAY,CAAC;AAIhD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAEL,WAAW,EAIX,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAKzB,OAAO,EAEL,kBAAkB,EAEnB,MAAM,UAAU,CAAC;AAMlB,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGxE,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,QAAQ,CAGxC,CAAC;AAmBH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,CAAC,CAAC,gBAAgB,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,gBAAgB,CAAC;CAC1B;AAyDD,eAAO,MAAM,oBAAoB,GAC/B,WAAW,kBAAkB,EAC7B,OAAO,WAAW,KACjB,oBAYD,CAAC;AAEH,UAAU,WAAW;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,eAAe;aAsBtC,OAAO,EAAE,kBAAkB;IArBtC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC;IACZ,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC;IAC3B,SAAgB,GAAG,EAAE,KAAK,CAAC;IACpB,eAAe,CAAC,EAAE,WAAW,CAAC;IAErC,OAAO,CAAC,2BAA2B,CAAqC;IACxE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAa;IACnD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAa;IAElD,OAAO,CAAC,gBAAgB,CAAyC;IACjE,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,IAAI,0BAA0B,IAAI,oBAAoB,GAAG,IAAI,CAE5D;IACD,IAAI,0BAA0B,CAAC,KAAK,EAAE,oBAAoB,EAEzD;gBAGC,YAAY,EAAE,CAAC,CAAC,WAAW,EACX,OAAO,GAAE,kBAA8B;IAsCzD,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,WAAW;IAUtC,KAAK,CAAC,GAAG,SAAqB;IAI9B,oBAAoB,IAAI,OAAO;IAY/B,qBAAqB,IAAI,OAAO;IA6BhC,cAAc,CACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ,GAAG,SAAS,EAChC,YAAY,EAAE,CAAC,CAAC,QAAQ,GAAG,SAAS;IAgBtC,gBAAgB;IA+BhB,cAAc;IAsDd,eAAe,CACb,QAAQ,EAAE,CAAC,CAAC,QAAQ,GAAG,UAAU,GAAG,SAAS,EAC7C,YAAY,EAAE,CAAC,CAAC,QAAQ,GAAG,UAAU,EACrC,WAAW,EAAE,gBAAgB;IA+H/B,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW;IAiEpE,kBAAkB,CAAC,GAAG,EAAE,IAAI;IAa5B;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW;IAUtC,OAAO;CAcR"}
|