@firestitch/html-editor 18.0.31 → 18.0.32
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/html-editor/components/html-editor/html-editor.component.d.ts +2 -0
- package/app/modules/html-editor/consts/index.d.ts +5 -0
- package/app/modules/html-editor/consts/toolbar-buttons.const.d.ts +14 -0
- package/app/modules/html-editor/consts/toolbar-xs-buttons.const.d.ts +14 -0
- package/app/modules/html-editor/fs-html-editor.module.d.ts +11 -1
- package/app/modules/html-editor/interfaces/html-editor-config.d.ts +11 -1
- package/app/modules/html-editor/services/froala-loader.service.d.ts +2 -0
- package/esm2022/app/modules/html-editor/components/html-editor/html-editor.component.mjs +62 -50
- package/esm2022/app/modules/html-editor/consts/index.mjs +6 -0
- package/esm2022/app/modules/html-editor/consts/toolbar-buttons.const.mjs +18 -0
- package/esm2022/app/modules/html-editor/consts/toolbar-xs-buttons.const.mjs +18 -0
- package/esm2022/app/modules/html-editor/interfaces/html-editor-config.mjs +1 -1
- package/esm2022/app/modules/html-editor/services/froala-loader.service.mjs +6 -1
- package/esm2022/public_api.mjs +2 -4
- package/fesm2022/firestitch-html-editor.mjs +108 -60
- package/fesm2022/firestitch-html-editor.mjs.map +1 -1
- package/package.json +1 -2
- package/public_api.d.ts +1 -3
|
@@ -11,6 +11,10 @@ export class FsFroalaLoaderService {
|
|
|
11
11
|
_froalaLoaded = new BehaviorSubject(false);
|
|
12
12
|
_froalaPluginsLoaded = new BehaviorSubject(false);
|
|
13
13
|
_sourceLoader = fsSourceLoader;
|
|
14
|
+
_froalaEditor;
|
|
15
|
+
get FroalaEditor() {
|
|
16
|
+
return this._froalaEditor;
|
|
17
|
+
}
|
|
14
18
|
_loaded$ = combineLatest([this._froalaLoaded, this._froalaPluginsLoaded])
|
|
15
19
|
.pipe(map(([FroalaReady, pluginsRead]) => {
|
|
16
20
|
return pluginsRead && FroalaReady;
|
|
@@ -48,6 +52,7 @@ export class FsFroalaLoaderService {
|
|
|
48
52
|
});
|
|
49
53
|
this._sourceLoader.loadResource('froala')
|
|
50
54
|
.pipe(tap(() => {
|
|
55
|
+
this._froalaEditor = window.FroalaEditor;
|
|
51
56
|
this._froalaDone();
|
|
52
57
|
}), concatMap(() => {
|
|
53
58
|
return this._loadPlugins();
|
|
@@ -85,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
85
90
|
type: Inject,
|
|
86
91
|
args: [DOCUMENT]
|
|
87
92
|
}] }] });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvYWxhLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL3NlcnZpY2VzL2Zyb2FsYS1sb2FkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBT2pFLE1BQU0sT0FBTyxxQkFBcUI7SUFzQnRCO0lBRUE7SUF0QkYsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLG9CQUFvQixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELGFBQWEsR0FBRyxjQUFjLENBQUM7SUFDL0IsYUFBYSxDQUFNO0lBRTNCLElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVPLFFBQVEsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQzlFLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFO1FBQ2pDLE9BQU8sV0FBVyxJQUFJLFdBQVcsQ0FBQztJ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QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBmc1NvdXJjZUxvYWRlciB9IGZyb20gJ0BmaXJlc3RpdGNoL2NvbW1vbic7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cblxuaW1wb3J0IHsgRlNfSFRNTF9FRElUT1JfQ09ORklHIH0gZnJvbSAnLi4vaW5qZWN0cy9jb25maWcuaW5qZWN0JztcbmltcG9ydCB7IEZzSHRtbEVkaXRvckNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvaHRtbC1lZGl0b3ItY29uZmlnJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnNGcm9hbGFMb2FkZXJTZXJ2aWNlIHtcblxuICBwcml2YXRlIF9mcm9hbGFMb2FkZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfZnJvYWxhUGx1Z2luc0xvYWRlZCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9zb3VyY2VMb2FkZXIgPSBmc1NvdXJjZUxvYWRlcjtcbiAgcHJpdmF0ZSBfZnJvYWxhRWRpdG9yOiBhbnk7XG5cbiAgcHVibGljIGdldCBGcm9hbGFFZGl0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zyb2FsYUVkaXRvcjtcbiAgfVxuICBcbiAgcHJpdmF0ZSBfbG9hZGVkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2Zyb2FsYUxvYWRlZCwgdGhpcy5fZnJvYWxhUGx1Z2luc0xvYWRlZF0pXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKFtGcm9hbGFSZWFkeSwgcGx1Z2luc1JlYWRdKSA9PiB7XG4gICAgICAgIHJldHVybiBwbHVnaW5zUmVhZCAmJiBGcm9hbGFSZWFkeTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoRlNfSFRNTF9FRElUT1JfQ09ORklHKVxuICAgIHByaXZhdGUgX2RlZmF1bHRDb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZyxcbiAgICBASW5qZWN0KERPQ1VNRU5UKVxuICAgIHByaXZhdGUgX2RvY3VtZW50OiBEb2N1bWVudCxcbiAgKSB7XG4gICAgdGhpcy5fc291cmNlTG9hZGVyLnNldERvY3VtZW50KHRoaXMuX2RvY3VtZW50KTtcbiAgICB0aGlzLl9sb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRlZCQ7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkKCkge1xuICAgIGNvbnN0IGJhc2VEaXIgPSAnL2Fzc2V0cy9mcm9hbGEvJztcbiAgICB0aGlzLl9zb3VyY2VMb2FkZXIucmVnaXN0ZXJSZXNvdXJjZXMoe1xuICAgICAgZnJvYWxhOiBbXG4gICAgICAgIGAke2Jhc2VEaXJ9anMvZnJvYWxhX2VkaXRvci5taW4uanNgLFxuICAgICAgICBgJHtiYXNlRGlyfWNzcy9mcm9hbGFfZWRpdG9yLnBrZ2QubWluLmNzc2AsXG4gICAgICBdLFxuICAgICAgZnJvYWxhX2FsaWduOiBgJHtiYXNlRGlyfWpzL3BsdWdpbnMvYWxpZ24ubWluLmpzYCxcbiAgICAgIGZyb2FsYV9jb2xvcnM6IGAke2Jhc2VEaXJ9anMvcGx1Z2lucy9jb2xvcnMubWluLmpzYCxcbiAgICAgIGZyb2FsYV9pbWFnZTogYCR7YmFzZURpcn1qcy9wbHVnaW5zL2ltYWdlLm1pbi5qc2AsXG4gICAgICBmcm9hbGFfbGluazogYCR7YmFzZURpcn1qcy9wbHVnaW5zL2xpbmsubWluLmpzYCxcbiAgICAgIGZyb2FsYV9saXN0czogYCR7YmFzZURpcn1qcy9wbHVnaW5zL2xpc3RzLm1pbi5qc2AsXG4gICAgICBmcm9hbGFfcGFyYWdyYXBoX2Zvcm1hdDogYCR7YmFzZURpcn1qcy9wbHVnaW5zL3BhcmFncmFwaF9mb3JtYXQubWluLmpzYCxcbiAgICAgIGZyb2FsYV90YWJsZTogYCR7YmFzZURpcn1qcy9wbHVnaW5zL3RhYmxlLm1pbi5qc2AsXG4gICAgICBmcm9hbGFfdXJsOiBgJHtiYXNlRGlyfWpzL3BsdWdpbnMvdXJsLm1pbi5qc2AsXG4gICAgICBmcm9hbGFfdmlkZW86IGAke2Jhc2VEaXJ9anMvcGx1Z2lucy92aWRlby5taW4uanNgLFxuICAgICAgZnJvYWxhX3F1b3RlOiBgJHtiYXNlRGlyfWpzL3BsdWdpbnMvcXVvdGUubWluLmpzYCxcbiAgICAgIGZyb2FsYV9kcmFnZ2FibGU6IGAke2Jhc2VEaXJ9anMvcGx1Z2lucy9kcmFnZ2FibGUubWluLmpzYCxcbiAgICAgIGZyb2FsYV9mb250X3NpemU6IGAke2Jhc2VEaXJ9anMvcGx1Z2lucy9mb250X3NpemUubWluLmpzYCxcbiAgICAgIGZyb2FsYV9xdWlja19pbnNlcnQ6IGAke2Jhc2VEaXJ9anMvcGx1Z2lucy9xdWlja19pbnNlcnQubWluLmpzYCxcbiAgICAgIGZyb2FsYV9saW5lX2hlaWdodDogYCR7YmFzZURpcn1qcy9wbHVnaW5zL2xpbmVfaGVpZ2h0Lm1pbi5qc2AsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9zb3VyY2VMb2FkZXIubG9hZFJlc291cmNlKCdmcm9hbGEnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZnJvYWxhRWRpdG9yID0gKHdpbmRvdyBhcyBhbnkpLkZyb2FsYUVkaXRvcjtcbiAgICAgICAgICB0aGlzLl9mcm9hbGFEb25lKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBjb25jYXRNYXAoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkUGx1Z2lucygpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9mcm9hbGFQbHVnaW5zRG9uZSgpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRQbHVnaW5zKCk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMuX2RlZmF1bHRDb25maWdcbiAgICAgIC5mcm9hbGFQbHVnaW5zXG4gICAgICAubWFwKChwbHVnaW5OYW1lKSA9PiBgZnJvYWxhXyR7cGx1Z2luTmFtZX1gKTtcblxuICAgIHJldHVybiB0aGlzLl9zb3VyY2VMb2FkZXIubG9hZFJlc291cmNlcyhyZXNvdXJjZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZnJvYWxhRG9uZSgpIHtcbiAgICB0aGlzLl9mcm9hbGFMb2FkZWQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Zyb2FsYVBsdWdpbnNEb25lKCkge1xuICAgIHRoaXMuX2Zyb2FsYVBsdWdpbnNMb2FkZWQubmV4dCh0cnVlKTtcbiAgfVxufVxuIl19
|
package/esm2022/public_api.mjs
CHANGED
|
@@ -3,9 +3,7 @@ export { FsHtmlRendererModule } from './app/modules/html-renderer/fs-html-render
|
|
|
3
3
|
export { FsHtmlEditorComponent } from './app/modules/html-editor/components/html-editor/html-editor.component';
|
|
4
4
|
export { FsHtmlRendererComponent } from './app/modules/html-renderer/components/html-renderer/html-renderer.component';
|
|
5
5
|
export { FS_HTML_EDITOR_CONFIG } from './app/modules/html-editor/injects/config.inject';
|
|
6
|
-
export
|
|
7
|
-
export { RichButtons } from './app/modules/html-editor/consts/rich-buttons.const';
|
|
8
|
-
export { TextButtons } from './app/modules/html-editor/consts/text-buttons.const';
|
|
6
|
+
export * from './app/modules/html-editor/consts';
|
|
9
7
|
export { ChecklistPlugin } from './app/modules/html-editor/plugins/checklist.plugin';
|
|
10
8
|
export { CodePlugin } from './app/modules/html-editor/plugins/code.plugin';
|
|
11
9
|
export { MentionPlugin } from './app/modules/html-editor/plugins/mention.plugin';
|
|
@@ -13,4 +11,4 @@ export { RealtimePlugin } from './app/modules/html-editor/plugins/realtime.plugi
|
|
|
13
11
|
export { ScreenRecordPlugin } from './app/modules/html-editor/plugins/screen-record.plugin';
|
|
14
12
|
export { Plugin } from './app/modules/html-editor/classes/plugin';
|
|
15
13
|
export { FsHtmlEditorContainerDirective } from './app/modules/html-editor/directives';
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQy9HLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBRXZILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXhGLGNBQWMsa0NBQWtDLENBQUM7QUFNakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUczRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRTVGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEZzSHRtbEVkaXRvck1vZHVsZSB9IGZyb20gJy4vYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvZnMtaHRtbC1lZGl0b3IubW9kdWxlJztcbmV4cG9ydCB7IEZzSHRtbFJlbmRlcmVyTW9kdWxlIH0gZnJvbSAnLi9hcHAvbW9kdWxlcy9odG1sLXJlbmRlcmVyL2ZzLWh0bWwtcmVuZGVyZXIubW9kdWxlJztcblxuZXhwb3J0IHsgRnNIdG1sRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9jb21wb25lbnRzL2h0bWwtZWRpdG9yL2h0bWwtZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgeyBGc0h0bWxSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vYXBwL21vZHVsZXMvaHRtbC1yZW5kZXJlci9jb21wb25lbnRzL2h0bWwtcmVuZGVyZXIvaHRtbC1yZW5kZXJlci5jb21wb25lbnQnO1xuXG5leHBvcnQgeyBGU19IVE1MX0VESVRPUl9DT05GSUcgfSBmcm9tICcuL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2luamVjdHMvY29uZmlnLmluamVjdCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvY29uc3RzJztcblxuZXhwb3J0IHsgRnNIdG1sRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9pbnRlcmZhY2VzL2h0bWwtZWRpdG9yLWNvbmZpZyc7XG5leHBvcnQgeyBQbHVnaW5Db25maWcgfSBmcm9tICcuL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2ludGVyZmFjZXMvcGx1Z2luLWNvbmZpZyc7XG5leHBvcnQgeyBUb29sYmFyQnV0dG9uIH0gZnJvbSAnLi9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9pbnRlcmZhY2VzL3Rvb2xiYXItYnV0dG9uJztcblxuZXhwb3J0IHsgQ2hlY2tsaXN0UGx1Z2luIH0gZnJvbSAnLi9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9wbHVnaW5zL2NoZWNrbGlzdC5wbHVnaW4nO1xuZXhwb3J0IHsgQ29kZVBsdWdpbiB9IGZyb20gJy4vYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9jb2RlLnBsdWdpbic7XG5leHBvcnQgeyBNZW50aW9uUGx1Z2luQ29uZmlnIH0gZnJvbSAnLi9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9wbHVnaW5zL2NvbmZpZ3MvbWVudGlvbi1wbHVnaW4uY29uZmlnJztcbmV4cG9ydCB7IFNjcmVlblJlY29yZFBsdWdpbkNvbmZpZyB9IGZyb20gJy4vYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9jb25maWdzL3NjcmVlbi1yZWNvcmQtcGx1Z2luLmNvbmZpZyc7XG5leHBvcnQgeyBNZW50aW9uUGx1Z2luIH0gZnJvbSAnLi9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9wbHVnaW5zL21lbnRpb24ucGx1Z2luJztcbmV4cG9ydCB7IFJlYWx0aW1lUGx1Z2luIH0gZnJvbSAnLi9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9wbHVnaW5zL3JlYWx0aW1lLnBsdWdpbic7XG5leHBvcnQgeyBTY3JlZW5SZWNvcmRQbHVnaW4gfSBmcm9tICcuL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL3BsdWdpbnMvc2NyZWVuLXJlY29yZC5wbHVnaW4nO1xuXG5leHBvcnQgeyBQbHVnaW4gfSBmcm9tICcuL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NsYXNzZXMvcGx1Z2luJztcbmV4cG9ydCB7IEZzSHRtbEVkaXRvckNvbnRhaW5lckRpcmVjdGl2ZSB9IGZyb20gJy4vYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvZGlyZWN0aXZlcyc7XG5cbiJdfQ==
|
|
@@ -12,7 +12,6 @@ import { BehaviorSubject, combineLatest, ReplaySubject, Subject, fromEventPatter
|
|
|
12
12
|
import { map, shareReplay, tap, concatMap, switchMap, filter, startWith, distinctUntilChanged, skip, takeUntil } from 'rxjs/operators';
|
|
13
13
|
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, ControlContainer, NgForm } from '@angular/forms';
|
|
14
14
|
import { FileProcessor, FsFile } from '@firestitch/file';
|
|
15
|
-
import FroalaEditor from 'froala-editor';
|
|
16
15
|
import { merge, debounce } from 'lodash-es';
|
|
17
16
|
import Tribute from 'tributejs';
|
|
18
17
|
|
|
@@ -25,6 +24,10 @@ class FsFroalaLoaderService {
|
|
|
25
24
|
_froalaLoaded = new BehaviorSubject(false);
|
|
26
25
|
_froalaPluginsLoaded = new BehaviorSubject(false);
|
|
27
26
|
_sourceLoader = fsSourceLoader;
|
|
27
|
+
_froalaEditor;
|
|
28
|
+
get FroalaEditor() {
|
|
29
|
+
return this._froalaEditor;
|
|
30
|
+
}
|
|
28
31
|
_loaded$ = combineLatest([this._froalaLoaded, this._froalaPluginsLoaded])
|
|
29
32
|
.pipe(map(([FroalaReady, pluginsRead]) => {
|
|
30
33
|
return pluginsRead && FroalaReady;
|
|
@@ -62,6 +65,7 @@ class FsFroalaLoaderService {
|
|
|
62
65
|
});
|
|
63
66
|
this._sourceLoader.loadResource('froala')
|
|
64
67
|
.pipe(tap(() => {
|
|
68
|
+
this._froalaEditor = window.FroalaEditor;
|
|
65
69
|
this._froalaDone();
|
|
66
70
|
}), concatMap(() => {
|
|
67
71
|
return this._loadPlugins();
|
|
@@ -147,18 +151,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
147
151
|
}]
|
|
148
152
|
}] });
|
|
149
153
|
|
|
150
|
-
class FsHtmlEditorContainerDirective {
|
|
151
|
-
static ngTemplateContextGuard(dir, ctx) {
|
|
152
|
-
return true;
|
|
153
|
-
}
|
|
154
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHtmlEditorContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
155
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsHtmlEditorContainerDirective, selector: "[fsHtmlEditorContainer]", ngImport: i0 });
|
|
156
|
-
}
|
|
157
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHtmlEditorContainerDirective, decorators: [{
|
|
158
|
-
type: Directive,
|
|
159
|
-
args: [{ selector: '[fsHtmlEditorContainer]' }]
|
|
160
|
-
}] });
|
|
161
|
-
|
|
162
154
|
const ParagraphButtons = [
|
|
163
155
|
'align',
|
|
164
156
|
'formatOL',
|
|
@@ -195,6 +187,48 @@ const TextButtons = [
|
|
|
195
187
|
'code',
|
|
196
188
|
];
|
|
197
189
|
|
|
190
|
+
const ToolbarButtons = {
|
|
191
|
+
moreText: {
|
|
192
|
+
buttons: TextButtons,
|
|
193
|
+
buttonsVisible: 3,
|
|
194
|
+
},
|
|
195
|
+
moreParagraph: {
|
|
196
|
+
buttons: ParagraphButtons,
|
|
197
|
+
buttonsVisible: 5,
|
|
198
|
+
},
|
|
199
|
+
moreRich: {
|
|
200
|
+
buttons: RichButtons,
|
|
201
|
+
buttonsVisible: 3,
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
const ToolbarXsButtons = {
|
|
206
|
+
moreText: {
|
|
207
|
+
buttons: TextButtons,
|
|
208
|
+
buttonsVisible: 2,
|
|
209
|
+
},
|
|
210
|
+
moreParagraph: {
|
|
211
|
+
buttons: ParagraphButtons,
|
|
212
|
+
buttonsVisible: 2,
|
|
213
|
+
},
|
|
214
|
+
moreRich: {
|
|
215
|
+
buttons: RichButtons,
|
|
216
|
+
buttonsVisible: 1,
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
class FsHtmlEditorContainerDirective {
|
|
221
|
+
static ngTemplateContextGuard(dir, ctx) {
|
|
222
|
+
return true;
|
|
223
|
+
}
|
|
224
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHtmlEditorContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
225
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsHtmlEditorContainerDirective, selector: "[fsHtmlEditorContainer]", ngImport: i0 });
|
|
226
|
+
}
|
|
227
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHtmlEditorContainerDirective, decorators: [{
|
|
228
|
+
type: Directive,
|
|
229
|
+
args: [{ selector: '[fsHtmlEditorContainer]' }]
|
|
230
|
+
}] });
|
|
231
|
+
|
|
198
232
|
class FsHtmlEditorComponent {
|
|
199
233
|
_defaultConfig;
|
|
200
234
|
_cdRef;
|
|
@@ -255,7 +289,8 @@ class FsHtmlEditorComponent {
|
|
|
255
289
|
const config = this._createConfig();
|
|
256
290
|
this._initPlugins(config);
|
|
257
291
|
this._initButtons(config);
|
|
258
|
-
|
|
292
|
+
const froalaOptions = this._createOptions();
|
|
293
|
+
this._editor = new this._fr.FroalaEditor(this.el, froalaOptions, () => {
|
|
259
294
|
this._froalaReady$.next({ config, options });
|
|
260
295
|
});
|
|
261
296
|
}
|
|
@@ -383,9 +418,9 @@ class FsHtmlEditorComponent {
|
|
|
383
418
|
"unorderedList", "verticalAlignBottom", "verticalAlignMiddle", "verticalAlignTop"]
|
|
384
419
|
*/
|
|
385
420
|
if (button.svgKey) {
|
|
386
|
-
FroalaEditor.DefineIcon(button.name, { SVG_KEY: button.svgKey });
|
|
421
|
+
this._fr.FroalaEditor.DefineIcon(button.name, { SVG_KEY: button.svgKey });
|
|
387
422
|
}
|
|
388
|
-
FroalaEditor.RegisterCommand(button.name, {
|
|
423
|
+
this._fr.FroalaEditor.RegisterCommand(button.name, {
|
|
389
424
|
title: button.title,
|
|
390
425
|
focus: button.focus ?? true,
|
|
391
426
|
undo: button.undo ?? true,
|
|
@@ -396,13 +431,19 @@ class FsHtmlEditorComponent {
|
|
|
396
431
|
});
|
|
397
432
|
});
|
|
398
433
|
}
|
|
399
|
-
|
|
400
|
-
(
|
|
434
|
+
_initToolbarButtons(buttons) {
|
|
435
|
+
(buttons || [])
|
|
436
|
+
.filter((button) => typeof button !== 'string')
|
|
401
437
|
.forEach((button) => {
|
|
402
438
|
this._defineButton(button);
|
|
403
439
|
});
|
|
440
|
+
}
|
|
441
|
+
_initPlugins(config) {
|
|
442
|
+
this._initToolbarButtons(config.toolbars?.text?.prepend);
|
|
443
|
+
this._initToolbarButtons(config.toolbars?.paragraph?.prepend);
|
|
444
|
+
this._initToolbarButtons(config.toolbars?.rich?.prepend);
|
|
404
445
|
(config.plugins || []).forEach((plugin) => {
|
|
405
|
-
FroalaEditor.PLUGINS[plugin.config.name] = function (editor) {
|
|
446
|
+
this._fr.FroalaEditor.PLUGINS[plugin.config.name] = function (editor) {
|
|
406
447
|
plugin.editor = editor;
|
|
407
448
|
plugin.initialize();
|
|
408
449
|
return plugin;
|
|
@@ -415,21 +456,21 @@ class FsHtmlEditorComponent {
|
|
|
415
456
|
}
|
|
416
457
|
_defineButton(button) {
|
|
417
458
|
if (button.html) {
|
|
418
|
-
FroalaEditor
|
|
459
|
+
this._fr.FroalaEditor
|
|
419
460
|
.DefineIconTemplate(`${button.name}-template`, button.html);
|
|
420
|
-
FroalaEditor
|
|
461
|
+
this._fr.FroalaEditor
|
|
421
462
|
.DefineIcon(button.name, {
|
|
422
463
|
NAME: `${button.name}-icon`,
|
|
423
464
|
template: `${button.name}-template`,
|
|
424
465
|
});
|
|
425
466
|
}
|
|
426
467
|
else {
|
|
427
|
-
FroalaEditor.DefineIcon(button.name, {
|
|
468
|
+
this._fr.FroalaEditor.DefineIcon(button.name, {
|
|
428
469
|
NAME: button.name,
|
|
429
470
|
PATH: button.svgPath,
|
|
430
471
|
});
|
|
431
472
|
}
|
|
432
|
-
FroalaEditor.RegisterCommand(button.name, {
|
|
473
|
+
this._fr.FroalaEditor.RegisterCommand(button.name, {
|
|
433
474
|
icon: button.name,
|
|
434
475
|
title: button.tooltip,
|
|
435
476
|
undo: button.undo,
|
|
@@ -448,17 +489,32 @@ class FsHtmlEditorComponent {
|
|
|
448
489
|
},
|
|
449
490
|
});
|
|
450
491
|
}
|
|
492
|
+
_buttonsToNames(buttons) {
|
|
493
|
+
return (buttons || [])
|
|
494
|
+
.map((item) => {
|
|
495
|
+
return typeof item === 'string' ? item : item.name;
|
|
496
|
+
});
|
|
497
|
+
}
|
|
451
498
|
_createOptions() {
|
|
452
499
|
const config = this._createConfig();
|
|
453
|
-
const
|
|
454
|
-
...(config.
|
|
455
|
-
.map((item) => item.name),
|
|
500
|
+
const moreText = [
|
|
501
|
+
...this._buttonsToNames(config.toolbars?.text?.prepend),
|
|
456
502
|
...TextButtons,
|
|
457
503
|
];
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
504
|
+
const moreParagraph = [
|
|
505
|
+
...this._buttonsToNames(config.toolbars?.paragraph?.prepend),
|
|
506
|
+
...ParagraphButtons,
|
|
507
|
+
];
|
|
508
|
+
const moreRich = [
|
|
509
|
+
...this._buttonsToNames(config.toolbars?.rich?.prepend),
|
|
510
|
+
...RichButtons,
|
|
511
|
+
];
|
|
512
|
+
const toolbarButtons = merge(ToolbarButtons, {
|
|
513
|
+
moreText: { buttons: moreText },
|
|
514
|
+
moreParagraph: { buttons: moreParagraph },
|
|
515
|
+
moreRich: { buttons: moreRich },
|
|
516
|
+
});
|
|
517
|
+
const froalaOptions = {
|
|
462
518
|
shortcutsEnabled: ['show', 'bold', 'italic', 'underline', 'indent', 'outdent', 'undo', 'redo', 'insertImage', 'createLink'],
|
|
463
519
|
key: config.activationKey,
|
|
464
520
|
placeholderText: config.placeholder,
|
|
@@ -499,35 +555,27 @@ class FsHtmlEditorComponent {
|
|
|
499
555
|
Double: '2',
|
|
500
556
|
},
|
|
501
557
|
paragraphFormatSelection: true,
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
buttonsVisible: 5,
|
|
524
|
-
},
|
|
525
|
-
moreRich: {
|
|
526
|
-
buttons: RichButtons,
|
|
527
|
-
buttonsVisible: 3,
|
|
528
|
-
},
|
|
529
|
-
},
|
|
530
|
-
}, config.froalaConfig);
|
|
558
|
+
toolbarButtons,
|
|
559
|
+
toolbarButtonsXS: ToolbarXsButtons,
|
|
560
|
+
};
|
|
561
|
+
const options = merge(
|
|
562
|
+
// For some reason editor store somewhere pointer on default config object and dublicate options each time on init
|
|
563
|
+
// Extra merge level fixed this problem and allow to init config properly without legacy data
|
|
564
|
+
{}, froalaOptions, config.froalaConfig, {
|
|
565
|
+
pluginsEnabled: [
|
|
566
|
+
"align" /* FroalaPlugin.Align */,
|
|
567
|
+
"colors" /* FroalaPlugin.Colors */,
|
|
568
|
+
"image" /* FroalaPlugin.Image */,
|
|
569
|
+
"link" /* FroalaPlugin.Link */,
|
|
570
|
+
"lists" /* FroalaPlugin.Lists */,
|
|
571
|
+
"paragraph_format" /* FroalaPlugin.ParagraphFormat */,
|
|
572
|
+
"quote" /* FroalaPlugin.Quote */,
|
|
573
|
+
"table" /* FroalaPlugin.Table */,
|
|
574
|
+
"url" /* FroalaPlugin.Url */,
|
|
575
|
+
"video" /* FroalaPlugin.Video */,
|
|
576
|
+
],
|
|
577
|
+
});
|
|
578
|
+
return options;
|
|
531
579
|
}
|
|
532
580
|
_listenLazyInit() {
|
|
533
581
|
this.froalaLoaded$
|
|
@@ -1080,5 +1128,5 @@ class ScreenRecordPlugin extends Plugin {
|
|
|
1080
1128
|
* Generated bundle index. Do not edit.
|
|
1081
1129
|
*/
|
|
1082
1130
|
|
|
1083
|
-
export { ChecklistPlugin, CodePlugin, FS_HTML_EDITOR_CONFIG, FsHtmlEditorComponent, FsHtmlEditorContainerDirective, FsHtmlEditorModule, FsHtmlRendererComponent, FsHtmlRendererModule, MentionPlugin, ParagraphButtons, Plugin, RealtimePlugin, RichButtons, ScreenRecordPlugin, TextButtons };
|
|
1131
|
+
export { ChecklistPlugin, CodePlugin, FS_HTML_EDITOR_CONFIG, FsHtmlEditorComponent, FsHtmlEditorContainerDirective, FsHtmlEditorModule, FsHtmlRendererComponent, FsHtmlRendererModule, MentionPlugin, ParagraphButtons, Plugin, RealtimePlugin, RichButtons, ScreenRecordPlugin, TextButtons, ToolbarButtons, ToolbarXsButtons };
|
|
1084
1132
|
//# sourceMappingURL=firestitch-html-editor.mjs.map
|