@firestitch/markdown-editor 18.0.3 → 18.0.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/app/modules/markdown-editor/components/markdown-editor/markdown-editor.component.d.ts +1 -0
- package/esm2022/app/modules/markdown-editor/components/markdown-editor/markdown-editor.component.mjs +28 -18
- package/fesm2022/firestitch-markdown-editor.mjs +27 -17
- package/fesm2022/firestitch-markdown-editor.mjs.map +1 -1
- package/package.json +3 -1
package/app/modules/markdown-editor/components/markdown-editor/markdown-editor.component.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export declare class FsMarkdownEditorComponent implements OnInit, AfterViewInit,
|
|
|
37
37
|
destroy(): void;
|
|
38
38
|
ngOnDestroy(): void;
|
|
39
39
|
private _initEditor;
|
|
40
|
+
private _setupChangeTracking;
|
|
40
41
|
private _setEditorContent;
|
|
41
42
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsMarkdownEditorComponent, never>;
|
|
42
43
|
static ɵcmp: i0.ɵɵComponentDeclaration<FsMarkdownEditorComponent, "fs-markdown-editor", never, { "config": { "alias": "config"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
|
package/esm2022/app/modules/markdown-editor/components/markdown-editor/markdown-editor.component.mjs
CHANGED
|
@@ -132,29 +132,14 @@ export class FsMarkdownEditorComponent {
|
|
|
132
132
|
},
|
|
133
133
|
},
|
|
134
134
|
});
|
|
135
|
-
this._crepe.on((listener) => {
|
|
136
|
-
listener.markdownUpdated((_ctx, markdown, prevMarkdown) => {
|
|
137
|
-
if (markdown !== prevMarkdown) {
|
|
138
|
-
this._zone.run(() => {
|
|
139
|
-
this._markdown = markdown;
|
|
140
|
-
if (this.onChange) {
|
|
141
|
-
this.onChange(markdown);
|
|
142
|
-
}
|
|
143
|
-
if (this.onTouched) {
|
|
144
|
-
this.onTouched();
|
|
145
|
-
}
|
|
146
|
-
this._cdRef.markForCheck();
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
135
|
this._crepe.create().then(() => {
|
|
152
136
|
this._zone.run(() => {
|
|
153
137
|
this._editorReady = true;
|
|
154
|
-
this.
|
|
138
|
+
this._setupChangeTracking();
|
|
155
139
|
if (this._markdown) {
|
|
156
140
|
this._setEditorContent(this._markdown);
|
|
157
141
|
}
|
|
142
|
+
this.initialized = true;
|
|
158
143
|
this._cdRef.markForCheck();
|
|
159
144
|
if (this.config.autofocus) {
|
|
160
145
|
this.focus();
|
|
@@ -166,6 +151,30 @@ export class FsMarkdownEditorComponent {
|
|
|
166
151
|
});
|
|
167
152
|
});
|
|
168
153
|
}
|
|
154
|
+
_setupChangeTracking() {
|
|
155
|
+
this._crepe.editor.action((ctx) => {
|
|
156
|
+
const view = ctx.get(this._editorViewCtx);
|
|
157
|
+
const originalDispatch = view.dispatch.bind(view);
|
|
158
|
+
view.dispatch = (tr) => {
|
|
159
|
+
originalDispatch(tr);
|
|
160
|
+
if (this.initialized && tr.docChanged && !tr.getMeta('programmatic')) {
|
|
161
|
+
const markdown = this._crepe.getMarkdown();
|
|
162
|
+
if (markdown !== this._markdown) {
|
|
163
|
+
this._zone.run(() => {
|
|
164
|
+
this._markdown = markdown;
|
|
165
|
+
if (this.onChange) {
|
|
166
|
+
this.onChange(this._markdown);
|
|
167
|
+
}
|
|
168
|
+
if (this.onTouched) {
|
|
169
|
+
this.onTouched();
|
|
170
|
+
}
|
|
171
|
+
this._cdRef.markForCheck();
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
});
|
|
177
|
+
}
|
|
169
178
|
_setEditorContent(markdown) {
|
|
170
179
|
this._crepe.editor.action((ctx) => {
|
|
171
180
|
const view = ctx.get(this._editorViewCtx);
|
|
@@ -173,6 +182,7 @@ export class FsMarkdownEditorComponent {
|
|
|
173
182
|
const doc = parser(markdown);
|
|
174
183
|
if (doc) {
|
|
175
184
|
const tr = view.state.tr.replaceWith(0, view.state.doc.content.size, doc.content);
|
|
185
|
+
tr.setMeta('programmatic', true);
|
|
176
186
|
view.dispatch(tr);
|
|
177
187
|
}
|
|
178
188
|
});
|
|
@@ -236,4 +246,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
236
246
|
type: HostBinding,
|
|
237
247
|
args: ['class.initialized']
|
|
238
248
|
}] } });
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYXJrZG93bi1lZGl0b3IvY29tcG9uZW50cy9tYXJrZG93bi1lZGl0b3IvbWFya2Rvd24tZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYXJrZG93bi1lZGl0b3IvY29tcG9uZW50cy9tYXJrZG93bi1lZGl0b3IvbWFya2Rvd24tZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixNQUFNLEdBR1AsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXhFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7QUFnQ2pGLE1BQU0sT0FBTyx5QkFBeUI7SUFHTCxTQUFTLENBQWE7SUFFaEIsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUUxQyxNQUFNLEdBQTJCLEVBQUUs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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xDb250YWluZXIsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgTmdGb3JtLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgZ3VpZCB9IGZyb20gJ0BmaXJlc3RpdGNoL2NvbW1vbic7XG5pbXBvcnQgeyBGc0xhYmVsTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGFiZWwnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZTX01BUktET1dOX0VESVRPUl9DT05GSUcgfSBmcm9tICcuLi8uLi9pbmplY3RzL2NvbmZpZy5pbmplY3QnO1xuaW1wb3J0IHsgRnNNYXJrZG93bkVkaXRvckNvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbWFya2Rvd24tZWRpdG9yLWNvbmZpZyc7XG5pbXBvcnQgeyBGc01pbGtkb3duTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21pbGtkb3duLWxvYWRlci5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1tYXJrZG93bi1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFya2Rvd24tZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFya2Rvd24tZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRnNNYXJrZG93bkVkaXRvckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGc01hcmtkb3duRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lcixcbiAgICAgIGRlcHM6IFtbT3B0aW9uYWwsIE5nRm9ybV1dLFxuICAgICAgdXNlRmFjdG9yeTogKG5nRm9ybTogTmdGb3JtKSA9PiBuZ0Zvcm0sXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEZzTGFiZWxNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzTWFya2Rvd25FZGl0b3JDb21wb25lbnRcbmltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvclJlZicpIHB1YmxpYyBlZGl0b3JSZWY6IEVsZW1lbnRSZWY7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb2N1c2VkJykgcHVibGljIGNsYXNzRm9jdXNlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjb25maWc6IEZzTWFya2Rvd25FZGl0b3JDb25maWcgPSB7fTtcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkJylcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbml0aWFsaXplZCcpXG4gIHB1YmxpYyBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb250YWluZXJJRCA9IGBmcy1tYXJrZG93bi1lZGl0b3ItJHtndWlkKCd4eHgnKX1gO1xuICBwdWJsaWMgb25Ub3VjaGVkOiAoKSA9PiB2b2lkO1xuICBwdWJsaWMgb25DaGFuZ2U6IChkYXRhOiBhbnkpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfY3JlcGU6IGFueTtcbiAgcHJpdmF0ZSBfZWRpdG9yVmlld0N0eDogYW55O1xuICBwcml2YXRlIF9wYXJzZXJDdHg6IGFueTtcbiAgcHJpdmF0ZSBfbWFya2Rvd24gPSAnJztcbiAgcHJpdmF0ZSBfZWRpdG9yUmVhZHkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9kZWZhdWx0Q29uZmlnID0gaW5qZWN0PEZzTWFya2Rvd25FZGl0b3JDb25maWc+KEZTX01BUktET1dOX0VESVRPUl9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBfbG9hZGVyID0gaW5qZWN0KEZzTWlsa2Rvd25Mb2FkZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG5cbiAgcHVibGljIGdldCBtYXJrZG93bigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZG93bjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uKHRoaXMuX2RlZmF1bHRDb25maWcgfHwge30pLCAuLi4odGhpcy5jb25maWcgfHwge30pIH07XG4gICAgdGhpcy5fbG9hZGVyLmxvYWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fbG9hZGVyLmxvYWRlZCRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChsb2FkZWQpID0+IHtcbiAgICAgICAgaWYgKGxvYWRlZCkge1xuICAgICAgICAgIHRoaXMuX2luaXRFZGl0b3IoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZShtYXJrZG93bjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fbWFya2Rvd24gPSBtYXJrZG93biB8fCAnJztcblxuICAgIGlmICh0aGlzLl9lZGl0b3JSZWFkeSkge1xuICAgICAgdGhpcy5fc2V0RWRpdG9yQ29udGVudCh0aGlzLl9tYXJrZG93bik7XG4gICAgfVxuXG4gICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKGRhdGE6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IGVycjogYW55ID0ge307XG4gICAgaWYgKHRoaXMuY29uZmlnLm1heExlbmd0aCAmJiB0aGlzLl9tYXJrZG93bikge1xuICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5fbWFya2Rvd24ubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCA+IHRoaXMuY29uZmlnLm1heExlbmd0aCkge1xuICAgICAgICBlcnIubWF4TGVuZ3RoRXJyb3IgPSBgTXVzdCBiZSAke3RoaXMuY29uZmlnLm1heExlbmd0aH0gY2hhcmFjdGVycyBvciBmZXdlci4gWW91IGVudGVyZWQgJHtsZW5ndGh9IGNoYXJhY3RlcnMuYDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyKS5sZW5ndGggPyBlcnIgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVWYWx1ZSgnJyk7XG4gICAgaWYgKHRoaXMub25DaGFuZ2UpIHtcbiAgICAgIHRoaXMub25DaGFuZ2UoJycpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRNYXJrZG93bihtYXJrZG93bjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy53cml0ZVZhbHVlKG1hcmtkb3duKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYXJrZG93bigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fY3JlcGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9tYXJrZG93bjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY3JlcGUuZ2V0TWFya2Rvd24oKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY3JlcGUgJiYgdGhpcy5fZWRpdG9yVmlld0N0eCkge1xuICAgICAgdGhpcy5fY3JlcGUuZWRpdG9yLmFjdGlvbigoY3R4OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgdmlldyA9IGN0eC5nZXQodGhpcy5fZWRpdG9yVmlld0N0eCk7XG4gICAgICAgIHZpZXcuZm9jdXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NyZXBlKSB7XG4gICAgICB0aGlzLl9jcmVwZS5kZXN0cm95KCk7XG4gICAgICB0aGlzLl9jcmVwZSA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuX2VkaXRvclJlYWR5ID0gZmFsc2U7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEVkaXRvcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY3JlcGUgfHwgIXRoaXMuZWRpdG9yUmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWlsa2Rvd24gPSAod2luZG93IGFzIGFueSkuX19NSUxLRE9XTl9fO1xuICAgIGlmICghbWlsa2Rvd24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01pbGtkb3duIG5vdCBsb2FkZWQuIEVuc3VyZSBhc3NldHMgYXJlIGNvbmZpZ3VyZWQuJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9lZGl0b3JWaWV3Q3R4ID0gbWlsa2Rvd24uZWRpdG9yVmlld0N0eDtcbiAgICB0aGlzLl9wYXJzZXJDdHggPSBtaWxrZG93bi5wYXJzZXJDdHg7XG5cbiAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX2NyZXBlID0gbmV3IG1pbGtkb3duLkNyZXBlKHtcbiAgICAgICAgcm9vdDogdGhpcy5lZGl0b3JSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB0aGlzLl9tYXJrZG93bixcbiAgICAgICAgZmVhdHVyZXM6IHt9LFxuICAgICAgICBmZWF0dXJlQ29uZmlnczoge1xuICAgICAgICAgIFttaWxrZG93bi5DcmVwZS5GZWF0dXJlLlBsYWNlaG9sZGVyXToge1xuICAgICAgICAgICAgdGV4dDogdGhpcy5jb25maWcucGxhY2Vob2xkZXIgfHwgJ1N0YXJ0IHR5cGluZy4uLicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9jcmVwZS5vbigobGlzdGVuZXI6IGFueSkgPT4ge1xuICAgICAgICBsaXN0ZW5lci5tYXJrZG93blVwZGF0ZWQoKF9jdHg6IGFueSwgbWFya2Rvd246IHN0cmluZywgcHJldk1hcmtkb3duOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAobWFya2Rvd24gIT09IHByZXZNYXJrZG93bikge1xuICAgICAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9tYXJrZG93biA9IG1hcmtkb3duO1xuICAgICAgICAgICAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobWFya2Rvd24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2NyZXBlLmNyZWF0ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZWRpdG9yUmVhZHkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX21hcmtkb3duKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRFZGl0b3JDb250ZW50KHRoaXMuX21hcmtkb3duKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5hdXRvZm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5jb25maWcuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmluaXRpYWxpemVkKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RWRpdG9yQ29udGVudChtYXJrZG93bjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fY3JlcGUuZWRpdG9yLmFjdGlvbigoY3R4OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHZpZXcgPSBjdHguZ2V0KHRoaXMuX2VkaXRvclZpZXdDdHgpO1xuICAgICAgY29uc3QgcGFyc2VyID0gY3R4LmdldCh0aGlzLl9wYXJzZXJDdHgpO1xuICAgICAgY29uc3QgZG9jID0gcGFyc2VyKG1hcmtkb3duKTtcbiAgICAgIGlmIChkb2MpIHtcbiAgICAgICAgY29uc3QgdHIgPSB2aWV3LnN0YXRlLnRyLnJlcGxhY2VXaXRoKFxuICAgICAgICAgIDAsIHZpZXcuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZSwgZG9jLmNvbnRlbnQsXG4gICAgICAgICk7XG4gICAgICAgIHZpZXcuZGlzcGF0Y2godHIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZnMtbGFiZWwtZmllbGRcbiAgW2FwcGVhcmFuY2VdPVwiJ291dGxpbmUnXCJcbiAgW2hvdmVyYWJsZV09XCJ0cnVlXCJcbiAgW3Nob3dPdXRsaW5lXT1cImluaXRpYWxpemVkXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW3BhZGxlc3NdPVwiY29uZmlnLnBhZGxlc3NcIlxuICBbY2xhc3MuaW5pdGlhbGl6ZWRdPVwiaW5pdGlhbGl6ZWRcIj5cbiAgQGlmIChjb25maWcubGFiZWwpIHtcbiAgICA8ZnMtbGFiZWw+XG4gICAgICB7eyBjb25maWcubGFiZWwgfX1cbiAgICA8L2ZzLWxhYmVsPlxuICB9XG4gIDxkaXZcbiAgICBjbGFzcz1cIm1hcmtkb3duLWVkaXRvci1jb250YWluZXJcIlxuICAgIFtpZF09XCJjb250YWluZXJJRFwiPlxuICAgIDxkaXYgI2VkaXRvclJlZj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxmcy1sYWJlbC1tZXNzYWdlPlxuICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLW1lc3NhZ2VcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWhpbnRcIj5cbiAgICAgICAge3sgY29uZmlnLmhpbnQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2ZzLWxhYmVsLW1lc3NhZ2U+XG48L2ZzLWxhYmVsLWZpZWxkPlxuIl19
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYXJrZG93bi1lZGl0b3IvY29tcG9uZW50cy9tYXJrZG93bi1lZGl0b3IvbWFya2Rvd24tZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYXJrZG93bi1lZGl0b3IvY29tcG9uZW50cy9tYXJrZG93bi1lZGl0b3IvbWFya2Rvd24tZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixNQUFNLEdBR1AsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBTWxELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXhFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7QUFnQ2pGLE1BQU0sT0FBTyx5QkFBeUI7SUFHTCxTQUFTLENBQWE7SUFFaEIsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUUxQyxNQUFNLEdBQTJCLEVBQUUs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VSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDO3dCQUNiOzRCQUNFLE9BQU8sRUFBRSxnQkFBZ0I7NEJBQ3pCLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDOzRCQUMxQixVQUFVLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLE1BQU07eUJBQ3ZDO3FCQUNGLGNBQ1csSUFBSSxXQUNQO3dCQUNQLGFBQWE7cUJBQ2Q7OEJBSzhCLFNBQVM7c0JBQXZDLFNBQVM7dUJBQUMsV0FBVztnQkFFZSxZQUFZO3NCQUFoRCxXQUFXO3VCQUFDLGVBQWU7Z0JBRVosTUFBTTtzQkFBckIsS0FBSztnQkFJQyxRQUFRO3NCQUZkLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUl0QixXQUFXO3NCQURqQixXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sQ29udGFpbmVyLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nRm9ybSxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IGd1aWQgfSBmcm9tICdAZmlyZXN0aXRjaC9jb21tb24nO1xuaW1wb3J0IHsgRnNMYWJlbE1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2xhYmVsJztcblxuaW1wb3J0IHR5cGUgeyBDcmVwZSB9IGZyb20gJ0BtaWxrZG93bi9jcmVwZSc7XG5pbXBvcnQgdHlwZSB7IEN0eCB9IGZyb20gJ0BtaWxrZG93bi9raXQvY3R4JztcbmltcG9ydCB0eXBlIHsgZWRpdG9yVmlld0N0eCwgcGFyc2VyQ3R4IH0gZnJvbSAnQG1pbGtkb3duL2tpdC9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGU19NQVJLRE9XTl9FRElUT1JfQ09ORklHIH0gZnJvbSAnLi4vLi4vaW5qZWN0cy9jb25maWcuaW5qZWN0JztcbmltcG9ydCB7IEZzTWFya2Rvd25FZGl0b3JDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL21hcmtkb3duLWVkaXRvci1jb25maWcnO1xuaW1wb3J0IHsgRnNNaWxrZG93bkxvYWRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9taWxrZG93bi1sb2FkZXIuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtbWFya2Rvd24tZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcmtkb3duLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hcmtkb3duLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZzTWFya2Rvd25FZGl0b3JDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRnNNYXJrZG93bkVkaXRvckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdmlld1Byb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsXG4gICAgICBkZXBzOiBbW09wdGlvbmFsLCBOZ0Zvcm1dXSxcbiAgICAgIHVzZUZhY3Rvcnk6IChuZ0Zvcm06IE5nRm9ybSkgPT4gbmdGb3JtLFxuICAgIH0sXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGc0xhYmVsTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc01hcmtkb3duRWRpdG9yQ29tcG9uZW50XG5pbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKCdlZGl0b3JSZWYnKSBwdWJsaWMgZWRpdG9yUmVmOiBFbGVtZW50UmVmO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZm9jdXNlZCcpIHB1YmxpYyBjbGFzc0ZvY3VzZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBwdWJsaWMgY29uZmlnOiBGc01hcmtkb3duRWRpdG9yQ29uZmlnID0ge307XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaW5pdGlhbGl6ZWQnKVxuICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY29udGFpbmVySUQgPSBgZnMtbWFya2Rvd24tZWRpdG9yLSR7Z3VpZCgneHh4Jyl9YDtcbiAgcHVibGljIG9uVG91Y2hlZDogKCkgPT4gdm9pZDtcbiAgcHVibGljIG9uQ2hhbmdlOiAoZGF0YTogYW55KSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX2NyZXBlOiBDcmVwZTtcbiAgcHJpdmF0ZSBfZWRpdG9yVmlld0N0eDogdHlwZW9mIGVkaXRvclZpZXdDdHg7XG4gIHByaXZhdGUgX3BhcnNlckN0eDogdHlwZW9mIHBhcnNlckN0eDtcbiAgcHJpdmF0ZSBfbWFya2Rvd24gPSAnJztcbiAgcHJpdmF0ZSBfZWRpdG9yUmVhZHkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9kZWZhdWx0Q29uZmlnID0gaW5qZWN0PEZzTWFya2Rvd25FZGl0b3JDb25maWc+KEZTX01BUktET1dOX0VESVRPUl9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBfbG9hZGVyID0gaW5qZWN0KEZzTWlsa2Rvd25Mb2FkZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG5cbiAgcHVibGljIGdldCBtYXJrZG93bigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZG93bjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uKHRoaXMuX2RlZmF1bHRDb25maWcgfHwge30pLCAuLi4odGhpcy5jb25maWcgfHwge30pIH07XG4gICAgdGhpcy5fbG9hZGVyLmxvYWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fbG9hZGVyLmxvYWRlZCRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChsb2FkZWQpID0+IHtcbiAgICAgICAgaWYgKGxvYWRlZCkge1xuICAgICAgICAgIHRoaXMuX2luaXRFZGl0b3IoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZShtYXJrZG93bjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fbWFya2Rvd24gPSBtYXJrZG93biB8fCAnJztcblxuICAgIGlmICh0aGlzLl9lZGl0b3JSZWFkeSkge1xuICAgICAgdGhpcy5fc2V0RWRpdG9yQ29udGVudCh0aGlzLl9tYXJrZG93bik7XG4gICAgfVxuXG4gICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKGRhdGE6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IGVycjogYW55ID0ge307XG4gICAgaWYgKHRoaXMuY29uZmlnLm1heExlbmd0aCAmJiB0aGlzLl9tYXJrZG93bikge1xuICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5fbWFya2Rvd24ubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCA+IHRoaXMuY29uZmlnLm1heExlbmd0aCkge1xuICAgICAgICBlcnIubWF4TGVuZ3RoRXJyb3IgPSBgTXVzdCBiZSAke3RoaXMuY29uZmlnLm1heExlbmd0aH0gY2hhcmFjdGVycyBvciBmZXdlci4gWW91IGVudGVyZWQgJHtsZW5ndGh9IGNoYXJhY3RlcnMuYDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyKS5sZW5ndGggPyBlcnIgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVWYWx1ZSgnJyk7XG4gICAgaWYgKHRoaXMub25DaGFuZ2UpIHtcbiAgICAgIHRoaXMub25DaGFuZ2UoJycpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRNYXJrZG93bihtYXJrZG93bjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy53cml0ZVZhbHVlKG1hcmtkb3duKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYXJrZG93bigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fY3JlcGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9tYXJrZG93bjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY3JlcGUuZ2V0TWFya2Rvd24oKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY3JlcGUgJiYgdGhpcy5fZWRpdG9yVmlld0N0eCkge1xuICAgICAgdGhpcy5fY3JlcGUuZWRpdG9yLmFjdGlvbigoY3R4OiBDdHgpID0+IHtcbiAgICAgICAgY29uc3QgdmlldyA9IGN0eC5nZXQodGhpcy5fZWRpdG9yVmlld0N0eCk7XG4gICAgICAgIHZpZXcuZm9jdXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NyZXBlKSB7XG4gICAgICB0aGlzLl9jcmVwZS5kZXN0cm95KCk7XG4gICAgICB0aGlzLl9jcmVwZSA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuX2VkaXRvclJlYWR5ID0gZmFsc2U7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEVkaXRvcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY3JlcGUgfHwgIXRoaXMuZWRpdG9yUmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWlsa2Rvd24gPSAod2luZG93IGFzIGFueSkuX19NSUxLRE9XTl9fO1xuICAgIGlmICghbWlsa2Rvd24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01pbGtkb3duIG5vdCBsb2FkZWQuIEVuc3VyZSBhc3NldHMgYXJlIGNvbmZpZ3VyZWQuJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9lZGl0b3JWaWV3Q3R4ID0gbWlsa2Rvd24uZWRpdG9yVmlld0N0eDtcbiAgICB0aGlzLl9wYXJzZXJDdHggPSBtaWxrZG93bi5wYXJzZXJDdHg7XG5cbiAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX2NyZXBlID0gbmV3IG1pbGtkb3duLkNyZXBlKHtcbiAgICAgICAgcm9vdDogdGhpcy5lZGl0b3JSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB0aGlzLl9tYXJrZG93bixcbiAgICAgICAgZmVhdHVyZXM6IHt9LFxuICAgICAgICBmZWF0dXJlQ29uZmlnczoge1xuICAgICAgICAgIFttaWxrZG93bi5DcmVwZS5GZWF0dXJlLlBsYWNlaG9sZGVyXToge1xuICAgICAgICAgICAgdGV4dDogdGhpcy5jb25maWcucGxhY2Vob2xkZXIgfHwgJ1N0YXJ0IHR5cGluZy4uLicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9jcmVwZS5jcmVhdGUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2VkaXRvclJlYWR5ID0gdHJ1ZTtcblxuICAgICAgICAgIHRoaXMuX3NldHVwQ2hhbmdlVHJhY2tpbmcoKTtcblxuICAgICAgICAgIGlmICh0aGlzLl9tYXJrZG93bikge1xuICAgICAgICAgICAgdGhpcy5fc2V0RWRpdG9yQ29udGVudCh0aGlzLl9tYXJrZG93bik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgICBpZiAodGhpcy5jb25maWcuYXV0b2ZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5pbml0aWFsaXplZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwQ2hhbmdlVHJhY2tpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5fY3JlcGUuZWRpdG9yLmFjdGlvbigoY3R4OiBDdHgpID0+IHtcbiAgICAgIGNvbnN0IHZpZXcgPSBjdHguZ2V0KHRoaXMuX2VkaXRvclZpZXdDdHgpO1xuICAgICAgY29uc3Qgb3JpZ2luYWxEaXNwYXRjaCA9IHZpZXcuZGlzcGF0Y2guYmluZCh2aWV3KTtcbiAgICAgIHZpZXcuZGlzcGF0Y2ggPSAodHI6IGFueSkgPT4ge1xuICAgICAgICBvcmlnaW5hbERpc3BhdGNoKHRyKTtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQgJiYgdHIuZG9jQ2hhbmdlZCAmJiAhdHIuZ2V0TWV0YSgncHJvZ3JhbW1hdGljJykpIHtcbiAgICAgICAgICBjb25zdCBtYXJrZG93biA9IHRoaXMuX2NyZXBlLmdldE1hcmtkb3duKCk7XG4gICAgICAgICAgaWYgKG1hcmtkb3duICE9PSB0aGlzLl9tYXJrZG93bikge1xuICAgICAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9tYXJrZG93biA9IG1hcmtkb3duO1xuICAgICAgICAgICAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fbWFya2Rvd24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRFZGl0b3JDb250ZW50KG1hcmtkb3duOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9jcmVwZS5lZGl0b3IuYWN0aW9uKChjdHg6IEN0eCkgPT4ge1xuICAgICAgY29uc3QgdmlldyA9IGN0eC5nZXQodGhpcy5fZWRpdG9yVmlld0N0eCk7XG4gICAgICBjb25zdCBwYXJzZXIgPSBjdHguZ2V0KHRoaXMuX3BhcnNlckN0eCk7XG4gICAgICBjb25zdCBkb2MgPSBwYXJzZXIobWFya2Rvd24pO1xuICAgICAgaWYgKGRvYykge1xuICAgICAgICBjb25zdCB0ciA9IHZpZXcuc3RhdGUudHIucmVwbGFjZVdpdGgoXG4gICAgICAgICAgMCwgdmlldy5zdGF0ZS5kb2MuY29udGVudC5zaXplLCBkb2MuY29udGVudCxcbiAgICAgICAgKTtcbiAgICAgICAgdHIuc2V0TWV0YSgncHJvZ3JhbW1hdGljJywgdHJ1ZSk7XG4gICAgICAgIHZpZXcuZGlzcGF0Y2godHIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZnMtbGFiZWwtZmllbGRcbiAgW2FwcGVhcmFuY2VdPVwiJ291dGxpbmUnXCJcbiAgW2hvdmVyYWJsZV09XCJ0cnVlXCJcbiAgW3Nob3dPdXRsaW5lXT1cImluaXRpYWxpemVkXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW3BhZGxlc3NdPVwiY29uZmlnLnBhZGxlc3NcIlxuICBbY2xhc3MuaW5pdGlhbGl6ZWRdPVwiaW5pdGlhbGl6ZWRcIj5cbiAgQGlmIChjb25maWcubGFiZWwpIHtcbiAgICA8ZnMtbGFiZWw+XG4gICAgICB7eyBjb25maWcubGFiZWwgfX1cbiAgICA8L2ZzLWxhYmVsPlxuICB9XG4gIDxkaXZcbiAgICBjbGFzcz1cIm1hcmtkb3duLWVkaXRvci1jb250YWluZXJcIlxuICAgIFtpZF09XCJjb250YWluZXJJRFwiPlxuICAgIDxkaXYgI2VkaXRvclJlZj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxmcy1sYWJlbC1tZXNzYWdlPlxuICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLW1lc3NhZ2VcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWhpbnRcIj5cbiAgICAgICAge3sgY29uZmlnLmhpbnQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2ZzLWxhYmVsLW1lc3NhZ2U+XG48L2ZzLWxhYmVsLWZpZWxkPlxuIl19
|
|
@@ -218,29 +218,14 @@ class FsMarkdownEditorComponent {
|
|
|
218
218
|
},
|
|
219
219
|
},
|
|
220
220
|
});
|
|
221
|
-
this._crepe.on((listener) => {
|
|
222
|
-
listener.markdownUpdated((_ctx, markdown, prevMarkdown) => {
|
|
223
|
-
if (markdown !== prevMarkdown) {
|
|
224
|
-
this._zone.run(() => {
|
|
225
|
-
this._markdown = markdown;
|
|
226
|
-
if (this.onChange) {
|
|
227
|
-
this.onChange(markdown);
|
|
228
|
-
}
|
|
229
|
-
if (this.onTouched) {
|
|
230
|
-
this.onTouched();
|
|
231
|
-
}
|
|
232
|
-
this._cdRef.markForCheck();
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
});
|
|
236
|
-
});
|
|
237
221
|
this._crepe.create().then(() => {
|
|
238
222
|
this._zone.run(() => {
|
|
239
223
|
this._editorReady = true;
|
|
240
|
-
this.
|
|
224
|
+
this._setupChangeTracking();
|
|
241
225
|
if (this._markdown) {
|
|
242
226
|
this._setEditorContent(this._markdown);
|
|
243
227
|
}
|
|
228
|
+
this.initialized = true;
|
|
244
229
|
this._cdRef.markForCheck();
|
|
245
230
|
if (this.config.autofocus) {
|
|
246
231
|
this.focus();
|
|
@@ -252,6 +237,30 @@ class FsMarkdownEditorComponent {
|
|
|
252
237
|
});
|
|
253
238
|
});
|
|
254
239
|
}
|
|
240
|
+
_setupChangeTracking() {
|
|
241
|
+
this._crepe.editor.action((ctx) => {
|
|
242
|
+
const view = ctx.get(this._editorViewCtx);
|
|
243
|
+
const originalDispatch = view.dispatch.bind(view);
|
|
244
|
+
view.dispatch = (tr) => {
|
|
245
|
+
originalDispatch(tr);
|
|
246
|
+
if (this.initialized && tr.docChanged && !tr.getMeta('programmatic')) {
|
|
247
|
+
const markdown = this._crepe.getMarkdown();
|
|
248
|
+
if (markdown !== this._markdown) {
|
|
249
|
+
this._zone.run(() => {
|
|
250
|
+
this._markdown = markdown;
|
|
251
|
+
if (this.onChange) {
|
|
252
|
+
this.onChange(this._markdown);
|
|
253
|
+
}
|
|
254
|
+
if (this.onTouched) {
|
|
255
|
+
this.onTouched();
|
|
256
|
+
}
|
|
257
|
+
this._cdRef.markForCheck();
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
});
|
|
263
|
+
}
|
|
255
264
|
_setEditorContent(markdown) {
|
|
256
265
|
this._crepe.editor.action((ctx) => {
|
|
257
266
|
const view = ctx.get(this._editorViewCtx);
|
|
@@ -259,6 +268,7 @@ class FsMarkdownEditorComponent {
|
|
|
259
268
|
const doc = parser(markdown);
|
|
260
269
|
if (doc) {
|
|
261
270
|
const tr = view.state.tr.replaceWith(0, view.state.doc.content.size, doc.content);
|
|
271
|
+
tr.setMeta('programmatic', true);
|
|
262
272
|
view.dispatch(tr);
|
|
263
273
|
}
|
|
264
274
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestitch-markdown-editor.mjs","sources":["../../src/app/modules/markdown-editor/injects/config.inject.ts","../../src/app/modules/markdown-editor/services/milkdown-loader.service.ts","../../src/app/modules/markdown-editor/components/markdown-editor/markdown-editor.component.ts","../../src/app/modules/markdown-editor/components/markdown-editor/markdown-editor.component.html","../../src/app/modules/markdown-editor/fs-markdown-editor.module.ts","../../src/app/modules/markdown-renderer/components/markdown-renderer/markdown-renderer.component.ts","../../src/app/modules/markdown-renderer/components/markdown-renderer/markdown-renderer.component.html","../../src/firestitch-markdown-editor.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FS_MARKDOWN_EDITOR_DEFAULT_CONFIG = new InjectionToken<any[]>('fs-markdown-editor.default-config');\nexport const FS_MARKDOWN_EDITOR_CONFIG = new InjectionToken<any[]>('fs-markdown-editor.config');\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\nconst ASSET_BASE = '/assets/markdown-editor/';\n\nconst STYLESHEETS = [\n `${ASSET_BASE}theme/common/block-edit.css`,\n `${ASSET_BASE}theme/common/code-mirror.css`,\n `${ASSET_BASE}theme/common/cursor.css`,\n `${ASSET_BASE}theme/common/image-block.css`,\n `${ASSET_BASE}theme/common/latex.css`,\n `${ASSET_BASE}theme/common/link-tooltip.css`,\n `${ASSET_BASE}theme/common/list-item.css`,\n `${ASSET_BASE}theme/common/placeholder.css`,\n `${ASSET_BASE}theme/common/toolbar.css`,\n `${ASSET_BASE}theme/common/table.css`,\n];\n\nconst SCRIPT = `${ASSET_BASE}milkdown.js`;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FsMilkdownLoaderService {\n private _document = inject<Document>(DOCUMENT);\n private _loaded = new BehaviorSubject(false);\n private _loading = false;\n\n private _loaded$ = this._loaded.asObservable()\n .pipe(\n shareReplay(1),\n );\n\n public get loaded$(): Observable<boolean> {\n return this._loaded$;\n }\n\n public load(): void {\n if (this._loaded.value || this._loading) {\n if (this._loaded.value) {\n this._loaded.next(true);\n }\n\n return;\n }\n\n this._loading = true;\n\n let stylesRemaining = STYLESHEETS.length;\n let scriptDone = false;\n\n const checkComplete = () => {\n if (stylesRemaining === 0 && scriptDone) {\n this._loading = false;\n this._loaded.next(true);\n }\n };\n\n const onStyleDone = () => {\n stylesRemaining--;\n checkComplete();\n };\n\n STYLESHEETS.forEach((href) => {\n if (this._document.querySelector(`link[href=\"${href}\"]`)) {\n onStyleDone();\n\n return;\n }\n\n const link = this._document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.onload = onStyleDone;\n link.onerror = onStyleDone;\n this._document.head.appendChild(link);\n });\n\n if (this._document.querySelector(`script[src=\"${SCRIPT}\"]`)) {\n scriptDone = true;\n checkComplete();\n\n return;\n }\n\n const script = this._document.createElement('script');\n script.src = SCRIPT;\n script.onload = () => {\n scriptDone = true;\n checkComplete();\n };\n script.onerror = () => {\n scriptDone = true;\n checkComplete();\n };\n this._document.head.appendChild(script);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild,\n} from '@angular/core';\nimport {\n ControlContainer,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgForm,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\n\nimport { guid } from '@firestitch/common';\nimport { FsLabelModule } from '@firestitch/label';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FS_MARKDOWN_EDITOR_CONFIG } from '../../injects/config.inject';\nimport { FsMarkdownEditorConfig } from '../../interfaces/markdown-editor-config';\nimport { FsMilkdownLoaderService } from '../../services/milkdown-loader.service';\n\n\n@Component({\n selector: 'fs-markdown-editor',\n templateUrl: './markdown-editor.component.html',\n styleUrls: ['./markdown-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FsMarkdownEditorComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => FsMarkdownEditorComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n {\n provide: ControlContainer,\n deps: [[Optional, NgForm]],\n useFactory: (ngForm: NgForm) => ngForm,\n },\n ],\n standalone: true,\n imports: [\n FsLabelModule,\n ],\n})\nexport class FsMarkdownEditorComponent\nimplements OnInit, AfterViewInit, ControlValueAccessor, Validator, OnDestroy {\n\n @ViewChild('editorRef') public editorRef: ElementRef;\n\n @HostBinding('class.focused') public classFocused = false;\n\n @Input() public config: FsMarkdownEditorConfig = {};\n\n @Input()\n @HostBinding('class.disabled')\n public disabled = false;\n\n @HostBinding('class.initialized')\n public initialized = false;\n\n public readonly containerID = `fs-markdown-editor-${guid('xxx')}`;\n public onTouched: () => void;\n public onChange: (data: any) => void;\n\n private _crepe: any;\n private _editorViewCtx: any;\n private _parserCtx: any;\n private _markdown = '';\n private _editorReady = false;\n private _destroy$ = new Subject<void>();\n private _defaultConfig = inject<FsMarkdownEditorConfig>(FS_MARKDOWN_EDITOR_CONFIG, { optional: true });\n private _cdRef = inject(ChangeDetectorRef);\n private _loader = inject(FsMilkdownLoaderService);\n private _zone = inject(NgZone);\n\n\n public get markdown(): string {\n return this._markdown;\n }\n\n public ngOnInit(): void {\n this.config = { ...(this._defaultConfig || {}), ...(this.config || {}) };\n this._loader.load();\n }\n\n public ngAfterViewInit(): void {\n this._loader.loaded$\n .pipe(takeUntil(this._destroy$))\n .subscribe((loaded) => {\n if (loaded) {\n this._initEditor();\n }\n });\n }\n\n public writeValue(markdown: string): void {\n this._markdown = markdown || '';\n\n if (this._editorReady) {\n this._setEditorContent(this._markdown);\n }\n\n this._cdRef.markForCheck();\n }\n\n public registerOnChange(fn: (data: any) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(): ValidationErrors | null {\n const err: any = {};\n if (this.config.maxLength && this._markdown) {\n const length = this._markdown.length;\n if (length > this.config.maxLength) {\n err.maxLengthError = `Must be ${this.config.maxLength} characters or fewer. You entered ${length} characters.`;\n }\n }\n\n return Object.keys(err).length ? err : null;\n }\n\n public clear(): void {\n this.writeValue('');\n if (this.onChange) {\n this.onChange('');\n }\n }\n\n public setMarkdown(markdown: string): void {\n this.writeValue(markdown);\n }\n\n public getMarkdown(): string {\n if (!this._crepe) {\n return this._markdown;\n }\n\n return this._crepe.getMarkdown();\n }\n\n public focus(): void {\n if (this._crepe && this._editorViewCtx) {\n this._crepe.editor.action((ctx: any) => {\n const view = ctx.get(this._editorViewCtx);\n view.focus();\n });\n }\n }\n\n public disable(): void {\n this.disabled = true;\n this._cdRef.markForCheck();\n }\n\n public destroy(): void {\n if (this._crepe) {\n this._crepe.destroy();\n this._crepe = null;\n }\n this._editorReady = false;\n this.initialized = false;\n this._cdRef.markForCheck();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n this.destroy();\n }\n\n private _initEditor(): void {\n if (this._crepe || !this.editorRef) {\n return;\n }\n\n const milkdown = (window as any).__MILKDOWN__;\n if (!milkdown) {\n console.error('Milkdown not loaded. Ensure assets are configured.');\n\n return;\n }\n\n this._editorViewCtx = milkdown.editorViewCtx;\n this._parserCtx = milkdown.parserCtx;\n\n this._zone.runOutsideAngular(() => {\n this._crepe = new milkdown.Crepe({\n root: this.editorRef.nativeElement,\n defaultValue: this._markdown,\n features: {},\n featureConfigs: {\n [milkdown.Crepe.Feature.Placeholder]: {\n text: this.config.placeholder || 'Start typing...',\n },\n },\n });\n\n this._crepe.on((listener: any) => {\n listener.markdownUpdated((_ctx: any, markdown: string, prevMarkdown: string) => {\n if (markdown !== prevMarkdown) {\n this._zone.run(() => {\n this._markdown = markdown;\n if (this.onChange) {\n this.onChange(markdown);\n }\n if (this.onTouched) {\n this.onTouched();\n }\n this._cdRef.markForCheck();\n });\n }\n });\n });\n\n this._crepe.create().then(() => {\n this._zone.run(() => {\n this._editorReady = true;\n this.initialized = true;\n\n if (this._markdown) {\n this._setEditorContent(this._markdown);\n }\n\n this._cdRef.markForCheck();\n\n if (this.config.autofocus) {\n this.focus();\n }\n\n if (this.config.initialized) {\n this.config.initialized();\n }\n });\n });\n });\n }\n\n private _setEditorContent(markdown: string): void {\n this._crepe.editor.action((ctx: any) => {\n const view = ctx.get(this._editorViewCtx);\n const parser = ctx.get(this._parserCtx);\n const doc = parser(markdown);\n if (doc) {\n const tr = view.state.tr.replaceWith(\n 0, view.state.doc.content.size, doc.content,\n );\n view.dispatch(tr);\n }\n });\n }\n}\n","<fs-label-field\n [appearance]=\"'outline'\"\n [hoverable]=\"true\"\n [showOutline]=\"initialized\"\n [disabled]=\"disabled\"\n [padless]=\"config.padless\"\n [class.initialized]=\"initialized\">\n @if (config.label) {\n <fs-label>\n {{ config.label }}\n </fs-label>\n }\n <div\n class=\"markdown-editor-container\"\n [id]=\"containerID\">\n <div #editorRef></div>\n </div>\n <fs-label-message>\n <div class=\"fs-form-message\">\n <div class=\"fs-form-hint\">\n {{ config.hint }}\n </div>\n </div>\n </fs-label-message>\n</fs-label-field>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { FsLabelModule } from '@firestitch/label';\n\nimport { FsMarkdownEditorComponent } from './components/markdown-editor/markdown-editor.component';\nimport { FS_MARKDOWN_EDITOR_CONFIG, FS_MARKDOWN_EDITOR_DEFAULT_CONFIG } from './injects/config.inject';\nimport { FsMarkdownEditorConfig } from './interfaces/markdown-editor-config';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FsLabelModule,\n FsMarkdownEditorComponent,\n ],\n exports: [\n FsMarkdownEditorComponent,\n ],\n})\nexport class FsMarkdownEditorModule {\n public static forRoot(config: FsMarkdownEditorConfig = {}): ModuleWithProviders<FsMarkdownEditorModule> {\n return {\n ngModule: FsMarkdownEditorModule,\n providers: [\n { provide: FS_MARKDOWN_EDITOR_DEFAULT_CONFIG, useValue: config },\n {\n provide: FS_MARKDOWN_EDITOR_CONFIG,\n useFactory: markdownEditorConfigFactory,\n deps: [FS_MARKDOWN_EDITOR_DEFAULT_CONFIG],\n },\n ],\n };\n }\n}\n\nexport function markdownEditorConfigFactory(config: FsMarkdownEditorConfig) {\n return {\n ...config,\n };\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, inject } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n\n@Component({\n selector: 'fs-markdown-renderer',\n templateUrl: 'markdown-renderer.component.html',\n styleUrls: ['markdown-renderer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class FsMarkdownRendererComponent {\n private _sanitizer = inject(DomSanitizer);\n private _cdRef = inject(ChangeDetectorRef);\n\n @Input('markdown') public set setMarkdown(markdown: string) {\n this._rawMarkdown = markdown || '';\n this._renderMarkdown();\n }\n\n public renderedHtml: SafeHtml;\n\n private _rawMarkdown = '';\n\n private _renderMarkdown(): void {\n const html = this._markdownToHtml(this._rawMarkdown);\n this.renderedHtml = this._sanitizer.bypassSecurityTrustHtml(html);\n this._cdRef.markForCheck();\n }\n\n private _markdownToHtml(markdown: string): string {\n if (!markdown) {\n return '';\n }\n\n let html = markdown;\n\n html = html.replace(/^### (.+)$/gm, '<h3>$1</h3>');\n html = html.replace(/^## (.+)$/gm, '<h2>$1</h2>');\n html = html.replace(/^# (.+)$/gm, '<h1>$1</h1>');\n\n html = html.replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>');\n html = html.replace(/\\*(.+?)\\*/g, '<em>$1</em>');\n html = html.replace(/~~(.+?)~~/g, '<del>$1</del>');\n html = html.replace(/`([^`]+)`/g, '<code>$1</code>');\n\n html = html.replace(/```(\\w*)\\n([\\s\\S]*?)```/g, '<pre><code class=\"language-$1\">$2</code></pre>');\n\n html = html.replace(/^\\> (.+)$/gm, '<blockquote>$1</blockquote>');\n\n html = html.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a href=\"$2\">$1</a>');\n\n html = html.replace(/\\n/g, '<br>');\n\n return html;\n }\n}\n","<div class=\"fs-markdown-renderer\" [innerHtml]=\"renderedHtml\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"firestitch-markdown-editor.mjs","sources":["../../src/app/modules/markdown-editor/injects/config.inject.ts","../../src/app/modules/markdown-editor/services/milkdown-loader.service.ts","../../src/app/modules/markdown-editor/components/markdown-editor/markdown-editor.component.ts","../../src/app/modules/markdown-editor/components/markdown-editor/markdown-editor.component.html","../../src/app/modules/markdown-editor/fs-markdown-editor.module.ts","../../src/app/modules/markdown-renderer/components/markdown-renderer/markdown-renderer.component.ts","../../src/app/modules/markdown-renderer/components/markdown-renderer/markdown-renderer.component.html","../../src/firestitch-markdown-editor.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FS_MARKDOWN_EDITOR_DEFAULT_CONFIG = new InjectionToken<any[]>('fs-markdown-editor.default-config');\nexport const FS_MARKDOWN_EDITOR_CONFIG = new InjectionToken<any[]>('fs-markdown-editor.config');\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\nconst ASSET_BASE = '/assets/markdown-editor/';\n\nconst STYLESHEETS = [\n `${ASSET_BASE}theme/common/block-edit.css`,\n `${ASSET_BASE}theme/common/code-mirror.css`,\n `${ASSET_BASE}theme/common/cursor.css`,\n `${ASSET_BASE}theme/common/image-block.css`,\n `${ASSET_BASE}theme/common/latex.css`,\n `${ASSET_BASE}theme/common/link-tooltip.css`,\n `${ASSET_BASE}theme/common/list-item.css`,\n `${ASSET_BASE}theme/common/placeholder.css`,\n `${ASSET_BASE}theme/common/toolbar.css`,\n `${ASSET_BASE}theme/common/table.css`,\n];\n\nconst SCRIPT = `${ASSET_BASE}milkdown.js`;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FsMilkdownLoaderService {\n private _document = inject<Document>(DOCUMENT);\n private _loaded = new BehaviorSubject(false);\n private _loading = false;\n\n private _loaded$ = this._loaded.asObservable()\n .pipe(\n shareReplay(1),\n );\n\n public get loaded$(): Observable<boolean> {\n return this._loaded$;\n }\n\n public load(): void {\n if (this._loaded.value || this._loading) {\n if (this._loaded.value) {\n this._loaded.next(true);\n }\n\n return;\n }\n\n this._loading = true;\n\n let stylesRemaining = STYLESHEETS.length;\n let scriptDone = false;\n\n const checkComplete = () => {\n if (stylesRemaining === 0 && scriptDone) {\n this._loading = false;\n this._loaded.next(true);\n }\n };\n\n const onStyleDone = () => {\n stylesRemaining--;\n checkComplete();\n };\n\n STYLESHEETS.forEach((href) => {\n if (this._document.querySelector(`link[href=\"${href}\"]`)) {\n onStyleDone();\n\n return;\n }\n\n const link = this._document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.onload = onStyleDone;\n link.onerror = onStyleDone;\n this._document.head.appendChild(link);\n });\n\n if (this._document.querySelector(`script[src=\"${SCRIPT}\"]`)) {\n scriptDone = true;\n checkComplete();\n\n return;\n }\n\n const script = this._document.createElement('script');\n script.src = SCRIPT;\n script.onload = () => {\n scriptDone = true;\n checkComplete();\n };\n script.onerror = () => {\n scriptDone = true;\n checkComplete();\n };\n this._document.head.appendChild(script);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild,\n} from '@angular/core';\nimport {\n ControlContainer,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgForm,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\n\nimport { guid } from '@firestitch/common';\nimport { FsLabelModule } from '@firestitch/label';\n\nimport type { Crepe } from '@milkdown/crepe';\nimport type { Ctx } from '@milkdown/kit/ctx';\nimport type { editorViewCtx, parserCtx } from '@milkdown/kit/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FS_MARKDOWN_EDITOR_CONFIG } from '../../injects/config.inject';\nimport { FsMarkdownEditorConfig } from '../../interfaces/markdown-editor-config';\nimport { FsMilkdownLoaderService } from '../../services/milkdown-loader.service';\n\n\n@Component({\n selector: 'fs-markdown-editor',\n templateUrl: './markdown-editor.component.html',\n styleUrls: ['./markdown-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FsMarkdownEditorComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => FsMarkdownEditorComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n {\n provide: ControlContainer,\n deps: [[Optional, NgForm]],\n useFactory: (ngForm: NgForm) => ngForm,\n },\n ],\n standalone: true,\n imports: [\n FsLabelModule,\n ],\n})\nexport class FsMarkdownEditorComponent\nimplements OnInit, AfterViewInit, ControlValueAccessor, Validator, OnDestroy {\n\n @ViewChild('editorRef') public editorRef: ElementRef;\n\n @HostBinding('class.focused') public classFocused = false;\n\n @Input() public config: FsMarkdownEditorConfig = {};\n\n @Input()\n @HostBinding('class.disabled')\n public disabled = false;\n\n @HostBinding('class.initialized')\n public initialized = false;\n\n public readonly containerID = `fs-markdown-editor-${guid('xxx')}`;\n public onTouched: () => void;\n public onChange: (data: any) => void;\n\n private _crepe: Crepe;\n private _editorViewCtx: typeof editorViewCtx;\n private _parserCtx: typeof parserCtx;\n private _markdown = '';\n private _editorReady = false;\n private _destroy$ = new Subject<void>();\n private _defaultConfig = inject<FsMarkdownEditorConfig>(FS_MARKDOWN_EDITOR_CONFIG, { optional: true });\n private _cdRef = inject(ChangeDetectorRef);\n private _loader = inject(FsMilkdownLoaderService);\n private _zone = inject(NgZone);\n\n\n public get markdown(): string {\n return this._markdown;\n }\n\n public ngOnInit(): void {\n this.config = { ...(this._defaultConfig || {}), ...(this.config || {}) };\n this._loader.load();\n }\n\n public ngAfterViewInit(): void {\n this._loader.loaded$\n .pipe(takeUntil(this._destroy$))\n .subscribe((loaded) => {\n if (loaded) {\n this._initEditor();\n }\n });\n }\n\n public writeValue(markdown: string): void {\n this._markdown = markdown || '';\n\n if (this._editorReady) {\n this._setEditorContent(this._markdown);\n }\n\n this._cdRef.markForCheck();\n }\n\n public registerOnChange(fn: (data: any) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(): ValidationErrors | null {\n const err: any = {};\n if (this.config.maxLength && this._markdown) {\n const length = this._markdown.length;\n if (length > this.config.maxLength) {\n err.maxLengthError = `Must be ${this.config.maxLength} characters or fewer. You entered ${length} characters.`;\n }\n }\n\n return Object.keys(err).length ? err : null;\n }\n\n public clear(): void {\n this.writeValue('');\n if (this.onChange) {\n this.onChange('');\n }\n }\n\n public setMarkdown(markdown: string): void {\n this.writeValue(markdown);\n }\n\n public getMarkdown(): string {\n if (!this._crepe) {\n return this._markdown;\n }\n\n return this._crepe.getMarkdown();\n }\n\n public focus(): void {\n if (this._crepe && this._editorViewCtx) {\n this._crepe.editor.action((ctx: Ctx) => {\n const view = ctx.get(this._editorViewCtx);\n view.focus();\n });\n }\n }\n\n public disable(): void {\n this.disabled = true;\n this._cdRef.markForCheck();\n }\n\n public destroy(): void {\n if (this._crepe) {\n this._crepe.destroy();\n this._crepe = null;\n }\n this._editorReady = false;\n this.initialized = false;\n this._cdRef.markForCheck();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n this.destroy();\n }\n\n private _initEditor(): void {\n if (this._crepe || !this.editorRef) {\n return;\n }\n\n const milkdown = (window as any).__MILKDOWN__;\n if (!milkdown) {\n console.error('Milkdown not loaded. Ensure assets are configured.');\n\n return;\n }\n\n this._editorViewCtx = milkdown.editorViewCtx;\n this._parserCtx = milkdown.parserCtx;\n\n this._zone.runOutsideAngular(() => {\n this._crepe = new milkdown.Crepe({\n root: this.editorRef.nativeElement,\n defaultValue: this._markdown,\n features: {},\n featureConfigs: {\n [milkdown.Crepe.Feature.Placeholder]: {\n text: this.config.placeholder || 'Start typing...',\n },\n },\n });\n\n this._crepe.create().then(() => {\n this._zone.run(() => {\n this._editorReady = true;\n\n this._setupChangeTracking();\n\n if (this._markdown) {\n this._setEditorContent(this._markdown);\n }\n\n this.initialized = true;\n this._cdRef.markForCheck();\n\n if (this.config.autofocus) {\n this.focus();\n }\n\n if (this.config.initialized) {\n this.config.initialized();\n }\n });\n });\n });\n }\n\n private _setupChangeTracking(): void {\n this._crepe.editor.action((ctx: Ctx) => {\n const view = ctx.get(this._editorViewCtx);\n const originalDispatch = view.dispatch.bind(view);\n view.dispatch = (tr: any) => {\n originalDispatch(tr);\n if (this.initialized && tr.docChanged && !tr.getMeta('programmatic')) {\n const markdown = this._crepe.getMarkdown();\n if (markdown !== this._markdown) {\n this._zone.run(() => {\n this._markdown = markdown;\n if (this.onChange) {\n this.onChange(this._markdown);\n }\n if (this.onTouched) {\n this.onTouched();\n }\n this._cdRef.markForCheck();\n });\n }\n }\n };\n });\n }\n\n private _setEditorContent(markdown: string): void {\n this._crepe.editor.action((ctx: Ctx) => {\n const view = ctx.get(this._editorViewCtx);\n const parser = ctx.get(this._parserCtx);\n const doc = parser(markdown);\n if (doc) {\n const tr = view.state.tr.replaceWith(\n 0, view.state.doc.content.size, doc.content,\n );\n tr.setMeta('programmatic', true);\n view.dispatch(tr);\n }\n });\n }\n}\n","<fs-label-field\n [appearance]=\"'outline'\"\n [hoverable]=\"true\"\n [showOutline]=\"initialized\"\n [disabled]=\"disabled\"\n [padless]=\"config.padless\"\n [class.initialized]=\"initialized\">\n @if (config.label) {\n <fs-label>\n {{ config.label }}\n </fs-label>\n }\n <div\n class=\"markdown-editor-container\"\n [id]=\"containerID\">\n <div #editorRef></div>\n </div>\n <fs-label-message>\n <div class=\"fs-form-message\">\n <div class=\"fs-form-hint\">\n {{ config.hint }}\n </div>\n </div>\n </fs-label-message>\n</fs-label-field>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { FsLabelModule } from '@firestitch/label';\n\nimport { FsMarkdownEditorComponent } from './components/markdown-editor/markdown-editor.component';\nimport { FS_MARKDOWN_EDITOR_CONFIG, FS_MARKDOWN_EDITOR_DEFAULT_CONFIG } from './injects/config.inject';\nimport { FsMarkdownEditorConfig } from './interfaces/markdown-editor-config';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FsLabelModule,\n FsMarkdownEditorComponent,\n ],\n exports: [\n FsMarkdownEditorComponent,\n ],\n})\nexport class FsMarkdownEditorModule {\n public static forRoot(config: FsMarkdownEditorConfig = {}): ModuleWithProviders<FsMarkdownEditorModule> {\n return {\n ngModule: FsMarkdownEditorModule,\n providers: [\n { provide: FS_MARKDOWN_EDITOR_DEFAULT_CONFIG, useValue: config },\n {\n provide: FS_MARKDOWN_EDITOR_CONFIG,\n useFactory: markdownEditorConfigFactory,\n deps: [FS_MARKDOWN_EDITOR_DEFAULT_CONFIG],\n },\n ],\n };\n }\n}\n\nexport function markdownEditorConfigFactory(config: FsMarkdownEditorConfig) {\n return {\n ...config,\n };\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, inject } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n\n@Component({\n selector: 'fs-markdown-renderer',\n templateUrl: 'markdown-renderer.component.html',\n styleUrls: ['markdown-renderer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class FsMarkdownRendererComponent {\n private _sanitizer = inject(DomSanitizer);\n private _cdRef = inject(ChangeDetectorRef);\n\n @Input('markdown') public set setMarkdown(markdown: string) {\n this._rawMarkdown = markdown || '';\n this._renderMarkdown();\n }\n\n public renderedHtml: SafeHtml;\n\n private _rawMarkdown = '';\n\n private _renderMarkdown(): void {\n const html = this._markdownToHtml(this._rawMarkdown);\n this.renderedHtml = this._sanitizer.bypassSecurityTrustHtml(html);\n this._cdRef.markForCheck();\n }\n\n private _markdownToHtml(markdown: string): string {\n if (!markdown) {\n return '';\n }\n\n let html = markdown;\n\n html = html.replace(/^### (.+)$/gm, '<h3>$1</h3>');\n html = html.replace(/^## (.+)$/gm, '<h2>$1</h2>');\n html = html.replace(/^# (.+)$/gm, '<h1>$1</h1>');\n\n html = html.replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>');\n html = html.replace(/\\*(.+?)\\*/g, '<em>$1</em>');\n html = html.replace(/~~(.+?)~~/g, '<del>$1</del>');\n html = html.replace(/`([^`]+)`/g, '<code>$1</code>');\n\n html = html.replace(/```(\\w*)\\n([\\s\\S]*?)```/g, '<pre><code class=\"language-$1\">$2</code></pre>');\n\n html = html.replace(/^\\> (.+)$/gm, '<blockquote>$1</blockquote>');\n\n html = html.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a href=\"$2\">$1</a>');\n\n html = html.replace(/\\n/g, '<br>');\n\n return html;\n }\n}\n","<div class=\"fs-markdown-renderer\" [innerHtml]=\"renderedHtml\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;AAEO,MAAM,iCAAiC,GAAG,IAAI,cAAc,CAAQ,mCAAmC,CAAC,CAAC;MACnG,yBAAyB,GAAG,IAAI,cAAc,CAAQ,2BAA2B;;ACG9F,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAE9C,MAAM,WAAW,GAAG;AAClB,IAAA,CAAA,EAAG,UAAU,CAA6B,2BAAA,CAAA;AAC1C,IAAA,CAAA,EAAG,UAAU,CAA8B,4BAAA,CAAA;AAC3C,IAAA,CAAA,EAAG,UAAU,CAAyB,uBAAA,CAAA;AACtC,IAAA,CAAA,EAAG,UAAU,CAA8B,4BAAA,CAAA;AAC3C,IAAA,CAAA,EAAG,UAAU,CAAwB,sBAAA,CAAA;AACrC,IAAA,CAAA,EAAG,UAAU,CAA+B,6BAAA,CAAA;AAC5C,IAAA,CAAA,EAAG,UAAU,CAA4B,0BAAA,CAAA;AACzC,IAAA,CAAA,EAAG,UAAU,CAA8B,4BAAA,CAAA;AAC3C,IAAA,CAAA,EAAG,UAAU,CAA0B,wBAAA,CAAA;AACvC,IAAA,CAAA,EAAG,UAAU,CAAwB,sBAAA,CAAA;CACtC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAG,EAAA,UAAU,aAAa,CAAC;MAK7B,uBAAuB,CAAA;AAC1B,IAAA,SAAS,GAAG,MAAM,CAAW,QAAQ,CAAC,CAAC;AACvC,IAAA,OAAO,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,QAAQ,GAAG,KAAK,CAAC;AAEjB,IAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAC3C,SAAA,IAAI,CACH,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEJ,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAEM,IAAI,GAAA;QACT,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvC,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;YAED,OAAO;SACR;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAErB,QAAA,IAAI,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC;QACzC,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,MAAM,aAAa,GAAG,MAAK;AACzB,YAAA,IAAI,eAAe,KAAK,CAAC,IAAI,UAAU,EAAE;AACvC,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;AACH,SAAC,CAAC;QAEF,MAAM,WAAW,GAAG,MAAK;AACvB,YAAA,eAAe,EAAE,CAAC;AAClB,YAAA,aAAa,EAAE,CAAC;AAClB,SAAC,CAAC;AAEF,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC3B,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA,WAAA,EAAc,IAAI,CAAA,EAAA,CAAI,CAAC,EAAE;AACxD,gBAAA,WAAW,EAAE,CAAC;gBAEd,OAAO;aACR;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAClD,YAAA,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC;AACxB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,YAAA,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA,YAAA,EAAe,MAAM,CAAA,EAAA,CAAI,CAAC,EAAE;YAC3D,UAAU,GAAG,IAAI,CAAC;AAClB,YAAA,aAAa,EAAE,CAAC;YAEhB,OAAO;SACR;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACtD,QAAA,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;AACpB,QAAA,MAAM,CAAC,MAAM,GAAG,MAAK;YACnB,UAAU,GAAG,IAAI,CAAC;AAClB,YAAA,aAAa,EAAE,CAAC;AAClB,SAAC,CAAC;AACF,QAAA,MAAM,CAAC,OAAO,GAAG,MAAK;YACpB,UAAU,GAAG,IAAI,CAAC;AAClB,YAAA,aAAa,EAAE,CAAC;AAClB,SAAC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KACzC;uGAzEU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MC6CY,yBAAyB,CAAA;AAGL,IAAA,SAAS,CAAa;IAEhB,YAAY,GAAG,KAAK,CAAC;IAE1C,MAAM,GAA2B,EAAE,CAAC;IAI7C,QAAQ,GAAG,KAAK,CAAC;IAGjB,WAAW,GAAG,KAAK,CAAC;AAEX,IAAA,WAAW,GAAG,CAAsB,mBAAA,EAAA,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3D,IAAA,SAAS,CAAa;AACtB,IAAA,QAAQ,CAAsB;AAE7B,IAAA,MAAM,CAAQ;AACd,IAAA,cAAc,CAAuB;AACrC,IAAA,UAAU,CAAmB;IAC7B,SAAS,GAAG,EAAE,CAAC;IACf,YAAY,GAAG,KAAK,CAAC;AACrB,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;IAChC,cAAc,GAAG,MAAM,CAAyB,yBAAyB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/F,IAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnC,IAAA,OAAO,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAC1C,IAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAG/B,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;AACzE,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACrB;IAEM,eAAe,GAAA;QACpB,IAAI,CAAC,OAAO,CAAC,OAAO;AACjB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;YACpB,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;AACH,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,UAAU,CAAC,QAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,IAAI,EAAE,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACxC;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KAC5B;AAEM,IAAA,gBAAgB,CAAC,EAAuB,EAAA;AAC7C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAEM,IAAA,iBAAiB,CAAC,EAAc,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAEM,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC5B;IAEM,QAAQ,GAAA;QACb,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;AAC3C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACrC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAClC,gBAAA,GAAG,CAAC,cAAc,GAAG,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,SAAS,CAAA,kCAAA,EAAqC,MAAM,CAAA,YAAA,CAAc,CAAC;aAChH;SACF;AAED,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;KAC7C;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACnB;KACF;AAEM,IAAA,WAAW,CAAC,QAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KAC3B;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;AAED,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;KAClC;IAEM,KAAK,GAAA;QACV,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAQ,KAAI;gBACrC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,aAAC,CAAC,CAAC;SACJ;KACF;IAEM,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KAC5B;IAEM,OAAO,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KAC5B;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAEO,WAAW,GAAA;QACjB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAClC,OAAO;SACR;AAED,QAAA,MAAM,QAAQ,GAAI,MAAc,CAAC,YAAY,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YAEpE,OAAO;SACR;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;AAErC,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;AAChC,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC;AAC/B,gBAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa;gBAClC,YAAY,EAAE,IAAI,CAAC,SAAS;AAC5B,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,cAAc,EAAE;oBACd,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,GAAG;AACpC,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,iBAAiB;AACnD,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAK;AAC7B,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAK;AAClB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oBAEzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,oBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,wBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBACxC;AAED,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,oBAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAE3B,oBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;wBACzB,IAAI,CAAC,KAAK,EAAE,CAAC;qBACd;AAED,oBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAC3B,wBAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;qBAC3B;AACH,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;IAEO,oBAAoB,GAAA;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAQ,KAAI;YACrC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1C,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClD,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAO,KAAI;gBAC1B,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACrB,gBAAA,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;oBACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAC3C,oBAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;AAC/B,wBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAK;AAClB,4BAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,4BAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gCAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;6BAC/B;AACD,4BAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gCAClB,IAAI,CAAC,SAAS,EAAE,CAAC;6BAClB;AACD,4BAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAC7B,yBAAC,CAAC,CAAC;qBACJ;iBACF;AACH,aAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,iBAAiB,CAAC,QAAgB,EAAA;QACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAQ,KAAI;YACrC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxC,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,GAAG,EAAE;gBACP,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAClC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAC5C,CAAC;AACF,gBAAA,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACjC,gBAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;aACnB;AACH,SAAC,CAAC,CAAC;KACJ;uGAhOU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAzBzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,ECxDH,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qlBAyBA,ED0CI,MAAA,EAAA,CAAA,yrNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EATA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,aAAA,EAAA;AACb,YAAA;AACE,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC1B,gBAAA,UAAU,EAAE,CAAC,MAAc,KAAK,MAAM;AACvC,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAMU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA7BrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAGnB,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,+BAA+B,CAAC;AACxD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,+BAA+B,CAAC;AACxD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;qBACF,EACgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA;AACb,wBAAA;AACE,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC1B,4BAAA,UAAU,EAAE,CAAC,MAAc,KAAK,MAAM;AACvC,yBAAA;AACF,qBAAA,EAAA,UAAA,EACW,IAAI,EACP,OAAA,EAAA;wBACP,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,qlBAAA,EAAA,MAAA,EAAA,CAAA,yrNAAA,CAAA,EAAA,CAAA;8BAK8B,SAAS,EAAA,CAAA;sBAAvC,SAAS;uBAAC,WAAW,CAAA;gBAEe,YAAY,EAAA,CAAA;sBAAhD,WAAW;uBAAC,eAAe,CAAA;gBAEZ,MAAM,EAAA,CAAA;sBAArB,KAAK;gBAIC,QAAQ,EAAA,CAAA;sBAFd,KAAK;;sBACL,WAAW;uBAAC,gBAAgB,CAAA;gBAItB,WAAW,EAAA,CAAA;sBADjB,WAAW;uBAAC,mBAAmB,CAAA;;;ME/DrB,sBAAsB,CAAA;AAC1B,IAAA,OAAO,OAAO,CAAC,MAAA,GAAiC,EAAE,EAAA;QACvD,OAAO;AACL,YAAA,QAAQ,EAAE,sBAAsB;AAChC,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,iCAAiC,EAAE,QAAQ,EAAE,MAAM,EAAE;AAChE,gBAAA;AACE,oBAAA,OAAO,EAAE,yBAAyB;AAClC,oBAAA,UAAU,EAAE,2BAA2B;oBACvC,IAAI,EAAE,CAAC,iCAAiC,CAAC;AAC1C,iBAAA;AACF,aAAA;SACF,CAAC;KACH;uGAbU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAR/B,YAAY;YACZ,aAAa;AACb,YAAA,yBAAyB,aAGzB,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAGhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAR/B,YAAY;YACZ,aAAa;YACb,yBAAyB,CAAA,EAAA,CAAA,CAAA;;2FAMhB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,yBAAyB;AAC1B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,yBAAyB;AAC1B,qBAAA;AACF,iBAAA,CAAA;;AAiBK,SAAU,2BAA2B,CAAC,MAA8B,EAAA;IACxE,OAAO;AACL,QAAA,GAAG,MAAM;KACV,CAAC;AACJ;;MC7Ba,2BAA2B,CAAA;AAC9B,IAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAClC,IAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE3C,IAA8B,WAAW,CAAC,QAAgB,EAAA;AACxD,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;AAEM,IAAA,YAAY,CAAW;IAEtB,YAAY,GAAG,EAAE,CAAC;IAElB,eAAe,GAAA;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KAC5B;AAEO,IAAA,eAAe,CAAC,QAAgB,EAAA;QACtC,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,EAAE,CAAC;SACX;QAED,IAAI,IAAI,GAAG,QAAQ,CAAC;QAEpB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QACnD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QAClD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAEjD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAC7D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACjD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QACnD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;QAErD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,gDAAgD,CAAC,CAAC;QAElG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,6BAA6B,CAAC,CAAC;QAElE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,CAAC;QAEvE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAEnC,QAAA,OAAO,IAAI,CAAC;KACb;uGA5CU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,sICXxC,2EACA,EAAA,MAAA,EAAA,CAAA,ooDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDUa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAGf,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,QAAA,EAAA,2EAAA,EAAA,MAAA,EAAA,CAAA,ooDAAA,CAAA,EAAA,CAAA;8BAMc,WAAW,EAAA,CAAA;sBAAxC,KAAK;uBAAC,UAAU,CAAA;;;AEfnB;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@firestitch/markdown-editor",
|
|
3
|
-
"version": "18.0.
|
|
3
|
+
"version": "18.0.4",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/Firestitch/ngx-markdown-editor"
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
],
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"dependencies": {
|
|
17
|
+
"@milkdown/crepe": "^7.18.0",
|
|
18
|
+
"@milkdown/kit": "^7.18.0",
|
|
17
19
|
"tslib": "^2.3.0"
|
|
18
20
|
},
|
|
19
21
|
"sideEffects": false,
|