UNPKG

@edugouvfr/ngx-dsfr-ext

Version:

NgxDsfrExt est une extension au package @edugouvfr/ngx-dsfr (portage Angular des éléments DSFR)

60 lines 10.1 kB
import { Injectable } from '@angular/core'; import { ReplaySubject } from 'rxjs'; import * as i0 from "@angular/core"; /** * Service permettant de gérer la communication bidirectionnelle entre la toolbar et son éditeur. */ export class DsfrEditorService { constructor() { // RPA: j'utilise des ReplaySubject(1) pour ne pas être parasité par la première émission de la valeur initiale // du BehaviorSubject, par contre comme pour ce dernier les souscripteurs seront notifiés de la dernière valeur // émise _à partir du moment où une valeur a été explicitement émise_ // source: https://stackoverflow.com/a/43119768/8737817 this._currentFormattingSubject = new ReplaySubject(1); this._formattingRequestSubject = new ReplaySubject(1); this._modelChangeSubject = new ReplaySubject(1); this._editorChangeSubject = new ReplaySubject(1); this._focusOnEditorRequestSubject = new ReplaySubject(1); this.currentFormatting$ = this._currentFormattingSubject.asObservable(); this.formattingRequest$ = this._formattingRequestSubject.asObservable(); this.modelChange$ = this._modelChangeSubject.asObservable(); this.editorChange$ = this._editorChangeSubject.asObservable(); this.focusOnEditorRequest$ = this._focusOnEditorRequestSubject.asObservable(); } /** * Permet de positionner la mise en forme de la sélection courante. */ setCurrentFormatting(formats) { this._currentFormattingSubject.next(formats); } /** * Permet de demander une nouvelle mise en forme sur la sélection courante. */ requestFormatting(request) { this._formattingRequestSubject.next(request); } /** * Permet de demander la prise de focus sur l'éditeur. */ requestFocusOnEditorContent() { this._focusOnEditorRequestSubject.next(); } /** * Permet de notifier un changement externe sur le modèle HTML. */ emitModelChange(value) { this._modelChangeSubject.next(value); } /** * Permet de notifier un changement interne du contenu de l'éditeur HTML. */ emitEditorChange(value) { this._editorChangeSubject.next(value); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DsfrEditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DsfrEditorService }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DsfrEditorService, decorators: [{ type: Injectable }], ctorParameters: () => [] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHNmci1leHQvZWRpdG9yL3NyYy9saWIvZWRpdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU1qRDs7R0FFRztBQUVILE1BQU0sT0FBTyxpQkFBaUI7SUFtRDVCO1FBQ0UsK0dBQStHO1FBQy9HLCtHQUErRztRQUMvRyxxRUFBcUU7UUFDckUsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLGFBQWEsQ0FBYSxDQUFDLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxhQUFhLENBQW9CLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxhQUFhLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksYUFBYSxDQUFPLENBQUMsQ0FBQyxDQUFDO1FBRS9ELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4RSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2hGLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLE9BQW1CO1FBQ3RDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsT0FBMEI7UUFDMUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCwyQkFBMkI7UUFDekIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7K0dBdEdVLGlCQUFpQjttSEFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIEZvcm1hdHRpbmcgPSB7IFtmb3JtYXQ6IHN0cmluZ106IHVua25vd24gfSB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBGb3JtYXR0aW5nUmVxdWVzdCA9IHsgYWN0aW9uOiBzdHJpbmc7IHZhbHVlOiBhbnkgfSB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBTZXJ2aWNlIHBlcm1ldHRhbnQgZGUgZ8OpcmVyIGxhIGNvbW11bmljYXRpb24gYmlkaXJlY3Rpb25uZWxsZSBlbnRyZSBsYSB0b29sYmFyIGV0IHNvbiDDqWRpdGV1ci5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERzZnJFZGl0b3JTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIE9ic2VydmFibGUgc3VyIGxlIGZvcm1hdGFnZSBkZSBsYSBzw6lsZWN0aW9uIGNvdXJhbnRlLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VycmVudEZvcm1hdHRpbmckOiBPYnNlcnZhYmxlPEZvcm1hdHRpbmc+O1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHN1ciBsZXMgZGVtYW5kZXMgZGUgbWlzZXMgZW4gZm9ybWUgw6ltaXNlIGRlcHVpcyBsYSB0b29sYmFyLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9ybWF0dGluZ1JlcXVlc3QkOiBPYnNlcnZhYmxlPEZvcm1hdHRpbmdSZXF1ZXN0PjtcblxuICAvKipcbiAgICogUGVybWV0IGRlIG5vdGlmaWVyIGxlcyBjaGFuZ2VtZW50cyBvcMOpcsOpcyBkZSBsJ2V4dMOpcmlldXIgc3VyIGxlIG1vZMOobGUgSFRNTC5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGVsQ2hhbmdlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBQZXJtZXQgZGUgbm90aWZpZXIgbGVzIGNoYW5nZW1lbnRzIGF1IG5pdmVhdSBkdSBjb250ZW51IGRlIGwnw6lkaXRldXIgcXVpIGltcGFjdGVyb250IGxlIG1vZMOobGUgSFRNTC5cbiAgICovXG4gIHJlYWRvbmx5IGVkaXRvckNoYW5nZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAvKipcbiAgICogUGVybWV0IGQnw6ltZXR0cmUgdW5lIGRlbWFuZGUgZGUgcHJpc2UgZGUgZm9jdXMgc3VyIGxlIGNvbnRlbnUgZGUgbCfDqWRpdGV1ciBIVE1MLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9jdXNPbkVkaXRvclJlcXVlc3QkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBTdWJqZWN0IHN1ciBsZXMgZm9ybWF0cyBkZSBsYSBzw6lsZWN0aW9uIGNvdXJhbnRlLlxuICAgKi9cbiAgcHJpdmF0ZSBfY3VycmVudEZvcm1hdHRpbmdTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PEZvcm1hdHRpbmc+O1xuXG4gIC8qKlxuICAgKiBTdWJqZWN0IHN1ciBsZXMgZGVtYW5kZXMgZGUgZm9ybWF0YWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBfZm9ybWF0dGluZ1JlcXVlc3RTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PEZvcm1hdHRpbmdSZXF1ZXN0PjtcblxuICAvKipcbiAgICogU3ViamVjdCBzdXIgbGVzIGNoYW5nZW1lbnRzIGV4dGVybmVzIHN1ciBsZSBtb2TDqGxlIEhUTUwuXG4gICAqL1xuICBwcml2YXRlIF9tb2RlbENoYW5nZVN1YmplY3Q6IFJlcGxheVN1YmplY3Q8c3RyaW5nPjtcblxuICAvKipcbiAgICogU3ViamVjdCBzdXIgbGVzIGNoYW5nZW1lbnRzIGRlIGxhIHZhbGV1ciBkZSBsJ8OpZGl0ZXVyIEhUTUwuXG4gICAqL1xuICBwcml2YXRlIF9lZGl0b3JDaGFuZ2VTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFN1YmplY3Qgc3VyIGxlcyBkZW1hbmRlcyBkZSBwcmlzZSBkZSBmb2N1cyBzdXIgbCfDqWRpdGV1ci5cbiAgICovXG4gIHByaXZhdGUgX2ZvY3VzT25FZGl0b3JSZXF1ZXN0U3ViamVjdDogUmVwbGF5U3ViamVjdDx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBSUEE6IGondXRpbGlzZSBkZXMgUmVwbGF5U3ViamVjdCgxKSBwb3VyIG5lIHBhcyDDqnRyZSBwYXJhc2l0w6kgcGFyIGxhIHByZW1pw6hyZSDDqW1pc3Npb24gZGUgbGEgdmFsZXVyIGluaXRpYWxlXG4gICAgLy8gZHUgQmVoYXZpb3JTdWJqZWN0LCBwYXIgY29udHJlIGNvbW1lIHBvdXIgY2UgZGVybmllciBsZXMgc291c2NyaXB0ZXVycyBzZXJvbnQgbm90aWZpw6lzIGRlIGxhIGRlcm5pw6hyZSB2YWxldXJcbiAgICAvLyDDqW1pc2UgX8OgIHBhcnRpciBkdSBtb21lbnQgb8O5IHVuZSB2YWxldXIgYSDDqXTDqSBleHBsaWNpdGVtZW50IMOpbWlzZV9cbiAgICAvLyBzb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80MzExOTc2OC84NzM3ODE3XG4gICAgdGhpcy5fY3VycmVudEZvcm1hdHRpbmdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Rm9ybWF0dGluZz4oMSk7XG4gICAgdGhpcy5fZm9ybWF0dGluZ1JlcXVlc3RTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Rm9ybWF0dGluZ1JlcXVlc3Q+KDEpO1xuICAgIHRoaXMuX21vZGVsQ2hhbmdlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZz4oMSk7XG4gICAgdGhpcy5fZWRpdG9yQ2hhbmdlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZz4oMSk7XG4gICAgdGhpcy5fZm9jdXNPbkVkaXRvclJlcXVlc3RTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG5cbiAgICB0aGlzLmN1cnJlbnRGb3JtYXR0aW5nJCA9IHRoaXMuX2N1cnJlbnRGb3JtYXR0aW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmZvcm1hdHRpbmdSZXF1ZXN0JCA9IHRoaXMuX2Zvcm1hdHRpbmdSZXF1ZXN0U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLm1vZGVsQ2hhbmdlJCA9IHRoaXMuX21vZGVsQ2hhbmdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmVkaXRvckNoYW5nZSQgPSB0aGlzLl9lZGl0b3JDaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuZm9jdXNPbkVkaXRvclJlcXVlc3QkID0gdGhpcy5fZm9jdXNPbkVkaXRvclJlcXVlc3RTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcm1ldCBkZSBwb3NpdGlvbm5lciBsYSBtaXNlIGVuIGZvcm1lIGRlIGxhIHPDqWxlY3Rpb24gY291cmFudGUuXG4gICAqL1xuICBzZXRDdXJyZW50Rm9ybWF0dGluZyhmb3JtYXRzOiBGb3JtYXR0aW5nKSB7XG4gICAgdGhpcy5fY3VycmVudEZvcm1hdHRpbmdTdWJqZWN0Lm5leHQoZm9ybWF0cyk7XG4gIH1cblxuICAvKipcbiAgICogUGVybWV0IGRlIGRlbWFuZGVyIHVuZSBub3V2ZWxsZSBtaXNlIGVuIGZvcm1lIHN1ciBsYSBzw6lsZWN0aW9uIGNvdXJhbnRlLlxuICAgKi9cbiAgcmVxdWVzdEZvcm1hdHRpbmcocmVxdWVzdDogRm9ybWF0dGluZ1JlcXVlc3QpIHtcbiAgICB0aGlzLl9mb3JtYXR0aW5nUmVxdWVzdFN1YmplY3QubmV4dChyZXF1ZXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJtZXQgZGUgZGVtYW5kZXIgbGEgcHJpc2UgZGUgZm9jdXMgc3VyIGwnw6lkaXRldXIuXG4gICAqL1xuICByZXF1ZXN0Rm9jdXNPbkVkaXRvckNvbnRlbnQoKSB7XG4gICAgdGhpcy5fZm9jdXNPbkVkaXRvclJlcXVlc3RTdWJqZWN0Lm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJtZXQgZGUgbm90aWZpZXIgdW4gY2hhbmdlbWVudCBleHRlcm5lIHN1ciBsZSBtb2TDqGxlIEhUTUwuXG4gICAqL1xuICBlbWl0TW9kZWxDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX21vZGVsQ2hhbmdlU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJtZXQgZGUgbm90aWZpZXIgdW4gY2hhbmdlbWVudCBpbnRlcm5lIGR1IGNvbnRlbnUgZGUgbCfDqWRpdGV1ciBIVE1MLlxuICAgKi9cbiAgZW1pdEVkaXRvckNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZWRpdG9yQ2hhbmdlU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxufVxuIl19