asksuite-citrus 3.16.23-beta.1 → 3.16.23

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.
@@ -0,0 +1,23 @@
1
+ import Quill from 'quill';
2
+ const Inline = Quill.import('blots/inline');
3
+ export const EMOJI_REGEX = /(?:[\u{1F600}-\u{1F64F}]|[\u{1F300}-\u{1F5FF}]|[\u{1F680}-\u{1F6FF}]|[\u{1F1E0}-\u{1F1FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{1F900}-\u{1F9FF}]|[\u{1F018}-\u{1F270}]|[\u{238C}-\u{2454}]|[\u{20D0}-\u{20FF}]|[\u{FE0F}]|[\u{200D}]|[\u{E000}-\u{F8FF}]|[\u{1F004}]|[\u{1F0CF}]|[\u{1F170}-\u{1F251}]|[\u{1F004}-\u{1F0CF}]|[\u{1F004}]|[\u{203C}\u{2049}]|[\u{2122}\u{2139}]|[\u{2194}-\u{2199}]|[\u{21A9}-\u{21AA}]|[\u{231A}-\u{231B}]|[\u{2328}]|[\u{23CF}]|[\u{23E9}-\u{23F3}]|[\u{23F8}-\u{23FA}]|[\u{24C2}]|[\u{25AA}-\u{25AB}]|[\u{25B6}]|[\u{25C0}]|[\u{25FB}-\u{25FE}]|[\u{2934}-\u{2935}]|[\u{2B05}-\u{2B07}]|[\u{2B1B}-\u{2B1C}]|[\u{2B50}]|[\u{2B55}]|[\u{3030}]|[\u{303D}]|[\u{3297}]|[\u{3299}]|[\u{1FA70}-\u{1FAFF}]|[\u{1F7E0}-\u{1F7EB}]|[\u{1F90C}-\u{1F93A}]|[\u{1F93C}-\u{1F945}]|[\u{1F947}-\u{1F9FF}]|[\u{1F30D}-\u{1F567}]|[\u{2190}-\u{21FF}]|[\u{2200}-\u{22FF}]|[\u{2300}-\u{23FF}]|[\u{2460}-\u{24FF}]|[\u{25A0}-\u{25FF}]|[\u{2600}-\u{27EF}]|[\u{2900}-\u{297F}]|[\u{2B00}-\u{2BFF}]|[\u{4DC0}-\u{4DFF}]|[\u{A490}-\u{A4CF}]|[\u{2000}-\u{206F}]|[\u{2070}-\u{209F}]|[\u{20A0}-\u{20CF}]|[\u{2100}-\u{214F}]|[\u{2150}-\u{218F}]|[\u{2190}-\u{21FF}]|[\u{2200}-\u{22FF}]|[\u{2300}-\u{23FF}]|[\u{2400}-\u{243F}]|[\u{2440}-\u{245F}]|[\u{2460}-\u{24FF}]|[\u{2500}-\u{257F}]|[\u{2580}-\u{259F}]|[\u{25A0}-\u{25FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{27C0}-\u{27EF}]|[\u{27F0}-\u{27FF}]|[\u{2800}-\u{28FF}]|[\u{2900}-\u{297F}]|[\u{2980}-\u{29FF}]|[\u{2A00}-\u{2AFF}]|[\u{2B00}-\u{2BFF}])(?:[\u{FE0E}\u{FE0F}])?(?:\u{200D}(?:[\u{1F600}-\u{1F64F}]|[\u{1F300}-\u{1F5FF}]|[\u{1F680}-\u{1F6FF}]|[\u{1F1E0}-\u{1F1FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{1F900}-\u{1F9FF}]|[\u{1F018}-\u{1F270}]|[\u{238C}-\u{2454}]|[\u{20D0}-\u{20FF}]|[\u{FE0F}]|[\u{200D}]|[\u{E000}-\u{F8FF}]|[\u{2640}]|[\u{2642}]|[\u{2695}]|[\u{26F9}]|[\u{2708}]))?/gu;
4
+ export class EmojiBlot extends Inline {
5
+ static { this.blotName = 'emoji'; }
6
+ static { this.tagName = 'span'; }
7
+ static { this.className = 'quill-emoji'; }
8
+ static create(value) {
9
+ if (!value)
10
+ return super.create(false);
11
+ const node = super.create(value);
12
+ node.classList.add(EmojiBlot.className);
13
+ node.style.fontSize = '20px';
14
+ return node;
15
+ }
16
+ static formats(node) {
17
+ return node;
18
+ }
19
+ static value(node) {
20
+ return node;
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktcXVpbGwtYmxvdC5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc2tzdWl0ZS1jaXRydXMvc3JjL2xpYi9oZWxwZXJzL2Vtb2ppLXF1aWxsLWJsb3QuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FDdEIsZ3pEQUFnekQsQ0FBQztBQUVuekQsTUFBTSxPQUFPLFNBQVUsU0FBUSxNQUFNO2FBQzVCLGFBQVEsR0FBRyxPQUFPLENBQUM7YUFDbkIsWUFBTyxHQUFHLE1BQU0sQ0FBQzthQUNqQixjQUFTLEdBQUcsYUFBYSxDQUFDO0lBRWpDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBVTtRQUN0QixJQUFHLENBQUMsS0FBSztZQUFFLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFpQjtRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQWlCO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBRdWlsbCBmcm9tICdxdWlsbCc7XG5cbmNvbnN0IElubGluZSA9IFF1aWxsLmltcG9ydCgnYmxvdHMvaW5saW5lJyk7XG5cbmV4cG9ydCBjb25zdCBFTU9KSV9SRUdFWCA9XG4gIC8oPzpbXFx1ezFGNjAwfS1cXHV7MUY2NEZ9XXxbXFx1ezFGMzAwfS1cXHV7MUY1RkZ9XXxbXFx1ezFGNjgwfS1cXHV7MUY2RkZ9XXxbXFx1ezFGMUUwfS1cXHV7MUYxRkZ9XXxbXFx1ezI2MDB9LVxcdXsyNkZGfV18W1xcdXsyNzAwfS1cXHV7MjdCRn1dfFtcXHV7MUY5MDB9LVxcdXsxRjlGRn1dfFtcXHV7MUYwMTh9LVxcdXsxRjI3MH1dfFtcXHV7MjM4Q30tXFx1ezI0NTR9XXxbXFx1ezIwRDB9LVxcdXsyMEZGfV18W1xcdXtGRTBGfV18W1xcdXsyMDBEfV18W1xcdXtFMDAwfS1cXHV7RjhGRn1dfFtcXHV7MUYwMDR9XXxbXFx1ezFGMENGfV18W1xcdXsxRjE3MH0tXFx1ezFGMjUxfV18W1xcdXsxRjAwNH0tXFx1ezFGMENGfV18W1xcdXsxRjAwNH1dfFtcXHV7MjAzQ31cXHV7MjA0OX1dfFtcXHV7MjEyMn1cXHV7MjEzOX1dfFtcXHV7MjE5NH0tXFx1ezIxOTl9XXxbXFx1ezIxQTl9LVxcdXsyMUFBfV18W1xcdXsyMzFBfS1cXHV7MjMxQn1dfFtcXHV7MjMyOH1dfFtcXHV7MjNDRn1dfFtcXHV7MjNFOX0tXFx1ezIzRjN9XXxbXFx1ezIzRjh9LVxcdXsyM0ZBfV18W1xcdXsyNEMyfV18W1xcdXsyNUFBfS1cXHV7MjVBQn1dfFtcXHV7MjVCNn1dfFtcXHV7MjVDMH1dfFtcXHV7MjVGQn0tXFx1ezI1RkV9XXxbXFx1ezI5MzR9LVxcdXsyOTM1fV18W1xcdXsyQjA1fS1cXHV7MkIwN31dfFtcXHV7MkIxQn0tXFx1ezJCMUN9XXxbXFx1ezJCNTB9XXxbXFx1ezJCNTV9XXxbXFx1ezMwMzB9XXxbXFx1ezMwM0R9XXxbXFx1ezMyOTd9XXxbXFx1ezMyOTl9XXxbXFx1ezFGQTcwfS1cXHV7MUZBRkZ9XXxbXFx1ezFGN0UwfS1cXHV7MUY3RUJ9XXxbXFx1ezFGOTBDfS1cXHV7MUY5M0F9XXxbXFx1ezFGOTNDfS1cXHV7MUY5NDV9XXxbXFx1ezFGOTQ3fS1cXHV7MUY5RkZ9XXxbXFx1ezFGMzBEfS1cXHV7MUY1Njd9XXxbXFx1ezIxOTB9LVxcdXsyMUZGfV18W1xcdXsyMjAwfS1cXHV7MjJGRn1dfFtcXHV7MjMwMH0tXFx1ezIzRkZ9XXxbXFx1ezI0NjB9LVxcdXsyNEZGfV18W1xcdXsyNUEwfS1cXHV7MjVGRn1dfFtcXHV7MjYwMH0tXFx1ezI3RUZ9XXxbXFx1ezI5MDB9LVxcdXsyOTdGfV18W1xcdXsyQjAwfS1cXHV7MkJGRn1dfFtcXHV7NERDMH0tXFx1ezRERkZ9XXxbXFx1e0E0OTB9LVxcdXtBNENGfV18W1xcdXsyMDAwfS1cXHV7MjA2Rn1dfFtcXHV7MjA3MH0tXFx1ezIwOUZ9XXxbXFx1ezIwQTB9LVxcdXsyMENGfV18W1xcdXsyMTAwfS1cXHV7MjE0Rn1dfFtcXHV7MjE1MH0tXFx1ezIxOEZ9XXxbXFx1ezIxOTB9LVxcdXsyMUZGfV18W1xcdXsyMjAwfS1cXHV7MjJGRn1dfFtcXHV7MjMwMH0tXFx1ezIzRkZ9XXxbXFx1ezI0MDB9LVxcdXsyNDNGfV18W1xcdXsyNDQwfS1cXHV7MjQ1Rn1dfFtcXHV7MjQ2MH0tXFx1ezI0RkZ9XXxbXFx1ezI1MDB9LVxcdXsyNTdGfV18W1xcdXsyNTgwfS1cXHV7MjU5Rn1dfFtcXHV7MjVBMH0tXFx1ezI1RkZ9XXxbXFx1ezI2MDB9LVxcdXsyNkZGfV18W1xcdXsyNzAwfS1cXHV7MjdCRn1dfFtcXHV7MjdDMH0tXFx1ezI3RUZ9XXxbXFx1ezI3RjB9LVxcdXsyN0ZGfV18W1xcdXsyODAwfS1cXHV7MjhGRn1dfFtcXHV7MjkwMH0tXFx1ezI5N0Z9XXxbXFx1ezI5ODB9LVxcdXsyOUZGfV18W1xcdXsyQTAwfS1cXHV7MkFGRn1dfFtcXHV7MkIwMH0tXFx1ezJCRkZ9XSkoPzpbXFx1e0ZFMEV9XFx1e0ZFMEZ9XSk/KD86XFx1ezIwMER9KD86W1xcdXsxRjYwMH0tXFx1ezFGNjRGfV18W1xcdXsxRjMwMH0tXFx1ezFGNUZGfV18W1xcdXsxRjY4MH0tXFx1ezFGNkZGfV18W1xcdXsxRjFFMH0tXFx1ezFGMUZGfV18W1xcdXsyNjAwfS1cXHV7MjZGRn1dfFtcXHV7MjcwMH0tXFx1ezI3QkZ9XXxbXFx1ezFGOTAwfS1cXHV7MUY5RkZ9XXxbXFx1ezFGMDE4fS1cXHV7MUYyNzB9XXxbXFx1ezIzOEN9LVxcdXsyNDU0fV18W1xcdXsyMEQwfS1cXHV7MjBGRn1dfFtcXHV7RkUwRn1dfFtcXHV7MjAwRH1dfFtcXHV7RTAwMH0tXFx1e0Y4RkZ9XXxbXFx1ezI2NDB9XXxbXFx1ezI2NDJ9XXxbXFx1ezI2OTV9XXxbXFx1ezI2Rjl9XXxbXFx1ezI3MDh9XSkpPy9ndTtcblxuZXhwb3J0IGNsYXNzIEVtb2ppQmxvdCBleHRlbmRzIElubGluZSB7XG4gIHN0YXRpYyBibG90TmFtZSA9ICdlbW9qaSc7XG4gIHN0YXRpYyB0YWdOYW1lID0gJ3NwYW4nO1xuICBzdGF0aWMgY2xhc3NOYW1lID0gJ3F1aWxsLWVtb2ppJztcblxuICBzdGF0aWMgY3JlYXRlKHZhbHVlOiBhbnkpIHtcbiAgICBpZighdmFsdWUpIHJldHVybiBzdXBlci5jcmVhdGUoZmFsc2UpO1xuXG4gICAgY29uc3Qgbm9kZSA9IHN1cGVyLmNyZWF0ZSh2YWx1ZSlcbiAgICBub2RlLmNsYXNzTGlzdC5hZGQoRW1vamlCbG90LmNsYXNzTmFtZSk7XG4gICAgbm9kZS5zdHlsZS5mb250U2l6ZSA9ICcyMHB4JztcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JtYXRzKG5vZGU6IEhUTUxFbGVtZW50KSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBzdGF0aWMgdmFsdWUobm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufVxuIl19
@@ -28,7 +28,6 @@ export * from './lib/components/tag/tag.component';
28
28
  export * from './lib/components/arrow-tag/arrow-tag.component';
29
29
  export * from './lib/components/tab-group/tab-group.component';
30
30
  export * from './lib/components/tab-group/tab/tab.component';
31
- export * from './lib/components/notification-tooltip/notification-tooltip.component';
32
31
  // Directives
33
32
  export * from './lib/directives';
34
33
  export * from './lib/components/modal/directives';
@@ -54,4 +53,4 @@ export * from './shared/providers/flag.provider';
54
53
  export * from './shared/helpers/filter.helper';
55
54
  // Classes
56
55
  export * from './lib/classes/overlay.component';
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsOEJBQThCLENBQUM7QUFFN0MsYUFBYTtBQUNiLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLGtGQUFrRixDQUFDO0FBQ2pHLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxnRUFBZ0UsQ0FBQztBQUMvRSxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsd0VBQXdFLENBQUM7QUFDdkYsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxzRUFBc0UsQ0FBQztBQUVyRixhQUFhO0FBQ2IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG1DQUFtQyxDQUFDO0FBRWxELFdBQVc7QUFDWCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELFFBQVE7QUFDUixjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsb0RBQW9ELENBQUM7QUFFbkUsU0FBUztBQUNULGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsVUFBVTtBQUNWLGNBQWMsc0NBQXNDLENBQUM7QUFFckQsYUFBYTtBQUNiLGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsYUFBYTtBQUNiLGNBQWMsMENBQTBDLENBQUM7QUFFekQsV0FBVztBQUNYLGNBQWMsa0NBQWtDLENBQUM7QUFFakQsVUFBVTtBQUNWLGNBQWMsZ0NBQWdDLENBQUM7QUFFL0MsVUFBVTtBQUNWLGNBQWMsaUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGFza3N1aXRlLWNpdHJ1c1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2Fza3N1aXRlLWNpdHJ1cy5tb2R1bGUnO1xuXG4vLyBDb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9ib3gvYm94LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHJvcGRvd24tY29udGFpbmVyL2Ryb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Bob25lLWRkaS9waG9uZS1kZGkuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2hpcHMvY2hpcHMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXItY2FsZW5kYXIvZGF0ZS1waWNrZXItY2FsZW5kYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2tlbGV0b24vc2tlbGV0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2hhcmFjdGVyLWNvdW50ZXIvY2hhcmFjdGVyLWNvdW50ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hY2NvcmRpb24vZXh0ZW5kYWJsZS1wYW5lbC9leHRlbmRhYmxlLXBhbmVsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sb2FkaW5nLWJhci9sb2FkaW5nLWJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pY29uL2ljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaWNvbi12Mi9pY29uLXYyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RhZy90YWcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXJyb3ctdGFnL2Fycm93LXRhZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWItZ3JvdXAvdGFiLWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RhYi1ncm91cC90YWIvdGFiLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi10b29sdGlwL25vdGlmaWNhdGlvbi10b29sdGlwLmNvbXBvbmVudCc7XG5cbi8vIERpcmVjdGl2ZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2RhbC9kaXJlY3RpdmVzJztcblxuLy8gU2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RvYXN0L3RvYXN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvbW9kYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZHluYW1pYy1kcm9wZG93bi9keW5hbWljLWRyb3Bkb3duLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdGhlbWUvdGhlbWUuc2VydmljZSc7XG5cbi8vIFBpcGVzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9wYWdpbmF0ZS9wYWdpbmF0ZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2ZvcmNlLWJyZWFrLWxpbmUvZm9yY2UtYnJlYWstbGluZS5waXBlJztcblxuLy8gQ29uZmlnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90b2FzdC90b2FzdC5jb25maWcnO1xuXG4vLyBIZWxwZXJzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9wYWdpbmF0ZS9wYWdpbmF0ZS5oZWxwZXInO1xuXG4vLyBJbnRlcmZhY2VzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL3JpY2h0ZXh0LXRvb2xib3guaW50ZXJmYWNlJztcblxuLy8gVmFsaWRhdG9yc1xuZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQvdmFsaWRhdG9ycy9waG9uZS1tYXNrLnZhbGlkYXRvcic7XG5cbi8vIFByb3ZpZGVyXG5leHBvcnQgKiBmcm9tICcuL3NoYXJlZC9wcm92aWRlcnMvZmxhZy5wcm92aWRlcic7XG5cbi8vIEhlbHBlcnNcbmV4cG9ydCAqIGZyb20gJy4vc2hhcmVkL2hlbHBlcnMvZmlsdGVyLmhlbHBlcic7XG5cbi8vIENsYXNzZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvb3ZlcmxheS5jb21wb25lbnQnO1xuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsOEJBQThCLENBQUM7QUFFN0MsYUFBYTtBQUNiLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLGtGQUFrRixDQUFDO0FBQ2pHLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxnRUFBZ0UsQ0FBQztBQUMvRSxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsd0VBQXdFLENBQUM7QUFDdkYsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsOENBQThDLENBQUM7QUFFN0QsYUFBYTtBQUNiLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQ0FBbUMsQ0FBQztBQUVsRCxXQUFXO0FBQ1gsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRCxRQUFRO0FBQ1IsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG9EQUFvRCxDQUFDO0FBRW5FLFNBQVM7QUFDVCxjQUFjLG1DQUFtQyxDQUFDO0FBRWxELFVBQVU7QUFDVixjQUFjLHNDQUFzQyxDQUFDO0FBRXJELGFBQWE7QUFDYixjQUFjLDZDQUE2QyxDQUFDO0FBRTVELGFBQWE7QUFDYixjQUFjLDBDQUEwQyxDQUFDO0FBRXpELFdBQVc7QUFDWCxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELFVBQVU7QUFDVixjQUFjLGdDQUFnQyxDQUFDO0FBRS9DLFVBQVU7QUFDVixjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBhc2tzdWl0ZS1jaXRydXNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hc2tzdWl0ZS1jaXRydXMubW9kdWxlJztcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYm94L2JveC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9waG9uZS1kZGkvcGhvbmUtZGRpLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NoaXBzL2NoaXBzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLWNhbGVuZGFyL2RhdGUtcGlja2VyLWNhbGVuZGFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NrZWxldG9uL3NrZWxldG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NoYXJhY3Rlci1jb3VudGVyL2NoYXJhY3Rlci1jb3VudGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FjY29yZGlvbi9hY2NvcmRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWNjb3JkaW9uL2V4dGVuZGFibGUtcGFuZWwvZXh0ZW5kYWJsZS1wYW5lbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbG9hZGluZy1iYXIvbG9hZGluZy1iYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ljb24tdjIvaWNvbi12Mi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWcvdGFnLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Fycm93LXRhZy9hcnJvdy10YWcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGFiLWdyb3VwL3RhYi1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWItZ3JvdXAvdGFiL3RhYi5jb21wb25lbnQnO1xuXG4vLyBEaXJlY3RpdmVzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9kYWwvZGlyZWN0aXZlcyc7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90b2FzdC90b2FzdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL21vZGFsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2R5bmFtaWMtZHJvcGRvd24vZHluYW1pYy1kcm9wZG93bi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RoZW1lL3RoZW1lLnNlcnZpY2UnO1xuXG4vLyBQaXBlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvcGFnaW5hdGUvcGFnaW5hdGUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9mb3JjZS1icmVhay1saW5lL2ZvcmNlLWJyZWFrLWxpbmUucGlwZSc7XG5cbi8vIENvbmZpZ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdG9hc3QvdG9hc3QuY29uZmlnJztcblxuLy8gSGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvcGFnaW5hdGUvcGFnaW5hdGUuaGVscGVyJztcblxuLy8gSW50ZXJmYWNlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9yaWNodGV4dC10b29sYm94LmludGVyZmFjZSc7XG5cbi8vIFZhbGlkYXRvcnNcbmV4cG9ydCAqIGZyb20gJy4vc2hhcmVkL3ZhbGlkYXRvcnMvcGhvbmUtbWFzay52YWxpZGF0b3InO1xuXG4vLyBQcm92aWRlclxuZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQvcHJvdmlkZXJzL2ZsYWcucHJvdmlkZXInO1xuXG4vLyBIZWxwZXJzXG5leHBvcnQgKiBmcm9tICcuL3NoYXJlZC9oZWxwZXJzL2ZpbHRlci5oZWxwZXInO1xuXG4vLyBDbGFzc2VzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL292ZXJsYXkuY29tcG9uZW50JztcbiJdfQ==
@@ -2106,13 +2106,34 @@ function areObjectsEqual(obj1, obj2) {
2106
2106
 
2107
2107
  const URL_REGEX = /https?:\/\/[a-zA-Z0-9.-]+(?::\d+)?(?:\/[^\s]*)?/gi;
2108
2108
 
2109
+ const Inline = Quill.import('blots/inline');
2110
+ const EMOJI_REGEX = /(?:[\u{1F600}-\u{1F64F}]|[\u{1F300}-\u{1F5FF}]|[\u{1F680}-\u{1F6FF}]|[\u{1F1E0}-\u{1F1FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{1F900}-\u{1F9FF}]|[\u{1F018}-\u{1F270}]|[\u{238C}-\u{2454}]|[\u{20D0}-\u{20FF}]|[\u{FE0F}]|[\u{200D}]|[\u{E000}-\u{F8FF}]|[\u{1F004}]|[\u{1F0CF}]|[\u{1F170}-\u{1F251}]|[\u{1F004}-\u{1F0CF}]|[\u{1F004}]|[\u{203C}\u{2049}]|[\u{2122}\u{2139}]|[\u{2194}-\u{2199}]|[\u{21A9}-\u{21AA}]|[\u{231A}-\u{231B}]|[\u{2328}]|[\u{23CF}]|[\u{23E9}-\u{23F3}]|[\u{23F8}-\u{23FA}]|[\u{24C2}]|[\u{25AA}-\u{25AB}]|[\u{25B6}]|[\u{25C0}]|[\u{25FB}-\u{25FE}]|[\u{2934}-\u{2935}]|[\u{2B05}-\u{2B07}]|[\u{2B1B}-\u{2B1C}]|[\u{2B50}]|[\u{2B55}]|[\u{3030}]|[\u{303D}]|[\u{3297}]|[\u{3299}]|[\u{1FA70}-\u{1FAFF}]|[\u{1F7E0}-\u{1F7EB}]|[\u{1F90C}-\u{1F93A}]|[\u{1F93C}-\u{1F945}]|[\u{1F947}-\u{1F9FF}]|[\u{1F30D}-\u{1F567}]|[\u{2190}-\u{21FF}]|[\u{2200}-\u{22FF}]|[\u{2300}-\u{23FF}]|[\u{2460}-\u{24FF}]|[\u{25A0}-\u{25FF}]|[\u{2600}-\u{27EF}]|[\u{2900}-\u{297F}]|[\u{2B00}-\u{2BFF}]|[\u{4DC0}-\u{4DFF}]|[\u{A490}-\u{A4CF}]|[\u{2000}-\u{206F}]|[\u{2070}-\u{209F}]|[\u{20A0}-\u{20CF}]|[\u{2100}-\u{214F}]|[\u{2150}-\u{218F}]|[\u{2190}-\u{21FF}]|[\u{2200}-\u{22FF}]|[\u{2300}-\u{23FF}]|[\u{2400}-\u{243F}]|[\u{2440}-\u{245F}]|[\u{2460}-\u{24FF}]|[\u{2500}-\u{257F}]|[\u{2580}-\u{259F}]|[\u{25A0}-\u{25FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{27C0}-\u{27EF}]|[\u{27F0}-\u{27FF}]|[\u{2800}-\u{28FF}]|[\u{2900}-\u{297F}]|[\u{2980}-\u{29FF}]|[\u{2A00}-\u{2AFF}]|[\u{2B00}-\u{2BFF}])(?:[\u{FE0E}\u{FE0F}])?(?:\u{200D}(?:[\u{1F600}-\u{1F64F}]|[\u{1F300}-\u{1F5FF}]|[\u{1F680}-\u{1F6FF}]|[\u{1F1E0}-\u{1F1FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{1F900}-\u{1F9FF}]|[\u{1F018}-\u{1F270}]|[\u{238C}-\u{2454}]|[\u{20D0}-\u{20FF}]|[\u{FE0F}]|[\u{200D}]|[\u{E000}-\u{F8FF}]|[\u{2640}]|[\u{2642}]|[\u{2695}]|[\u{26F9}]|[\u{2708}]))?/gu;
2111
+ class EmojiBlot extends Inline {
2112
+ static { this.blotName = 'emoji'; }
2113
+ static { this.tagName = 'span'; }
2114
+ static { this.className = 'quill-emoji'; }
2115
+ static create(value) {
2116
+ if (!value)
2117
+ return super.create(false);
2118
+ const node = super.create(value);
2119
+ node.classList.add(EmojiBlot.className);
2120
+ node.style.fontSize = '20px';
2121
+ return node;
2122
+ }
2123
+ static formats(node) {
2124
+ return node;
2125
+ }
2126
+ static value(node) {
2127
+ return node;
2128
+ }
2129
+ }
2130
+
2109
2131
  class RichtextWrapper {
2110
2132
  get state() {
2111
2133
  return this.stateSub.value;
2112
2134
  }
2113
2135
  get listenTextChanges$() {
2114
- return fromEvent(this.quill, 'text-change')
2115
- .pipe(map(() => this.quill.root.innerHTML));
2136
+ return fromEvent(this.quill, 'text-change').pipe(map(() => this.quill.root.innerHTML));
2116
2137
  }
2117
2138
  get listenOnTouched$() {
2118
2139
  return fromEvent(this.quill, 'selection-change').pipe(filter(() => Boolean(this.quill.getSelection(false))), map(() => null));
@@ -2142,13 +2163,16 @@ class RichtextWrapper {
2142
2163
  justify_center: false,
2143
2164
  justify_right: false,
2144
2165
  },
2145
- disabledTools: []
2166
+ disabledTools: [],
2146
2167
  });
2147
2168
  this.esc$ = new Subject();
2148
2169
  this.enter$ = new Subject();
2149
2170
  this.maxLength = -1;
2150
2171
  this.breakOnEnter = false;
2151
2172
  this.allowImages = false;
2173
+ this.isFormatting = false;
2174
+ this.pendingFormat = false;
2175
+ this.lastKeyCombination = null;
2152
2176
  this.quillFormats = [
2153
2177
  'background',
2154
2178
  'bold',
@@ -2170,10 +2194,11 @@ class RichtextWrapper {
2170
2194
  'code-block',
2171
2195
  'formula',
2172
2196
  'image',
2173
- 'htmlPanel'
2197
+ 'htmlPanel',
2198
+ 'emoji',
2174
2199
  // 'video'
2175
2200
  ];
2176
- this.textChangeHandler = () => {
2201
+ this.textChangeHandler = (delta, oldDelta, source) => {
2177
2202
  this.update();
2178
2203
  };
2179
2204
  this.selectionChangeHandler = (value, oldRange, source) => {
@@ -2203,15 +2228,15 @@ class RichtextWrapper {
2203
2228
  handler: () => {
2204
2229
  this.esc$.next(true);
2205
2230
  return false;
2206
- }
2231
+ },
2207
2232
  },
2208
2233
  enter: {
2209
2234
  key: 'enter',
2210
2235
  handler: () => {
2211
2236
  this.enter$.next(true);
2212
2237
  return this.breakOnEnter;
2213
- }
2214
- }
2238
+ },
2239
+ },
2215
2240
  };
2216
2241
  this.state$ = this.stateSub.asObservable();
2217
2242
  const editorId = `editor-${new Date().getTime()}`;
@@ -2223,15 +2248,42 @@ class RichtextWrapper {
2223
2248
  matchers: [
2224
2249
  [Node.TEXT_NODE, this.urlMatcher.bind(this)],
2225
2250
  ['IMG', this.imageMatcher.bind(this)],
2226
- [Node.ELEMENT_NODE, this.htmlPanelMatcher.bind(this)]
2251
+ [Node.ELEMENT_NODE, this.htmlPanelMatcher.bind(this)],
2252
+ [Node.TEXT_NODE, this.emojiMatcher.bind(this)],
2227
2253
  ],
2228
2254
  },
2229
2255
  keyboard: { bindings: this.bindings },
2230
2256
  },
2231
- formats: this.quillFormats
2257
+ formats: this.quillFormats,
2232
2258
  });
2259
+ this.setupEmojiDetection();
2260
+ this.setupKeyListeners();
2233
2261
  this.listenEditorChanges();
2234
2262
  }
2263
+ emojiMatcher(node, delta) {
2264
+ if (node.nodeType === Node.TEXT_NODE) {
2265
+ const text = node.textContent || '';
2266
+ const matches = [...text.matchAll(EMOJI_REGEX)];
2267
+ if (matches && matches.length > 0) {
2268
+ const ops = [];
2269
+ let lastIndex = 0;
2270
+ for (const match of matches) {
2271
+ const emoji = match[0];
2272
+ const index = match.index;
2273
+ if (index > lastIndex) {
2274
+ ops.push({ insert: text.substring(lastIndex, index) });
2275
+ }
2276
+ ops.push({ insert: emoji, attributes: { emoji: true } });
2277
+ lastIndex = index + emoji.length;
2278
+ }
2279
+ if (lastIndex < text.length) {
2280
+ ops.push({ insert: text.substring(lastIndex) });
2281
+ }
2282
+ return { ops };
2283
+ }
2284
+ }
2285
+ return delta;
2286
+ }
2235
2287
  setItalic() {
2236
2288
  if (this.isToolDisabled('italic'))
2237
2289
  return;
@@ -2348,16 +2400,16 @@ class RichtextWrapper {
2348
2400
  this.maxLength = length;
2349
2401
  this.maxLengthSubscription?.unsubscribe();
2350
2402
  if (this.maxLength > 0)
2351
- this.maxLengthSubscription =
2352
- fromEvent(this.quill, 'text-change')
2353
- .pipe(filter(() => this.quill.getLength() > this.maxLength))
2354
- .subscribe(() => {
2355
- this.quill.deleteText(this.maxLength - 1, this.quill.getLength());
2356
- });
2403
+ this.maxLengthSubscription = fromEvent(this.quill, 'text-change')
2404
+ .pipe(filter(() => this.quill.getLength() > this.maxLength))
2405
+ .subscribe(() => {
2406
+ this.quill.deleteText(this.maxLength - 1, this.quill.getLength());
2407
+ });
2357
2408
  }
2358
2409
  setDisabledTools(tools) {
2359
- if (JSON.stringify(tools) !== JSON.stringify(this.stateSub.value.disabledTools))
2360
- this.stateSub.next({ ...this.stateSub.value, disabledTools: tools, });
2410
+ if (JSON.stringify(tools) !==
2411
+ JSON.stringify(this.stateSub.value.disabledTools))
2412
+ this.stateSub.next({ ...this.stateSub.value, disabledTools: tools });
2361
2413
  }
2362
2414
  setEditorClass(className) {
2363
2415
  if (!className)
@@ -2444,6 +2496,14 @@ class RichtextWrapper {
2444
2496
  this.quill.on('selection-change', this.selectionChangeHandler);
2445
2497
  this.quill.on('text-change', this.textChangeHandler);
2446
2498
  }
2499
+ setupKeyListeners() {
2500
+ this.quill.root.addEventListener('keydown', (event) => {
2501
+ this.lastKeyCombination = {
2502
+ key: event.key,
2503
+ shiftKey: event.shiftKey,
2504
+ };
2505
+ });
2506
+ }
2447
2507
  update() {
2448
2508
  let bounds;
2449
2509
  let formatsArr;
@@ -2471,21 +2531,134 @@ class RichtextWrapper {
2471
2531
  hasSelection,
2472
2532
  formats,
2473
2533
  bounds,
2474
- hasFocus
2534
+ hasFocus,
2475
2535
  };
2476
2536
  this.ngZone.run(() => {
2477
2537
  this.stateSub.next(newState);
2478
2538
  this.cd.markForCheck();
2479
2539
  });
2480
2540
  }
2541
+ setupEmojiDetection() {
2542
+ this.quill.on('text-change', (_delta, _oldDelta, _source) => {
2543
+ if (_source !== 'user' || this.isFormatting) {
2544
+ if (_source === 'user')
2545
+ this.pendingFormat = true;
2546
+ return;
2547
+ }
2548
+ this.formatEmoji();
2549
+ });
2550
+ }
2551
+ formatEmoji() {
2552
+ if (this.isFormatting) {
2553
+ this.pendingFormat = true;
2554
+ return;
2555
+ }
2556
+ this.isFormatting = true;
2557
+ try {
2558
+ const selection = this.quill.getSelection();
2559
+ const contents = this.quill.getContents();
2560
+ const ops = [];
2561
+ let hasChanges = false;
2562
+ if (!contents.ops?.length) {
2563
+ this.isFormatting = false;
2564
+ return;
2565
+ }
2566
+ const processedPositions = new Set();
2567
+ contents.ops.forEach((op) => {
2568
+ if (typeof op.insert === 'string') {
2569
+ const text = op.insert;
2570
+ const matches = [...text.matchAll(EMOJI_REGEX)];
2571
+ if (matches.length > 0) {
2572
+ hasChanges = true;
2573
+ let lastIndex = 0;
2574
+ for (const match of matches) {
2575
+ const emoji = match[0];
2576
+ const index = match.index;
2577
+ if (index > lastIndex) {
2578
+ const beforeText = text.substring(lastIndex, index);
2579
+ ops.push({
2580
+ insert: beforeText,
2581
+ attributes: { ...op.attributes, emoji: false },
2582
+ });
2583
+ }
2584
+ const position = ops.reduce((acc, op) => acc + (op.insert?.length || 0), 0);
2585
+ if (!processedPositions.has(position)) {
2586
+ ops.push({
2587
+ insert: emoji,
2588
+ attributes: { ...op.attributes, emoji: true },
2589
+ });
2590
+ processedPositions.add(position);
2591
+ }
2592
+ else {
2593
+ ops.push({
2594
+ insert: emoji,
2595
+ attributes: { ...op.attributes, },
2596
+ });
2597
+ }
2598
+ lastIndex = index + emoji.length;
2599
+ }
2600
+ if (lastIndex < text.length) {
2601
+ ops.push({
2602
+ insert: text.substring(lastIndex),
2603
+ attributes: { ...op.attributes, emoji: false },
2604
+ });
2605
+ }
2606
+ }
2607
+ else {
2608
+ ops.push({
2609
+ insert: op.insert,
2610
+ attributes: { ...op.attributes, emoji: false },
2611
+ });
2612
+ }
2613
+ }
2614
+ else {
2615
+ ops.push(op);
2616
+ }
2617
+ });
2618
+ if (hasChanges) {
2619
+ this.quill.setContents(new (Quill.import('delta'))(ops), 'api');
2620
+ requestAnimationFrame(() => {
2621
+ try {
2622
+ if (selection) {
2623
+ const wasShiftEnter = this.lastKeyCombination?.key.toLocaleLowerCase() === 'enter' &&
2624
+ this.lastKeyCombination?.shiftKey;
2625
+ this.quill.setSelection(wasShiftEnter ? selection.index + 1 : selection.index, selection.length);
2626
+ }
2627
+ }
2628
+ catch (e) {
2629
+ console.warn('Erro ao restaurar seleção:', e);
2630
+ }
2631
+ finally {
2632
+ this.isFormatting = false;
2633
+ if (this.pendingFormat) {
2634
+ this.pendingFormat = false;
2635
+ setTimeout(() => {
2636
+ if (!this.isFormatting) {
2637
+ this.formatEmoji();
2638
+ }
2639
+ }, 0);
2640
+ }
2641
+ }
2642
+ });
2643
+ }
2644
+ else {
2645
+ this.isFormatting = false;
2646
+ }
2647
+ }
2648
+ catch (error) {
2649
+ console.error('Erro ao formatar emojis:', error);
2650
+ this.isFormatting = false;
2651
+ this.pendingFormat = false;
2652
+ }
2653
+ }
2481
2654
  }
2482
- //to work around testing problems
2655
+ //to work around testing problems
2483
2656
  const QuillProxy = {
2484
- Quill
2657
+ Quill,
2485
2658
  };
2486
- //to work around testing problems
2659
+ //to work around testing problems
2487
2660
  const RichtextWrapperProxy = {
2488
- RichtextWrapper
2661
+ RichtextWrapper,
2489
2662
  };
2490
2663
 
2491
2664
  const TOOL_FUNCTION_MAP = {
@@ -4261,51 +4434,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
4261
4434
  type: Input
4262
4435
  }] } });
4263
4436
 
4264
- class NotificationTooltipComponent {
4265
- constructor() {
4266
- this.title = '';
4267
- this.message = '';
4268
- this.direction = 'horizontal';
4269
- this.positionArrowHorizontal = 'center';
4270
- this.positionArrowVertical = 'center';
4271
- this.sideArrow = 'bottom';
4272
- this.buttonTitle = "'ACTIONS.CLOSE' | translate'";
4273
- this.onClick = new EventEmitter();
4274
- this.visible = true;
4275
- this.class = '';
4276
- }
4277
- ngOnInit() {
4278
- this.class = `tooltip-arrow-${this.direction} -side-${this.sideArrow} -${this.direction === 'horizontal'
4279
- ? this.positionArrowHorizontal : this.positionArrowVertical}`;
4280
- }
4281
- closeTooltip() {
4282
- this.visible = false;
4283
- }
4284
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: NotificationTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4285
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.7", type: NotificationTooltipComponent, selector: "app-tooltip", inputs: { title: "title", message: "message", direction: "direction", positionArrowHorizontal: "positionArrowHorizontal", positionArrowVertical: "positionArrowVertical", sideArrow: "sideArrow", buttonTitle: "buttonTitle" }, outputs: { onClick: "onClick" }, ngImport: i0, template: "\n <div class=\"tooltip-container\">\n <div [ngClass]=\"class\"></div>\n <div class=\"tooltip-content\">\n @if(title !==''){\n <p class=\"title\">{{ title | translate }}</p>\n }\n <p class=\"message\">{{ message | translate }}</p>\n <button class=\"button\" (click)=\"onClick.emit($event)\">{{buttonTitle | translate}}</button>\n </div>\n </div>\n\n", styles: [".tooltip-container{display:flex;padding:12px 16px;flex-direction:column;justify-content:center;align-items:center;gap:12px;flex:1 0 0;z-index:1000;position:absolute}.tooltip-arrow-horizontal{position:absolute;transform:translate(-50%);width:0;height:0;-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);z-index:1001}.tooltip-arrow-horizontal.-side-top{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:8px solid var(--color-background-alpha-bolder-default);top:4%}.tooltip-arrow-horizontal.-side-bottom{border-left:6px solid transparent;border-right:6px solid transparent;border-top:8px solid var(--color-background-alpha-bolder-default);top:90%}.tooltip-arrow-horizontal.-left{left:7%}.tooltip-arrow-horizontal.-center{left:50%}.tooltip-arrow-horizontal.-right{left:93%}.tooltip-arrow-vertical{position:absolute;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:8px solid var(--color-background-alpha-bolder-default);z-index:1001}.tooltip-arrow-vertical.-side-left{border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:8px solid;left:4%}.tooltip-arrow-vertical.-side-right{border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:8px solid;left:96%}.tooltip-arrow-vertical.-top{top:18%}.tooltip-arrow-vertical.-center{top:45%}.tooltip-arrow-vertical.-bottom{top:73%}.tooltip-content{display:flex;padding:12px 16px;flex-direction:column;justify-content:center;align-items:center;gap:12px;flex:1 0 0;-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);width:214px;border-radius:8px;background:var(--color-background-alpha-bolder-default);align-self:stretch}.button{display:flex;height:32px;width:168px;padding:6px 12px;justify-content:center;align-items:center;gap:8px;border-radius:8px;background-color:var(--color-background-inverse-default);color:var(--color-texticon-contrast)}.title{color:var(--color-texticon-inverse-default);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;align-self:stretch}.message{color:var(--color-texticon-inverse-default, #FFF);font-family:Inter;font-size:13px;font-style:normal;font-weight:400;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] }); }
4286
- }
4287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: NotificationTooltipComponent, decorators: [{
4288
- type: Component,
4289
- args: [{ selector: 'app-tooltip', template: "\n <div class=\"tooltip-container\">\n <div [ngClass]=\"class\"></div>\n <div class=\"tooltip-content\">\n @if(title !==''){\n <p class=\"title\">{{ title | translate }}</p>\n }\n <p class=\"message\">{{ message | translate }}</p>\n <button class=\"button\" (click)=\"onClick.emit($event)\">{{buttonTitle | translate}}</button>\n </div>\n </div>\n\n", styles: [".tooltip-container{display:flex;padding:12px 16px;flex-direction:column;justify-content:center;align-items:center;gap:12px;flex:1 0 0;z-index:1000;position:absolute}.tooltip-arrow-horizontal{position:absolute;transform:translate(-50%);width:0;height:0;-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);z-index:1001}.tooltip-arrow-horizontal.-side-top{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:8px solid var(--color-background-alpha-bolder-default);top:4%}.tooltip-arrow-horizontal.-side-bottom{border-left:6px solid transparent;border-right:6px solid transparent;border-top:8px solid var(--color-background-alpha-bolder-default);top:90%}.tooltip-arrow-horizontal.-left{left:7%}.tooltip-arrow-horizontal.-center{left:50%}.tooltip-arrow-horizontal.-right{left:93%}.tooltip-arrow-vertical{position:absolute;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:8px solid var(--color-background-alpha-bolder-default);z-index:1001}.tooltip-arrow-vertical.-side-left{border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:8px solid;left:4%}.tooltip-arrow-vertical.-side-right{border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:8px solid;left:96%}.tooltip-arrow-vertical.-top{top:18%}.tooltip-arrow-vertical.-center{top:45%}.tooltip-arrow-vertical.-bottom{top:73%}.tooltip-content{display:flex;padding:12px 16px;flex-direction:column;justify-content:center;align-items:center;gap:12px;flex:1 0 0;-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);width:214px;border-radius:8px;background:var(--color-background-alpha-bolder-default);align-self:stretch}.button{display:flex;height:32px;width:168px;padding:6px 12px;justify-content:center;align-items:center;gap:8px;border-radius:8px;background-color:var(--color-background-inverse-default);color:var(--color-texticon-contrast)}.title{color:var(--color-texticon-inverse-default);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;align-self:stretch}.message{color:var(--color-texticon-inverse-default, #FFF);font-family:Inter;font-size:13px;font-style:normal;font-weight:400;line-height:20px}\n"] }]
4290
- }], ctorParameters: () => [], propDecorators: { title: [{
4291
- type: Input
4292
- }], message: [{
4293
- type: Input
4294
- }], direction: [{
4295
- type: Input
4296
- }], positionArrowHorizontal: [{
4297
- type: Input
4298
- }], positionArrowVertical: [{
4299
- type: Input
4300
- }], sideArrow: [{
4301
- type: Input
4302
- }], buttonTitle: [{
4303
- type: Input
4304
- }], onClick: [{
4305
- type: Output
4306
- }] } });
4307
-
4308
4437
  Quill.register(HTMLPanelQuillBlot);
4438
+ Quill.register(EmojiBlot);
4309
4439
  function initMyLib(myLibService) {
4310
4440
  return new StorageUtilService(myLibService);
4311
4441
  }
@@ -4371,8 +4501,7 @@ class AsksuiteCitrusModule {
4371
4501
  ListItemDirective,
4372
4502
  ArrowTagComponent,
4373
4503
  TabGroupComponent,
4374
- TabComponent,
4375
- NotificationTooltipComponent], imports: [CommonModule,
4504
+ TabComponent], imports: [CommonModule,
4376
4505
  FormsModule,
4377
4506
  ReactiveFormsModule,
4378
4507
  CdkOverlayOrigin,
@@ -4424,8 +4553,7 @@ class AsksuiteCitrusModule {
4424
4553
  ArrowTagComponent,
4425
4554
  TabGroupComponent,
4426
4555
  TabComponent,
4427
- IconV2Component,
4428
- NotificationTooltipComponent] }); }
4556
+ IconV2Component] }); }
4429
4557
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: AsksuiteCitrusModule, providers: [
4430
4558
  {
4431
4559
  provide: Storage,
@@ -4492,7 +4620,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
4492
4620
  ArrowTagComponent,
4493
4621
  TabGroupComponent,
4494
4622
  TabComponent,
4495
- NotificationTooltipComponent
4496
4623
  ],
4497
4624
  imports: [
4498
4625
  CommonModule,
@@ -4552,8 +4679,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
4552
4679
  ArrowTagComponent,
4553
4680
  TabGroupComponent,
4554
4681
  TabComponent,
4555
- IconV2Component,
4556
- NotificationTooltipComponent
4682
+ IconV2Component
4557
4683
  ],
4558
4684
  providers: [
4559
4685
  {
@@ -4857,5 +4983,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
4857
4983
  * Generated bundle index. Do not edit.
4858
4984
  */
4859
4985
 
4860
- export { ASK_MODAL_CONFIG, ASK_MODAL_DATA, ASK_TOAST_CONFIG, AccordionComponent, ArrowTagComponent, AskButtonDirective, AskDropdownDirective, AskStrokedButtonDirective, AskTextButtonDirective, AskTooltipDirective, AsksuiteCitrusModule, AutocompleteComponent, AutofocusDirective, AvatarComponent, AvatarStatus, BadgeDirective, BoxComponent, ButtonComponent, CharacterCounterComponent, CheckboxComponent, ChipsComponent, DEFAULT_DATE_FORMAT, DEFAULT_PERIODS, DatePickerCalendarComponent, DatePickerComponent, DropdownContainerComponent, DynamicDropdownService, ExtendablePanelComponent, FLAG_PROVIDER_URL, ForceBreakLinePipe, IconComponent, IconV2Component, InputComponent, InputDirective, ListItemDirective, LoadingBarComponent, ModalBodyDirective, ModalFooterDirective, ModalHeaderDirective, ModalRef, ModalService, NotificationTooltipComponent, OverlayComponent, PaginatePipe, PaginationComponent, PhoneDdiComponent, PhoneMaskValidator, RichtextToolboxDirective, ScrollDirective, SelectComponent, SkeletonComponent, SpinnerDirective, TabComponent, TabGroupComponent, TableComponent, TagComponent, ThemeService, ToastService, filterSelectedList, formatFrom, formatTo, initMyLib, removeDiacritics, searchArray, updatePaginationConfig };
4986
+ export { ASK_MODAL_CONFIG, ASK_MODAL_DATA, ASK_TOAST_CONFIG, AccordionComponent, ArrowTagComponent, AskButtonDirective, AskDropdownDirective, AskStrokedButtonDirective, AskTextButtonDirective, AskTooltipDirective, AsksuiteCitrusModule, AutocompleteComponent, AutofocusDirective, AvatarComponent, AvatarStatus, BadgeDirective, BoxComponent, ButtonComponent, CharacterCounterComponent, CheckboxComponent, ChipsComponent, DEFAULT_DATE_FORMAT, DEFAULT_PERIODS, DatePickerCalendarComponent, DatePickerComponent, DropdownContainerComponent, DynamicDropdownService, ExtendablePanelComponent, FLAG_PROVIDER_URL, ForceBreakLinePipe, IconComponent, IconV2Component, InputComponent, InputDirective, ListItemDirective, LoadingBarComponent, ModalBodyDirective, ModalFooterDirective, ModalHeaderDirective, ModalRef, ModalService, OverlayComponent, PaginatePipe, PaginationComponent, PhoneDdiComponent, PhoneMaskValidator, RichtextToolboxDirective, ScrollDirective, SelectComponent, SkeletonComponent, SpinnerDirective, TabComponent, TabGroupComponent, TableComponent, TagComponent, ThemeService, ToastService, filterSelectedList, formatFrom, formatTo, initMyLib, removeDiacritics, searchArray, updatePaginationConfig };
4861
4987
  //# sourceMappingURL=asksuite-citrus.mjs.map