@eui/components 17.0.2-snapshot-1702478232432 → 17.0.2-snapshot-1702481826405
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/docs/components/EuiEditorComponent.html +26 -2
- package/docs/components/QuillEditorComponent.html +13 -1
- package/docs/dependencies.html +2 -2
- package/docs/index.html +2 -2
- package/docs/injectables/LoaderService.html +273 -0
- package/docs/interfaces/QuillDynamicConfig.html +272 -0
- package/docs/js/menu-wc.js +16 -10
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/variables.html +50 -3
- package/docs/modules/QuillModule.html +9 -1
- package/esm2022/externals/eui-editor/eui-editor.component.mjs +67 -58
- package/esm2022/externals/eui-editor/eui-editor.module.mjs +9 -5
- package/esm2022/externals/eui-editor/json-view/eui-editor-json-view.component.mjs +3 -2
- package/esm2022/externals/quill/index.mjs +2 -1
- package/esm2022/externals/quill/loader.service.mjs +128 -0
- package/esm2022/externals/quill/quill-editor.component.mjs +134 -112
- package/esm2022/externals/quill/quill-editor.interfaces.mjs +2 -1
- package/esm2022/externals/quill/quill.module.mjs +10 -4
- package/externals/eui-editor/eui-editor.component.d.ts +6 -3
- package/externals/eui-editor/eui-editor.component.d.ts.map +1 -1
- package/externals/eui-editor/eui-editor.module.d.ts.map +1 -1
- package/externals/eui-editor/json-view/eui-editor-json-view.component.d.ts.map +1 -1
- package/externals/quill/index.d.ts +1 -0
- package/externals/quill/index.d.ts.map +1 -1
- package/externals/quill/loader.service.d.ts +18 -0
- package/externals/quill/loader.service.d.ts.map +1 -0
- package/externals/quill/quill-editor.component.d.ts +4 -1
- package/externals/quill/quill-editor.component.d.ts.map +1 -1
- package/externals/quill/quill-editor.interfaces.d.ts +5 -0
- package/externals/quill/quill-editor.interfaces.d.ts.map +1 -1
- package/externals/quill/quill.module.d.ts +5 -1
- package/externals/quill/quill.module.d.ts.map +1 -1
- package/fesm2022/eui-components-externals-eui-editor.mjs +81 -67
- package/fesm2022/eui-components-externals-eui-editor.mjs.map +1 -1
- package/fesm2022/eui-components-externals-quill.mjs +268 -116
- package/fesm2022/eui-components-externals-quill.mjs.map +1 -1
- package/package.json +53 -53
@@ -14,8 +14,10 @@ import { EuiEditorImageDialogComponent } from './image-url-dialog/image-url-dial
|
|
14
14
|
import { EuiEditorMaxlengthDirective } from './directives/eui-editor-maxlength.directive';
|
15
15
|
import * as i0 from "@angular/core";
|
16
16
|
import * as i1 from "@eui/components/externals/quill";
|
17
|
+
// In case of dynamic loading this will not be available at this stage.
|
18
|
+
// Thus the config for BetterTable keyboardBindings needs to be set at a later
|
19
|
+
// stage. Same as the registration.
|
17
20
|
const QuillBetterTable = window['quillBetterTable'];
|
18
|
-
window['Quill'].register({ 'modules/better-table': QuillBetterTable });
|
19
21
|
const quillConfig = {
|
20
22
|
modules: {
|
21
23
|
table: false,
|
@@ -68,11 +70,13 @@ const quillConfig = {
|
|
68
70
|
},
|
69
71
|
},
|
70
72
|
},
|
71
|
-
keyboard: {
|
72
|
-
bindings: QuillBetterTable.keyboardBindings,
|
73
|
-
},
|
74
73
|
},
|
75
74
|
};
|
75
|
+
if (QuillBetterTable) {
|
76
|
+
quillConfig.modules.keyboard = {
|
77
|
+
bindings: QuillBetterTable?.keyboardBindings,
|
78
|
+
};
|
79
|
+
}
|
76
80
|
export class EuiEditorModule {
|
77
81
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EuiEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
78
82
|
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.6", ngImport: i0, type: EuiEditorModule, declarations: [EuiEditorComponent,
|
@@ -121,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
121
125
|
exports: [EuiEditorComponent, EuiEditorMaxlengthDirective, EuiEditorCustomToolbarTagDirective, EuiEditorCountersComponent],
|
122
126
|
}]
|
123
127
|
}] });
|
124
|
-
//# sourceMappingURL=data:application/json;base64,
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWVkaXRvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9leHRlcm5hbHMvZXVpLWVkaXRvci9ldWktZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQWUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtDQUFrQyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDOUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7OztBQUUxRix1RUFBdUU7QUFDdkUsOEVBQThFO0FBQzlFLG1DQUFtQztBQUNuQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRXBELE1BQU0sV0FBVyxHQUFnQjtJQUM3QixPQUFPLEVBQUU7UUFDTCxLQUFLLEVBQUUsS0FBSztRQUNaLGNBQWMsRUFBRTtZQUNaLGFBQWEsRUFBRTtnQkFDWCxLQUFLLEVBQUU7b0JBQ0gsWUFBWSxFQUFFO3dCQUNWLElBQUksRUFBRSw0QkFBNEI7cUJBQ3JDO2lCQUNKO2dCQUNELEtBQUssRUFBRTtvQkFDSCxNQUFNLEVBQUU7d0JBQ0osU0FBUzt3QkFDVCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxTQUFTO3FCQUNaO29CQUNELElBQUksRUFBRSxtQkFBbUI7aUJBQzVCO2FBQ0o7U0FDSjtLQUNKO0NBQ0osQ0FBQztBQUVGLElBQUcsZ0JBQWdCLEVBQUU7SUFDakIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUc7UUFDM0IsUUFBUSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQjtLQUMvQyxDQUFDO0NBQ0w7QUF3QkQsTUFBTSxPQUFPLGVBQWU7aUlBQWYsZUFBZTtrSUFBZixlQUFlLGlCQVZwQixrQkFBa0I7WUFDbEIsMEJBQTBCO1lBQzFCLDBCQUEwQjtZQUMxQiwwQkFBMEI7WUFDMUIsNkJBQTZCO1lBQzdCLDJCQUEyQjtZQUMzQixrQ0FBa0MsYUFoQmxDLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLHlCQUF5QixrQkFFekIsZUFBZTtZQUNmLGFBQWE7WUFDYixrQkFBa0IsYUFXWixrQkFBa0IsRUFBRSwyQkFBMkIsRUFBRSxrQ0FBa0MsRUFBRSwwQkFBMEI7a0lBRWhILGVBQWUsWUFwQnBCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLHlCQUF5QjtZQUN6QixXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUNoQyxlQUFlO1lBQ2YsYUFBYTtZQUNiLGtCQUFrQjs7MkZBYWIsZUFBZTtrQkF0QjNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7d0JBQ2hDLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixrQkFBa0I7cUJBQ3JCO29CQUNELFlBQVksRUFBRTt3QkFDVixrQkFBa0I7d0JBQ2xCLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3dCQUMxQiwwQkFBMEI7d0JBQzFCLDZCQUE2Qjt3QkFDN0IsMkJBQTJCO3dCQUMzQixrQ0FBa0M7cUJBQ3JDO29CQUNELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLDJCQUEyQixFQUFFLGtDQUFrQyxFQUFFLDBCQUEwQixDQUFDO2lCQUM3SCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFdWlEaWFsb2dNb2R1bGUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLWRpYWxvZyc7XG5pbXBvcnQgeyBFdWlUb29sdGlwRGlyZWN0aXZlTW9kdWxlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRXVpSWNvbk1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktaWNvbic7XG5pbXBvcnQgeyBRdWlsbENvbmZpZywgUXVpbGxNb2R1bGUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXh0ZXJuYWxzL3F1aWxsJztcbmltcG9ydCB7IEV1aUlucHV0VGV4dE1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktaW5wdXQtdGV4dCc7XG5cbmltcG9ydCB7IEV1aUVkaXRvckNvdW50ZXJzQ29tcG9uZW50IH0gZnJvbSAnLi9jb3VudGVycy9ldWktZWRpdG9yLWNvdW50ZXJzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFdWlFZGl0b3JIdG1sVmlld0NvbXBvbmVudCB9IGZyb20gJy4vaHRtbC12aWV3L2V1aS1lZGl0b3ItaHRtbC12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFdWlFZGl0b3JKc29uVmlld0NvbXBvbmVudCB9IGZyb20gJy4vanNvbi12aWV3L2V1aS1lZGl0b3ItanNvbi12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFdWlFZGl0b3JDb21wb25lbnQsIEV1aUVkaXRvckN1c3RvbVRvb2xiYXJUYWdEaXJlY3RpdmUgfSBmcm9tICcuL2V1aS1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IEV1aUVkaXRvckltYWdlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9pbWFnZS11cmwtZGlhbG9nL2ltYWdlLXVybC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEV1aUVkaXRvck1heGxlbmd0aERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9ldWktZWRpdG9yLW1heGxlbmd0aC5kaXJlY3RpdmUnO1xuXG4vLyBJbiBjYXNlIG9mIGR5bmFtaWMgbG9hZGluZyB0aGlzIHdpbGwgbm90IGJlIGF2YWlsYWJsZSBhdCB0aGlzIHN0YWdlLlxuLy8gVGh1cyB0aGUgY29uZmlnIGZvciBCZXR0ZXJUYWJsZSBrZXlib2FyZEJpbmRpbmdzIG5lZWRzIHRvIGJlIHNldCBhdCBhIGxhdGVyXG4vLyBzdGFnZS4gU2FtZSBhcyB0aGUgcmVnaXN0cmF0aW9uLlxuY29uc3QgUXVpbGxCZXR0ZXJUYWJsZSA9IHdpbmRvd1sncXVpbGxCZXR0ZXJUYWJsZSddO1xuXG5jb25zdCBxdWlsbENvbmZpZzogUXVpbGxDb25maWcgPSB7XG4gICAgbW9kdWxlczoge1xuICAgICAgICB0YWJsZTogZmFsc2UsXG4gICAgICAgICdiZXR0ZXItdGFibGUnOiB7XG4gICAgICAgICAgICBvcGVyYXRpb25NZW51OiB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdW5tZXJnZUNlbGxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnQW5vdGhlciB1bm1lcmdlIGNlbGxzIG5hbWUnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3JzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzAwMDAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2U2MDAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2ZmOTkwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2ZmZmYwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzAwOGEwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzAwNjZjYycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzk5MzNmZicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2ZmZmZmZicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2ZhY2NjYycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2ZmZWJjYycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2ZmZmZjYycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2NjZThjYycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2NjZTBmNScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2ViZDZmZicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2JiYmJiYicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2YwNjY2NicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2ZmYzI2NicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2ZmZmY2NicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzY2Yjk2NicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzY2YTNlMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2MyODVmZicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzg4ODg4OCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2ExMDAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2IyNmIwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2IyYjIwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzAwNjEwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzAwNDdiMicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzZiMjRiMicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzQ0NDQ0NCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzVjMDAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzY2M2QwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzY2NjYwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzAwMzcwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzAwMjk2NicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnIzNkMTQ2NicsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICdCYWNrZ3JvdW5kIENvbG9ycycsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG5cbmlmKFF1aWxsQmV0dGVyVGFibGUpIHtcbiAgICBxdWlsbENvbmZpZy5tb2R1bGVzLmtleWJvYXJkID0ge1xuICAgICAgICBiaW5kaW5nczogUXVpbGxCZXR0ZXJUYWJsZT8ua2V5Ym9hcmRCaW5kaW5ncyxcbiAgICB9O1xufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgRXVpVG9vbHRpcERpcmVjdGl2ZU1vZHVsZSxcbiAgICAgICAgUXVpbGxNb2R1bGUuZm9yUm9vdChxdWlsbENvbmZpZyksXG4gICAgICAgIEV1aURpYWxvZ01vZHVsZSxcbiAgICAgICAgRXVpSWNvbk1vZHVsZSxcbiAgICAgICAgRXVpSW5wdXRUZXh0TW9kdWxlLFxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIEV1aUVkaXRvckNvbXBvbmVudCxcbiAgICAgICAgRXVpRWRpdG9ySnNvblZpZXdDb21wb25lbnQsXG4gICAgICAgIEV1aUVkaXRvckh0bWxWaWV3Q29tcG9uZW50LFxuICAgICAgICBFdWlFZGl0b3JDb3VudGVyc0NvbXBvbmVudCxcbiAgICAgICAgRXVpRWRpdG9ySW1hZ2VEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIEV1aUVkaXRvck1heGxlbmd0aERpcmVjdGl2ZSxcbiAgICAgICAgRXVpRWRpdG9yQ3VzdG9tVG9vbGJhclRhZ0RpcmVjdGl2ZSxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtFdWlFZGl0b3JDb21wb25lbnQsIEV1aUVkaXRvck1heGxlbmd0aERpcmVjdGl2ZSwgRXVpRWRpdG9yQ3VzdG9tVG9vbGJhclRhZ0RpcmVjdGl2ZSwgRXVpRWRpdG9yQ291bnRlcnNDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlFZGl0b3JNb2R1bGUge31cbiJdfQ==
|
@@ -24,7 +24,8 @@ export class EuiEditorJsonViewComponent {
|
|
24
24
|
ngAfterViewInit() {
|
25
25
|
this.elementRef.nativeElement.insertAdjacentHTML('afterbegin', '<div quill-view-element></div>');
|
26
26
|
this.editorElem = this.elementRef.nativeElement.querySelector('[quill-view-element]');
|
27
|
-
|
27
|
+
const Quill = window['Quill'];
|
28
|
+
this.quillEditor = new Quill(this.editorElem, {
|
28
29
|
debug: false,
|
29
30
|
formats: null,
|
30
31
|
modules: { toolbar: false },
|
@@ -56,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
56
57
|
}], content: [{
|
57
58
|
type: Input
|
58
59
|
}] } });
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWVkaXRvci1qc29uLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZXh0ZXJuYWxzL2V1aS1lZGl0b3IvanNvbi12aWV3L2V1aS1lZGl0b3ItanNvbi12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFHTCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7O0FBRXZCLE1BQU0sU0FBUyxHQUFRLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQVN2QyxNQUFNLE9BQU8sMEJBQTBCO0lBT25DLFlBQXdDLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFOckQsVUFBSyxHQUFHLE1BQU0sQ0FBQztRQVF4QixnQkFBVyxHQUFHLENBQUMsV0FBNkIsRUFBRSxLQUFhLEVBQVEsRUFBRTtZQUNqRSxJQUFJLE9BQU8sR0FBUSxLQUFLLENBQUM7WUFDekIsSUFBSTtnQkFDQSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMvQjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQzthQUNyQztZQUNELFdBQVcsRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDO0lBVitELENBQUM7SUFZbEUsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUU7WUFDN0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDcEU7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFDO1FBRWpHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFdEYsTUFBTSxLQUFLLEdBQVEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMxQyxLQUFLLEVBQUUsS0FBSztZQUNaLE9BQU8sRUFBRSxJQUFJO1lBQ2IsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtZQUMzQixRQUFRLEVBQUUsSUFBSTtZQUNkLE1BQU0sRUFBRSxJQUFJO1lBQ1osS0FBSyxFQUFFLE1BQU07U0FDaEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNwRDtJQUNMLENBQUM7aUlBNUNRLDBCQUEwQixrQkFPZixVQUFVO3FIQVByQiwwQkFBMEIsaUlBSnpCLEVBQUU7OzJGQUlILDBCQUEwQjtrQkFQdEMsU0FBUzttQkFBQztvQkFDUCwyQkFBMkI7b0JBQzNCLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRSxFQUFFO29CQUNaLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7OzBCQVFnQixNQUFNOzJCQUFDLFVBQVU7eUNBTnJCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3QgUXVpbGxUeXBlOiBhbnkgPSB3aW5kb3dbJ1F1aWxsJ107XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHNlbGVjdG9yOiAnZXVpLWVkaXRvci1qc29uLXZpZXcnLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlFZGl0b3JKc29uVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgdGhlbWUgPSAnc25vdyc7XG4gICAgQElucHV0KCkgY29udGVudDogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBxdWlsbEVkaXRvcjogdHlwZW9mIFF1aWxsVHlwZTtcbiAgICBwcml2YXRlIGVkaXRvckVsZW06IEhUTUxFbGVtZW50O1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICB2YWx1ZVNldHRlciA9IChxdWlsbEVkaXRvcjogdHlwZW9mIFF1aWxsVHlwZSwgdmFsdWU6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgICBsZXQgY29udGVudDogYW55ID0gdmFsdWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb250ZW50ID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignSlNPTiBwYXJzZSBlcnJvciEnKTtcbiAgICAgICAgfVxuICAgICAgICBxdWlsbEVkaXRvcj8uc2V0Q29udGVudHMoY29udGVudCk7XG4gICAgfTtcblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlcy5jb250ZW50ICYmIGNoYW5nZXMuY29udGVudD8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlU2V0dGVyKHRoaXMucXVpbGxFZGl0b3IsIGNoYW5nZXMuY29udGVudC5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyYmVnaW4nLCAnPGRpdiBxdWlsbC12aWV3LWVsZW1lbnQ+PC9kaXY+Jyk7XG5cbiAgICAgICAgdGhpcy5lZGl0b3JFbGVtID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW3F1aWxsLXZpZXctZWxlbWVudF0nKTtcblxuICAgICAgICBjb25zdCBRdWlsbDogYW55ID0gd2luZG93WydRdWlsbCddO1xuXG4gICAgICAgIHRoaXMucXVpbGxFZGl0b3IgPSBuZXcgUXVpbGwodGhpcy5lZGl0b3JFbGVtLCB7XG4gICAgICAgICAgICBkZWJ1ZzogZmFsc2UsXG4gICAgICAgICAgICBmb3JtYXRzOiBudWxsLFxuICAgICAgICAgICAgbW9kdWxlczogeyB0b29sYmFyOiBmYWxzZSB9LFxuICAgICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgICBzdHJpY3Q6IHRydWUsXG4gICAgICAgICAgICB0aGVtZTogJ3Nub3cnLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlU2V0dGVyKHRoaXMucXVpbGxFZGl0b3IsIHRoaXMuY29udGVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
@@ -3,4 +3,5 @@ export * from './quill-defaults';
|
|
3
3
|
export * from './models/editor.model';
|
4
4
|
export * from './quill-editor.component';
|
5
5
|
export * from './quill-editor.interfaces';
|
6
|
-
|
6
|
+
export * from './loader.service';
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9leHRlcm5hbHMvcXVpbGwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3F1aWxsLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3F1aWxsLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2VkaXRvci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3F1aWxsLWVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9xdWlsbC1lZGl0b3IuaW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xvYWRlci5zZXJ2aWNlJztcbiJdfQ==
|
@@ -0,0 +1,128 @@
|
|
1
|
+
import { inject, Injectable } from "@angular/core";
|
2
|
+
import { Observable } from 'rxjs';
|
3
|
+
import { QUILL_DYNAMIC_CONFIG_TOKEN } from "./quill-editor.interfaces";
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
/**
|
6
|
+
* @internal This service is not part of the public API of the component
|
7
|
+
*/
|
8
|
+
export class LoaderService {
|
9
|
+
constructor() {
|
10
|
+
this.dynamicConfig = inject(QUILL_DYNAMIC_CONFIG_TOKEN, { optional: true });
|
11
|
+
}
|
12
|
+
/**
|
13
|
+
* Load the Quill.js library
|
14
|
+
*
|
15
|
+
* @param path Path to the Quill.js library e.g. "assets/quill/dist". The path must contain the "quill.js"
|
16
|
+
* and "quillEditor.min.css" files and also the css ones.
|
17
|
+
*/
|
18
|
+
load() {
|
19
|
+
let loaded = false;
|
20
|
+
return new Observable(observer => {
|
21
|
+
// check if window.Quill is defined other load it
|
22
|
+
if (window.Quill === undefined) {
|
23
|
+
const loadResult = { mainScript: false, style: false, secondaryScript: false, };
|
24
|
+
// style
|
25
|
+
const quillEditorStyle = document.createElement('link');
|
26
|
+
quillEditorStyle.href = `${this.dynamicConfig?.path}/quill.core.css`;
|
27
|
+
quillEditorStyle.rel = 'stylesheet';
|
28
|
+
const quillEditorStyleOnload = () => {
|
29
|
+
quillEditorStyle.removeEventListener('load', quillEditorStyleOnload);
|
30
|
+
quillEditorStyle.removeEventListener('error', quillEditorOnerror);
|
31
|
+
loadResult.style = true;
|
32
|
+
if (Object.values(loadResult).every(v => v === true)) {
|
33
|
+
observer.next(true);
|
34
|
+
observer.complete();
|
35
|
+
loaded = true;
|
36
|
+
}
|
37
|
+
};
|
38
|
+
const quillEditorSnowStyle = document.createElement('link');
|
39
|
+
quillEditorSnowStyle.href = `${this.dynamicConfig?.path}/quill.snow.css`;
|
40
|
+
quillEditorSnowStyle.rel = 'stylesheet';
|
41
|
+
// script to inject into page the Quill.js
|
42
|
+
let quillEditorScript = document.createElement('script');
|
43
|
+
quillEditorScript.src = `${this.dynamicConfig?.path}/quill.js`;
|
44
|
+
quillEditorScript.type = 'application/javascript';
|
45
|
+
quillEditorScript.async = true;
|
46
|
+
const quillEditorScriptOnload = () => {
|
47
|
+
quillEditorScript.removeEventListener('load', quillEditorScriptOnload);
|
48
|
+
quillEditorScript.removeEventListener('error', quillEditorOnerror);
|
49
|
+
loadResult.mainScript = true;
|
50
|
+
document.body.append(quillBetterTableScript);
|
51
|
+
if (Object.values(loadResult).every(v => v === true)) {
|
52
|
+
observer.next(true);
|
53
|
+
observer.complete();
|
54
|
+
loaded = true;
|
55
|
+
}
|
56
|
+
};
|
57
|
+
// script to inject into page the Quill-better-table"node_modules/quill-better-table/dist/quill-better-table.min.js",
|
58
|
+
const quillBetterTableScript = document.createElement('script');
|
59
|
+
quillBetterTableScript.src = `${this.dynamicConfig?.path}/quill-better-table.js`;
|
60
|
+
quillBetterTableScript.type = 'application/javascript';
|
61
|
+
quillBetterTableScript.async = true;
|
62
|
+
const quillBetterTableScriptOnload = () => {
|
63
|
+
quillBetterTableScript.removeEventListener('load', quillBetterTableScriptOnload);
|
64
|
+
quillBetterTableScript.removeEventListener('error', quillEditorOnerror);
|
65
|
+
loadResult.secondaryScript = true;
|
66
|
+
if (Object.values(loadResult).every(v => v === true)) {
|
67
|
+
observer.next(true);
|
68
|
+
observer.complete();
|
69
|
+
loaded = true;
|
70
|
+
}
|
71
|
+
};
|
72
|
+
const quillEditorOnerror = () => {
|
73
|
+
quillEditorStyle.removeEventListener('load', quillEditorStyleOnload);
|
74
|
+
quillEditorStyle.removeEventListener('error', quillEditorOnerror);
|
75
|
+
quillEditorScript.removeEventListener('load', quillEditorScriptOnload);
|
76
|
+
quillEditorScript.removeEventListener('error', quillEditorOnerror);
|
77
|
+
observer.next(false);
|
78
|
+
observer.complete();
|
79
|
+
};
|
80
|
+
quillEditorStyle.addEventListener('load', quillEditorStyleOnload);
|
81
|
+
quillEditorStyle.addEventListener('error', quillEditorOnerror);
|
82
|
+
quillEditorSnowStyle.addEventListener('load', quillEditorStyleOnload);
|
83
|
+
quillEditorSnowStyle.addEventListener('error', quillEditorOnerror);
|
84
|
+
quillEditorScript.addEventListener('load', quillEditorScriptOnload);
|
85
|
+
quillEditorScript.addEventListener('error', quillEditorOnerror);
|
86
|
+
quillBetterTableScript.addEventListener('load', quillBetterTableScriptOnload);
|
87
|
+
quillBetterTableScript.addEventListener('error', quillEditorOnerror);
|
88
|
+
// check if the script is already loaded. Take into account the Hostname on to src
|
89
|
+
if (document.querySelector(`script[src="${this.dynamicConfig?.path}/quill.js"]`) === null) {
|
90
|
+
document.body.append(quillEditorScript);
|
91
|
+
}
|
92
|
+
else {
|
93
|
+
// interval timer to check when the script is loaded
|
94
|
+
const interval = setInterval(() => {
|
95
|
+
if (loaded) {
|
96
|
+
clearInterval(interval);
|
97
|
+
}
|
98
|
+
else if (window.Quill !== undefined && window.quillBetterTable !== undefined) {
|
99
|
+
observer.next(true);
|
100
|
+
observer.complete();
|
101
|
+
loaded = true;
|
102
|
+
clearInterval(interval);
|
103
|
+
}
|
104
|
+
}, 100);
|
105
|
+
}
|
106
|
+
// check if style is already loaded
|
107
|
+
if (document.querySelector(`link[href="${this.dynamicConfig?.path}/quill.core.css"]`) === null) {
|
108
|
+
document.body.append(quillEditorStyle);
|
109
|
+
}
|
110
|
+
// check if style is already loaded
|
111
|
+
if (document.querySelector(`link[href="${this.dynamicConfig?.path}/quill.snow.css"]`) === null) {
|
112
|
+
document.body.append(quillEditorSnowStyle);
|
113
|
+
}
|
114
|
+
}
|
115
|
+
else {
|
116
|
+
observer.next(true);
|
117
|
+
observer.complete();
|
118
|
+
}
|
119
|
+
});
|
120
|
+
}
|
121
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: LoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
122
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: LoaderService, providedIn: 'root' }); }
|
123
|
+
}
|
124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: LoaderService, decorators: [{
|
125
|
+
type: Injectable,
|
126
|
+
args: [{ providedIn: 'root' }]
|
127
|
+
}] });
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9leHRlcm5hbHMvcXVpbGwvbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsMEJBQTBCLEVBQXNCLE1BQU0sMkJBQTJCLENBQUM7O0FBSzNGOztHQUVHO0FBRUgsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFFWSxrQkFBYSxHQUF1QixNQUFNLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQW1IdEc7SUFqSEc7Ozs7O09BS0c7SUFDSCxJQUFJO1FBQ0EsSUFBSSxNQUFNLEdBQVksS0FBSyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFFN0IsaURBQWlEO1lBQ2pELElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7Z0JBQzVCLE1BQU0sVUFBVSxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLEdBQUcsQ0FBQztnQkFFaEYsUUFBUTtnQkFDUixNQUFNLGdCQUFnQixHQUFvQixRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN6RSxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksaUJBQWlCLENBQUM7Z0JBQ3JFLGdCQUFnQixDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUM7Z0JBQ3BDLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxFQUFFO29CQUNoQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsc0JBQXNC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Q0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO2lJQW5IUSxhQUFhO3FJQUFiLGFBQWEsY0FEQSxNQUFNOzsyRkFDbkIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBRVUlMTF9EWU5BTUlDX0NPTkZJR19UT0tFTiwgUXVpbGxEeW5hbWljQ29uZmlnIH0gZnJvbSBcIi4vcXVpbGwtZWRpdG9yLmludGVyZmFjZXNcIjtcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogeyBRdWlsbDogYW55IHwgdW5kZWZpbmVkOyBxdWlsbEJldHRlclRhYmxlOiBhbnkgfCB1bmRlZmluZWQgfTtcblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBzZXJ2aWNlIGlzIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIG9mIHRoZSBjb21wb25lbnRcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIExvYWRlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgZHluYW1pY0NvbmZpZzogUXVpbGxEeW5hbWljQ29uZmlnID0gaW5qZWN0KFFVSUxMX0RZTkFNSUNfQ09ORklHX1RPS0VOLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqXG4gICAgICogTG9hZCB0aGUgUXVpbGwuanMgbGlicmFyeVxuICAgICAqXG4gICAgICogQHBhcmFtIHBhdGggUGF0aCB0byB0aGUgUXVpbGwuanMgbGlicmFyeSBlLmcuIFwiYXNzZXRzL3F1aWxsL2Rpc3RcIi4gVGhlIHBhdGggbXVzdCBjb250YWluIHRoZSBcInF1aWxsLmpzXCJcbiAgICAgKiBhbmQgXCJxdWlsbEVkaXRvci5taW4uY3NzXCIgZmlsZXMgYW5kIGFsc28gdGhlIGNzcyBvbmVzLlxuICAgICAqL1xuICAgIGxvYWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGxldCBsb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcblxuICAgICAgICAgICAgLy8gY2hlY2sgaWYgd2luZG93LlF1aWxsIGlzIGRlZmluZWQgb3RoZXIgbG9hZCBpdFxuICAgICAgICAgICAgaWYgKHdpbmRvdy5RdWlsbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbG9hZFJlc3VsdCA9IHsgbWFpblNjcmlwdDogZmFsc2UsIHN0eWxlOiBmYWxzZSwgc2Vjb25kYXJ5U2NyaXB0OiBmYWxzZSwgfTtcblxuICAgICAgICAgICAgICAgIC8vIHN0eWxlXG4gICAgICAgICAgICAgICAgY29uc3QgcXVpbGxFZGl0b3JTdHlsZTogSFRNTExpbmtFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgICAgICAgICAgICAgIHF1aWxsRWRpdG9yU3R5bGUuaHJlZiA9IGAke3RoaXMuZHluYW1pY0NvbmZpZz8ucGF0aH0vcXVpbGwuY29yZS5jc3NgO1xuICAgICAgICAgICAgICAgIHF1aWxsRWRpdG9yU3R5bGUucmVsID0gJ3N0eWxlc2hlZXQnO1xuICAgICAgICAgICAgICAgIGNvbnN0IHF1aWxsRWRpdG9yU3R5bGVPbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHF1aWxsRWRpdG9yU3R5bGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZCcsIHF1aWxsRWRpdG9yU3R5bGVPbmxvYWQpO1xuICAgICAgICAgICAgICAgICAgICBxdWlsbEVkaXRvclN0eWxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgcXVpbGxFZGl0b3JPbmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgbG9hZFJlc3VsdC5zdHlsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QudmFsdWVzKGxvYWRSZXN1bHQpLmV2ZXJ5KHYgPT4gdiA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgcXVpbGxFZGl0b3JTbm93U3R5bGU6IEhUTUxMaW5rRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgICAgICAgICAgICAgICBxdWlsbEVkaXRvclNub3dTdHlsZS5ocmVmID0gYCR7dGhpcy5keW5hbWljQ29uZmlnPy5wYXRofS9xdWlsbC5zbm93LmNzc2A7XG4gICAgICAgICAgICAgICAgcXVpbGxFZGl0b3JTbm93U3R5bGUucmVsID0gJ3N0eWxlc2hlZXQnO1xuXG4gICAgICAgICAgICAgICAgLy8gc2NyaXB0IHRvIGluamVjdCBpbnRvIHBhZ2UgdGhlIFF1aWxsLmpzXG4gICAgICAgICAgICAgICAgbGV0IHF1aWxsRWRpdG9yU2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgICAgIHF1aWxsRWRpdG9yU2NyaXB0LnNyYyA9IGAke3RoaXMuZHluYW1pY0NvbmZpZz8ucGF0aH0vcXVpbGwuanNgO1xuICAgICAgICAgICAgICAgIHF1aWxsRWRpdG9yU2NyaXB0LnR5cGUgPSAnYXBwbGljYXRpb24vamF2YXNjcmlwdCc7XG4gICAgICAgICAgICAgICAgcXVpbGxFZGl0b3JTY3JpcHQuYXN5bmMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHF1aWxsRWRpdG9yU2NyaXB0T25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBxdWlsbEVkaXRvclNjcmlwdC5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgcXVpbGxFZGl0b3JTY3JpcHRPbmxvYWQpO1xuICAgICAgICAgICAgICAgICAgICBxdWlsbEVkaXRvclNjcmlwdC5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIHF1aWxsRWRpdG9yT25lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRSZXN1bHQubWFpblNjcmlwdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHF1aWxsQmV0dGVyVGFibGVTY3JpcHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnZhbHVlcyhsb2FkUmVzdWx0KS5ldmVyeSh2ID0+IHYgPT09IHRydWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgLy8gc2NyaXB0IHRvIGluamVjdCBpbnRvIHBhZ2UgdGhlIFF1aWxsLWJldHRlci10YWJsZVwibm9kZV9tb2R1bGVzL3F1aWxsLWJldHRlci10YWJsZS9kaXN0L3F1aWxsLWJldHRlci10YWJsZS5taW4uanNcIixcbiAgICAgICAgICAgICAgICBjb25zdCBxdWlsbEJldHRlclRhYmxlU2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgICAgIHF1aWxsQmV0dGVyVGFibGVTY3JpcHQuc3JjID0gYCR7dGhpcy5keW5hbWljQ29uZmlnPy5wYXRofS9xdWlsbC1iZXR0ZXItdGFibGUuanNgO1xuICAgICAgICAgICAgICAgIHF1aWxsQmV0dGVyVGFibGVTY3JpcHQudHlwZSA9ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JztcbiAgICAgICAgICAgICAgICBxdWlsbEJldHRlclRhYmxlU2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBxdWlsbEJldHRlclRhYmxlU2NyaXB0T25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBxdWlsbEJldHRlclRhYmxlU2NyaXB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBxdWlsbEJldHRlclRhYmxlU2NyaXB0T25sb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgcXVpbGxCZXR0ZXJUYWJsZVNjcmlwdC5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIHF1aWxsRWRpdG9yT25lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRSZXN1bHQuc2Vjb25kYXJ5U2NyaXB0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC52YWx1ZXMobG9hZFJlc3VsdCkuZXZlcnkodiA9PiB2ID09PSB0cnVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHF1aWxsRWRpdG9yT25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcXVpbGxFZGl0b3JTdHlsZS5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgcXVpbGxFZGl0b3JTdHlsZU9ubG9hZCk7XG4gICAgICAgICAgICAgICAgICAgIHF1aWxsRWRpdG9yU3R5bGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCBxdWlsbEVkaXRvck9uZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICBxdWlsbEVkaXRvclNjcmlwdC5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgcXVpbGxFZGl0b3JTY3JpcHRPbmxvYWQpO1xuICAgICAgICAgICAgICAgICAgICBxdWlsbEVkaXRvclNjcmlwdC5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIHF1aWxsRWRpdG9yT25lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBxdWlsbEVkaXRvclN0eWxlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBxdWlsbEVkaXRvclN0eWxlT25sb2FkKTtcbiAgICAgICAgICAgICAgICBxdWlsbEVkaXRvclN0eWxlLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgcXVpbGxFZGl0b3JPbmVycm9yKTtcbiAgICAgICAgICAgICAgICBxdWlsbEVkaXRvclNub3dTdHlsZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcXVpbGxFZGl0b3JTdHlsZU9ubG9hZCk7XG4gICAgICAgICAgICAgICAgcXVpbGxFZGl0b3JTbm93U3R5bGUuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBxdWlsbEVkaXRvck9uZXJyb3IpO1xuICAgICAgICAgICAgICAgIHF1aWxsRWRpdG9yU2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBxdWlsbEVkaXRvclNjcmlwdE9ubG9hZCk7XG4gICAgICAgICAgICAgICAgcXVpbGxFZGl0b3JTY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBxdWlsbEVkaXRvck9uZXJyb3IpO1xuICAgICAgICAgICAgICAgIHF1aWxsQmV0dGVyVGFibGVTY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHF1aWxsQmV0dGVyVGFibGVTY3JpcHRPbmxvYWQpO1xuICAgICAgICAgICAgICAgIHF1aWxsQmV0dGVyVGFibGVTY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBxdWlsbEVkaXRvck9uZXJyb3IpO1xuXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlIHNjcmlwdCBpcyBhbHJlYWR5IGxvYWRlZC4gVGFrZSBpbnRvIGFjY291bnQgdGhlIEhvc3RuYW1lIG9uIHRvIHNyY1xuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBzY3JpcHRbc3JjPVwiJHt0aGlzLmR5bmFtaWNDb25maWc/LnBhdGh9L3F1aWxsLmpzXCJdYCkgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQocXVpbGxFZGl0b3JTY3JpcHQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGludGVydmFsIHRpbWVyIHRvIGNoZWNrIHdoZW4gdGhlIHNjcmlwdCBpcyBsb2FkZWRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5RdWlsbCAhPT0gdW5kZWZpbmVkICYmIHdpbmRvdy5xdWlsbEJldHRlclRhYmxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgc3R5bGUgaXMgYWxyZWFkeSBsb2FkZWRcbiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGlua1tocmVmPVwiJHt0aGlzLmR5bmFtaWNDb25maWc/LnBhdGh9L3F1aWxsLmNvcmUuY3NzXCJdYCkgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQocXVpbGxFZGl0b3JTdHlsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHN0eWxlIGlzIGFscmVhZHkgbG9hZGVkXG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGxpbmtbaHJlZj1cIiR7dGhpcy5keW5hbWljQ29uZmlnPy5wYXRofS9xdWlsbC5zbm93LmNzc1wiXWApID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHF1aWxsRWRpdG9yU25vd1N0eWxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|