@libs-ui/utils 0.2.347-0 → 0.2.348-4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dom.d.ts CHANGED
@@ -50,3 +50,4 @@ export declare const processPasteData: (e: ClipboardEvent, config: {
50
50
  callBack?: (positonReturn: "file" | "range" | "content" | "no-content") => void;
51
51
  }) => Promise<void>;
52
52
  export declare const insertContentWithRange: (content: string, savedRange: Range, element: HTMLElement) => void;
53
+ export declare const quill2xGetHtmlByDelta: (delta?: Delta | null) => string;
package/esm2022/dom.mjs CHANGED
@@ -1,12 +1,14 @@
1
1
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
2
2
  import DeviceDetector from 'device-detector-js';
3
3
  import Quill from 'quill';
4
+ import Quill2x from 'quill2x';
4
5
  import { finalize, fromEvent, lastValueFrom, mergeMap, startWith, takeUntil, tap, timer } from 'rxjs';
5
6
  import { decodeEscapeHtml } from './format-text';
6
7
  import { set } from './helpers';
7
8
  const deviceDetector = new DeviceDetector();
8
- const parser = new DOMParser();
9
- const quill = new Quill(document.createElement('div'));
9
+ let parser = null;
10
+ let quill = null;
11
+ let quill2x = null;
10
12
  export const getDeviceInfo = () => {
11
13
  return deviceDetector.parse(window.navigator.userAgent);
12
14
  };
@@ -23,6 +25,9 @@ export const getEventNameHandleClick = (() => {
23
25
  return nameEventHandleClick;
24
26
  })();
25
27
  export const getDocumentByString = (htmlStr) => {
28
+ if (!parser) {
29
+ parser = new DOMParser();
30
+ }
26
31
  return parser.parseFromString(htmlStr, 'text/html');
27
32
  };
28
33
  export const cloneIBoundingClientRect = (rect) => {
@@ -125,6 +130,9 @@ export const getDragEventByElement = (config) => {
125
130
  return mouseDown.pipe(mergeMap((e) => (config.isStartWithMouseDownEvent ? mousemove.pipe(startWith(e)) : mousemove)), takeUntilDestroyed(config.destroyRef), finalize(removeClass));
126
131
  };
127
132
  export const getHTMLFromQuill = async (data, options) => {
133
+ if (!quill) {
134
+ quill = new Quill(document.createElement('div'));
135
+ }
128
136
  const { replaceNewLineTo = '<br>', replaceTagBRTo, replaceTags, replaceBrToDiv } = options || {};
129
137
  const delta = typeof data === 'string' ? await getDeltaFromHTML(data) : data;
130
138
  if (options?.functionReplaceDelta) {
@@ -176,6 +184,9 @@ export const convertHtmlToDivBlocks = (html) => {
176
184
  return divs.join('');
177
185
  };
178
186
  export const getDeltaFromHTML = async (html) => {
187
+ if (!quill) {
188
+ quill = new Quill(document.createElement('div'));
189
+ }
179
190
  quill.root.innerHTML = html;
180
191
  await lastValueFrom(timer(1000));
181
192
  return quill.getContents();
@@ -251,4 +262,14 @@ export const insertContentWithRange = (content, savedRange, element) => {
251
262
  selection.removeAllRanges();
252
263
  selection.addRange(savedRange);
253
264
  };
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy11aS91dGlscy9zcmMvZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sY0FBYyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVoQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO0FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7QUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRXZELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDaEMsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDMUQsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxFQUFFO0lBQ3JDLE1BQU0sSUFBSSxHQUFHLGFBQWEsRUFBRSxDQUFDO0lBQzdCLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQ3hELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsR0FBRyxFQUFFO0lBQzNDLE1BQU0sVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDO0lBQ25DLElBQUksb0JBQW9CLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUMxRixJQUFJLGVBQWUsSUFBSSxNQUFNLElBQUssZ0JBQWdCLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxFQUFHLENBQUM7UUFDakcsb0JBQW9CLEdBQUcsYUFBYSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxPQUFPLG9CQUFvQixDQUFDO0FBQzlCLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFTCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE9BQWUsRUFBWSxFQUFFO0lBQy9ELE9BQU8sTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDdEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxJQUF5QixFQUF1QixFQUFFO0lBQ3pGLE9BQU87UUFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNoQixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNwQixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN0QixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQztLQUN2QixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxFQUFlLEVBQUUsTUFBOEIsRUFBUSxFQUFFO0lBQ3hGLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFjLE1BQU0sRUFBcUMsRUFBRTtJQUNyRixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFDdEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ25ELENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsRUFDekQsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBRS9ELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNqQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQStDLEVBQUUsUUFBZ0IsRUFBUSxFQUFFO0lBQzFHLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQyxPQUFPO0lBQ1QsQ0FBQztJQUNELE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQixPQUFPLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsU0FBc0IsRUFBRSxPQUFvQixFQUFFLGFBQTJCLEVBQUUsVUFBNEMsRUFBVyxFQUFFO0lBQ3BLLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0lBRWxGLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUVoRSxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1FBQy9DLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3BELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRCxNQUFNLGtCQUFrQixHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFDL0MsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO0lBQ2pELE1BQU0sUUFBUSxHQUFHLFlBQVksR0FBRyxrQkFBa0IsR0FBRyxlQUFlLENBQUM7SUFDckUsTUFBTSxTQUFTLEdBQUcsYUFBYSxHQUFHLG1CQUFtQixHQUFHLGNBQWMsQ0FBQztJQUV2RSxNQUFNLFVBQVUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFbkQsSUFBSSxZQUFZLElBQUksVUFBVSxJQUFJLFVBQVUsSUFBSSxRQUFRLElBQUksYUFBYSxJQUFJLFdBQVcsSUFBSSxXQUFXLElBQUksU0FBUyxFQUFFLENBQUM7UUFDckgsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLGFBQW1ELEVBQUUsT0FBcUIsRUFBRSxJQUFjLEVBQVcsRUFBRTtJQUMvSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxJQUFLLEVBQWMsQ0FBQztJQUNoRixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDO0lBQ2pELE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7SUFDL0IsTUFBTSxRQUFRLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQztJQUM5QixNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLGFBQWEsQ0FBQztJQUMzQyxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksT0FBTyxJQUFJLFNBQVMsSUFBSSxHQUFHLElBQUksT0FBTyxJQUFJLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNyRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsTUFTckMsRUFBRSxFQUFFO0lBQ0gsSUFBSSxLQUFvQyxDQUFDO0lBQ3pDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtRQUNwQixLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUN0QixRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDNUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbEQsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQyxDQUFDO0lBQ0YsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFO1FBQ3ZCLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNuRCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFDO0lBQ0YsU0FBUyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLENBQUM7U0FDN0MsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUMzRCxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQ3RDO1NBQ0EsU0FBUyxFQUFFLENBQUM7SUFDZixTQUFTLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQztTQUM3QyxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQ3hELGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FDdEM7U0FDQSxTQUFTLEVBQUUsQ0FBQztJQUVmLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBYSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUNoRixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNSLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixRQUFRLEVBQUUsQ0FBQztRQUNYLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDRixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQWEsTUFBTSxDQUFDLGNBQWMsSUFBSSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUN0RixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNSLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixXQUFXLEVBQUUsQ0FBQztRQUNkLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBRUYsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFhLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUM1RixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNSLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsT0FBTyxDQUFDLENBQ25CLENBQUM7SUFFRixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQ25CLFFBQVEsQ0FBQyxDQUFDLENBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQzFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFDckMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUN0QixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxFQUNuQyxJQUFvQixFQUNwQixPQVVDLEVBQ2dCLEVBQUU7SUFDbkIsTUFBTSxFQUFFLGdCQUFnQixHQUFHLE1BQU0sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDakcsTUFBTSxLQUFLLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDN0UsSUFBSSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztRQUNsQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7UUFDdkIsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxJQUFJLE9BQU8sRUFBRSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO29CQUNyQixFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN6RCxDQUFDO2dCQUNELElBQUksY0FBYyxFQUFFLENBQUM7b0JBQ25CLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUN6RCxDQUFDO2dCQUVELElBQUksV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO29CQUN4QixLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO3dCQUM5QixFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLFNBQVMsR0FBRyxDQUFXLENBQUM7d0JBQy9GLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsU0FBUyxHQUFHLENBQVcsQ0FBQztvQkFDbkcsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsSUFBSSxRQUFRLEdBQUcsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO0lBQ3JHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbkIsUUFBUSxHQUFHLHNCQUFzQixDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBQ0QsT0FBTyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRTtJQUM3RCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUM7SUFDbEMsb0NBQW9DO0lBQ3BDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRWpFLDBCQUEwQjtJQUMxQixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRWhELE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7SUFDL0IsTUFBTSxJQUFJLEdBQWEsRUFBRSxDQUFDO0lBRTFCLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDeEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPO1lBQUUsU0FBUztRQUV2Qiw0Q0FBNEM7UUFDNUMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUV0QixrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxTQUFTLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBa0IsRUFBRTtJQUNyRSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFFNUIsTUFBTSxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakMsT0FBTyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDN0IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxFQUNuQyxDQUFpQixFQUNqQixNQUlDLEVBQ0QsRUFBRTtJQUNGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDL0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7SUFDckMsSUFBSSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixPQUFPO0lBQ1QsQ0FBQztJQUNELDBDQUEwQztJQUMxQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEMsSUFBSSxVQUFVLEdBQWlCLElBQUksQ0FBQztJQUNwQyxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsa0RBQWtEO1FBQ2xELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztRQUNoRCxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0SCxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDdkIsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUNELG9DQUFvQztJQUNwQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbkIsc0NBQXNDO0lBQ3RDLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoRSxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0QsSUFBSSxlQUFlLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLGVBQWUsR0FBRyxNQUFNLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDckIsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hDLE9BQU87SUFDVCxDQUFDO0lBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDN0QsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE9BQU87SUFDVCxDQUFDO0lBQ0QsT0FBTyxDQUFDLFNBQVMsSUFBSSxlQUFlLENBQUM7SUFDckMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsT0FBZSxFQUFFLFVBQWlCLEVBQUUsT0FBb0IsRUFBUSxFQUFFO0lBQ3ZHLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZiw0QkFBNEI7UUFDNUIsT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUM7UUFDN0IsT0FBTztJQUNULENBQUM7SUFDRCxvQkFBb0I7SUFDcEIsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVCLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0Isa0NBQWtDO0lBQ2xDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM1Qix3Q0FBd0M7SUFDeEMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxPQUFPLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztJQUM1QixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNuRCxPQUFPLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQixRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsbUNBQW1DO0lBQ25DLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsZ0RBQWdEO0lBQ2hELElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IElCb3VuZGluZ0NsaWVudFJlY3QgfSBmcm9tICdAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzJztcbmltcG9ydCBEZXZpY2VEZXRlY3RvciBmcm9tICdkZXZpY2UtZGV0ZWN0b3ItanMnO1xuaW1wb3J0IFF1aWxsIGZyb20gJ3F1aWxsJztcbmltcG9ydCBEZWx0YSBmcm9tICdxdWlsbC1kZWx0YSc7XG5pbXBvcnQgeyBmaW5hbGl6ZSwgZnJvbUV2ZW50LCBsYXN0VmFsdWVGcm9tLCBtZXJnZU1hcCwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlY29kZUVzY2FwZUh0bWwgfSBmcm9tICcuL2Zvcm1hdC10ZXh0JztcbmltcG9ydCB7IHNldCB9IGZyb20gJy4vaGVscGVycyc7XG5cbmNvbnN0IGRldmljZURldGVjdG9yID0gbmV3IERldmljZURldGVjdG9yKCk7XG5jb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG5jb25zdCBxdWlsbCA9IG5ldyBRdWlsbChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XG5cbmV4cG9ydCBjb25zdCBnZXREZXZpY2VJbmZvID0gKCkgPT4ge1xuICByZXR1cm4gZGV2aWNlRGV0ZWN0b3IucGFyc2Uod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpO1xufTtcbmV4cG9ydCBjb25zdCBnZXRQbGF0RnJvbUJyb3dzZXIgPSAoKSA9PiB7XG4gIGNvbnN0IGluZm8gPSBnZXREZXZpY2VJbmZvKCk7XG4gIHJldHVybiBgJHtpbmZvLmNsaWVudD8ubmFtZX0gJHtpbmZvLmNsaWVudD8udmVyc2lvbn1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEV2ZW50TmFtZUhhbmRsZUNsaWNrID0gKCgpID0+IHtcbiAgY29uc3QgZGV2aWNlSW5mbyA9IGdldERldmljZUluZm8oKTtcbiAgbGV0IG5hbWVFdmVudEhhbmRsZUNsaWNrID0gZGV2aWNlSW5mby5kZXZpY2U/LnR5cGUgPT09ICdkZXNrdG9wJyA/ICdjbGljaycgOiAndG91Y2hzdGFydCc7XG4gIGlmICgnb25wb2ludGVyZG93bicgaW4gd2luZG93ICYmICAnbWF4VG91Y2hQb2ludHMnIGluIG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgPiAwICkge1xuICAgIG5hbWVFdmVudEhhbmRsZUNsaWNrID0gJ3BvaW50ZXJkb3duJztcbiAgfVxuXG4gIHJldHVybiBuYW1lRXZlbnRIYW5kbGVDbGljaztcbn0pKCk7XG5cbmV4cG9ydCBjb25zdCBnZXREb2N1bWVudEJ5U3RyaW5nID0gKGh0bWxTdHI6IHN0cmluZyk6IERvY3VtZW50ID0+IHtcbiAgcmV0dXJuIHBhcnNlci5wYXJzZUZyb21TdHJpbmcoaHRtbFN0ciwgJ3RleHQvaHRtbCcpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdCA9IChyZWN0OiBJQm91bmRpbmdDbGllbnRSZWN0KTogSUJvdW5kaW5nQ2xpZW50UmVjdCA9PiB7XG4gIHJldHVybiB7XG4gICAgdG9wOiByZWN0Wyd0b3AnXSxcbiAgICBsZWZ0OiByZWN0WydsZWZ0J10sXG4gICAgd2lkdGg6IHJlY3RbJ3dpZHRoJ10sXG4gICAgaGVpZ2h0OiByZWN0WydoZWlnaHQnXSxcbiAgICBib3R0b206IHJlY3RbJ2JvdHRvbSddLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFN0eWxlc0VsZW1lbnQgPSAoZWw6IEhUTUxFbGVtZW50LCBzdHlsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkID0+IHtcbiAgT2JqZWN0LmtleXMoc3R5bGVzKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4gc2V0KGVsLCBgc3R5bGUuJHtrZXl9YCwgc3R5bGVzW2tleV0pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWaWV3cG9ydCA9ICh3aW46IFdpbmRvdyA9IHdpbmRvdyk6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSA9PiB7XG4gIGNvbnN0IGRvYyA9IHdpbi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsXG4gICAgYm9keSA9IHdpbi5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdLFxuICAgIHcgPSB3aW4uaW5uZXJXaWR0aCB8fCBkb2MuY2xpZW50V2lkdGggfHwgYm9keS5jbGllbnRXaWR0aCxcbiAgICBoID0gd2luLmlubmVySGVpZ2h0IHx8IGRvYy5jbGllbnRIZWlnaHQgfHwgYm9keS5jbGllbnRIZWlnaHQ7XG5cbiAgcmV0dXJuIHsgd2lkdGg6IHcsIGhlaWdodDogaCB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldENhcmV0UG9zaXRpb24gPSAoZWxlbWVudDogSFRNTFRleHRBcmVhRWxlbWVudCB8IEhUTUxJbnB1dEVsZW1lbnQsIHBvc2l0aW9uOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsZW1lbnQuZm9jdXMoKTtcbiAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShwb3NpdGlvbiwgcG9zaXRpb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrVmlld0luU2NyZWVuID0gKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBlbGVtZW50U2Nyb2xsPzogSFRNTEVsZW1lbnQsIG1heFRvcExlZnQ/OiB7IHRvcD86IG51bWJlcjsgbGVmdD86IG51bWJlciB9KTogYm9vbGVhbiA9PiB7XG4gIGlmICghY29udGFpbmVyIHx8ICFlbGVtZW50KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgcmVjdENvbnRhaW5lciA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdChjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gIGlmIChlbGVtZW50U2Nyb2xsKSB7XG4gICAgY29uc3QgcmVjdEVsZW1lbnRTY3JvbGwgPSBlbGVtZW50U2Nyb2xsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgcmVjdENvbnRhaW5lclsnbGVmdCddID0gcmVjdEVsZW1lbnRTY3JvbGwubGVmdDtcbiAgICByZWN0Q29udGFpbmVyWyd0b3AnXSA9IHJlY3RFbGVtZW50U2Nyb2xsLnRvcDtcbiAgfVxuXG4gIGNvbnN0IHJlY3RFbGVtZW50ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgeyBsZWZ0LCB0b3AgfSA9IHJlY3RFbGVtZW50O1xuICBjb25zdCB0b3BDb250YWluZXIgPSByZWN0Q29udGFpbmVyWyd0b3AnXTtcbiAgY29uc3QgbGVmdENvbnRhaW5lciA9IHJlY3RDb250YWluZXJbJ2xlZnQnXTtcbiAgY29uc3Qgd2lkdGhDb250YWluZXIgPSByZWN0Q29udGFpbmVyWyd3aWR0aCddO1xuICBjb25zdCBoZWlnaHRDb250YWluZXIgPSByZWN0Q29udGFpbmVyWydoZWlnaHQnXTtcbiAgY29uc3Qgc2Nyb2xsVG9wQ29udGFpbmVyID0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgY29uc3Qgc2Nyb2xsTGVmdENvbnRhaW5lciA9IGNvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICBjb25zdCBsaW1pdFRvcCA9IHRvcENvbnRhaW5lciArIHNjcm9sbFRvcENvbnRhaW5lciArIGhlaWdodENvbnRhaW5lcjtcbiAgY29uc3QgbGltaXRMZWZ0ID0gbGVmdENvbnRhaW5lciArIHNjcm9sbExlZnRDb250YWluZXIgKyB3aWR0aENvbnRhaW5lcjtcblxuICBjb25zdCBtYXhUb3BJdGVtID0gdG9wICsgKG1heFRvcExlZnQ/LnRvcCB8fCAwKTtcbiAgY29uc3QgbWF4TGVmdEl0ZW0gPSBsZWZ0ICsgKG1heFRvcExlZnQ/LmxlZnQgfHwgMCk7XG5cbiAgaWYgKHRvcENvbnRhaW5lciA8PSBtYXhUb3BJdGVtICYmIG1heFRvcEl0ZW0gPD0gbGltaXRUb3AgJiYgbGVmdENvbnRhaW5lciA8PSBtYXhMZWZ0SXRlbSAmJiBtYXhMZWZ0SXRlbSA8PSBsaW1pdExlZnQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja01vdXNlT3ZlckluQ29udGFpbmVyID0gKG1vdXNlUG9zaXRpb246IHsgY2xpZW50WDogbnVtYmVyOyBjbGllbnRZOiBudW1iZXIgfSwgZWxlbWVudD86IEhUTUxFbGVtZW50LCByZWN0PzogRE9NUmVjdCk6IGJvb2xlYW4gPT4ge1xuICBpZiAoIWVsZW1lbnQgJiYgIXJlY3QpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgcmVjdEVsZW1lbnQgPSByZWN0IHx8IGVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHx8ICh7fSBhcyBET01SZWN0KTtcbiAgY29uc3QgeyBsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQgfSA9IHJlY3RFbGVtZW50O1xuICBjb25zdCBsaW1pdExlZnQgPSBsZWZ0ICsgd2lkdGg7XG4gIGNvbnN0IGxpbWl0VG9wID0gdG9wICsgaGVpZ2h0O1xuICBjb25zdCB7IGNsaWVudFgsIGNsaWVudFkgfSA9IG1vdXNlUG9zaXRpb247XG4gIGlmIChsZWZ0IDw9IGNsaWVudFggJiYgY2xpZW50WCA8PSBsaW1pdExlZnQgJiYgdG9wIDw9IGNsaWVudFkgJiYgY2xpZW50WSA8PSBsaW1pdFRvcCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERyYWdFdmVudEJ5RWxlbWVudCA9IChjb25maWc6IHtcbiAgZWxlbWVudE1vdXNlRG93bjogSFRNTEVsZW1lbnQ7XG4gIGZ1bmN0aW9uTW91c2VEb3duPzogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICBpc1N0YXJ0V2l0aE1vdXNlRG93bkV2ZW50PzogYm9vbGVhbjtcbiAgZWxlbWVudE1vdXNlTW92ZT86IEhUTUxFbGVtZW50O1xuICBmdW5jdGlvbk1vdXNlTW92ZT86IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgZWxlbWVudE1vdXNlVXA/OiBIVE1MRWxlbWVudDtcbiAgZnVuY3Rpb25Nb3VzZVVwPzogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICBkZXN0cm95UmVmOiBEZXN0cm95UmVmO1xufSkgPT4ge1xuICBsZXQgdGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBjb25zdCBhZGRDbGFzcyA9ICgpID0+IHtcbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCchc2VsZWN0LW5vbmUnKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnIWN1cnNvci1ncmFiYmluZycpO1xuICAgIH0sIDI1MCk7XG4gIH07XG4gIGNvbnN0IHJlbW92ZUNsYXNzID0gKCkgPT4ge1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnIXNlbGVjdC1ub25lJyk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCchY3Vyc29yLWdyYWJiaW5nJyk7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgfTtcbiAgZnJvbUV2ZW50KGNvbmZpZy5lbGVtZW50TW91c2VEb3duLCAnbW91c2VsZWF2ZScpXG4gICAgLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdjdXJzb3ItcG9pbnRlcicpKSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZChjb25maWcuZGVzdHJveVJlZilcbiAgICApXG4gICAgLnN1YnNjcmliZSgpO1xuICBmcm9tRXZlbnQoY29uZmlnLmVsZW1lbnRNb3VzZURvd24sICdtb3VzZWVudGVyJylcbiAgICAucGlwZShcbiAgICAgIHRhcCgoKSA9PiBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2N1cnNvci1wb2ludGVyJykpLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKGNvbmZpZy5kZXN0cm95UmVmKVxuICAgIClcbiAgICAuc3Vic2NyaWJlKCk7XG5cbiAgY29uc3QgbW91c2VEb3duID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGNvbmZpZy5lbGVtZW50TW91c2VEb3duLCAnbW91c2Vkb3duJykucGlwZShcbiAgICB0YXAoKGUpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBhZGRDbGFzcygpO1xuICAgICAgY29uZmlnLmZ1bmN0aW9uTW91c2VEb3duPy4oZSk7XG4gICAgfSlcbiAgKTtcbiAgY29uc3QgbW91c2V1cCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pihjb25maWcuZWxlbWVudE1vdXNlVXAgfHwgZG9jdW1lbnQsICdtb3VzZXVwJykucGlwZShcbiAgICB0YXAoKGUpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZW1vdmVDbGFzcygpO1xuICAgICAgY29uZmlnLmZ1bmN0aW9uTW91c2VVcD8uKGUpO1xuICAgIH0pXG4gICk7XG5cbiAgY29uc3QgbW91c2Vtb3ZlID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGNvbmZpZy5lbGVtZW50TW91c2VNb3ZlIHx8IGRvY3VtZW50LCAnbW91c2Vtb3ZlJykucGlwZShcbiAgICB0YXAoKGUpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBjb25maWcuZnVuY3Rpb25Nb3VzZU1vdmU/LihlKTtcbiAgICB9KSxcbiAgICB0YWtlVW50aWwobW91c2V1cClcbiAgKTtcblxuICByZXR1cm4gbW91c2VEb3duLnBpcGUoXG4gICAgbWVyZ2VNYXAoKGU6IE1vdXNlRXZlbnQpID0+IChjb25maWcuaXNTdGFydFdpdGhNb3VzZURvd25FdmVudCA/IG1vdXNlbW92ZS5waXBlKHN0YXJ0V2l0aChlKSkgOiBtb3VzZW1vdmUpKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoY29uZmlnLmRlc3Ryb3lSZWYpLFxuICAgIGZpbmFsaXplKHJlbW92ZUNsYXNzKVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhUTUxGcm9tUXVpbGwgPSBhc3luYyAoXG4gIGRhdGE6IERlbHRhIHwgc3RyaW5nLFxuICBvcHRpb25zPzoge1xuICAgIGdldFJvb3RIdG1sPzogYm9vbGVhbjtcbiAgICByZXBsYWNlTmV3TGluZVRvPzogc3RyaW5nO1xuICAgIHJlcGxhY2VUYWdCUlRvPzogc3RyaW5nO1xuICAgIHJlcGxhY2VCclRvRGl2PzogYm9vbGVhbjtcbiAgICBmdW5jdGlvblJlcGxhY2VEZWx0YT86IChvcDogRGVsdGEpID0+IHZvaWQ7XG4gICAgcmVwbGFjZVRhZ3M/OiB7XG4gICAgICB0YWc6IHN0cmluZztcbiAgICAgIHJlcGxhY2VUbzogc3RyaW5nO1xuICAgIH1bXTtcbiAgfVxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgY29uc3QgeyByZXBsYWNlTmV3TGluZVRvID0gJzxicj4nLCByZXBsYWNlVGFnQlJUbywgcmVwbGFjZVRhZ3MsIHJlcGxhY2VCclRvRGl2IH0gPSBvcHRpb25zIHx8IHt9O1xuICBjb25zdCBkZWx0YSA9IHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJyA/IGF3YWl0IGdldERlbHRhRnJvbUhUTUwoZGF0YSkgOiBkYXRhO1xuICBpZiAob3B0aW9ucz8uZnVuY3Rpb25SZXBsYWNlRGVsdGEpIHtcbiAgICBvcHRpb25zLmZ1bmN0aW9uUmVwbGFjZURlbHRhKGRlbHRhKTtcbiAgfVxuXG4gIGRlbHRhLm9wcy5mb3JFYWNoKChvcCkgPT4ge1xuICAgIGlmIChvcC5pbnNlcnQpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3AuaW5zZXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAocmVwbGFjZU5ld0xpbmVUbykge1xuICAgICAgICAgIG9wLmluc2VydCA9IG9wLmluc2VydC5yZXBsYWNlKC9cXG4vZywgcmVwbGFjZU5ld0xpbmVUbyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcGxhY2VUYWdCUlRvKSB7XG4gICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UoLzxicj4vZywgcmVwbGFjZVRhZ0JSVG8pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcGxhY2VUYWdzPy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiByZXBsYWNlVGFncykge1xuICAgICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UobmV3IFJlZ0V4cChgPCR7dGFnLnRhZ30+YCwgJ2cnKSwgYDwke3RhZy5yZXBsYWNlVG99PmApIGFzIHN0cmluZztcbiAgICAgICAgICAgIG9wLmluc2VydCA9IG9wLmluc2VydC5yZXBsYWNlKG5ldyBSZWdFeHAoYDwvJHt0YWcudGFnfT5gLCAnZycpLCBgPC8ke3RhZy5yZXBsYWNlVG99PmApIGFzIHN0cmluZztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBxdWlsbC5zZXRDb250ZW50cyhkZWx0YSk7XG4gIGxldCBodG1sVGV4dCA9IG9wdGlvbnM/LmdldFJvb3RIdG1sID8gcXVpbGwucm9vdC5pbm5lckhUTUwgOiBxdWlsbC5yb290LmZpcnN0RWxlbWVudENoaWxkPy5pbm5lckhUTUw7XG4gIGlmIChyZXBsYWNlQnJUb0Rpdikge1xuICAgIGh0bWxUZXh0ID0gY29udmVydEh0bWxUb0RpdkJsb2NrcyhodG1sVGV4dCB8fCAnJyk7XG4gIH1cbiAgcmV0dXJuIGRlY29kZUVzY2FwZUh0bWwoaHRtbFRleHQgfHwgJycpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRIdG1sVG9EaXZCbG9ja3MgPSAoaHRtbDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgQlJFQUtfVE9LRU4gPSAnPDw8QlJFQUs+Pj4nO1xuICAvLyBCxrDhu5tjIDE6IHRoYXkgPGJyPiB0aMOgbmggdG9rZW4gdOG6oW1cbiAgY29uc3Qgbm9ybWFsaXplZEh0bWwgPSBodG1sLnJlcGxhY2UoLzxiclxccypcXC8/Pi9naSwgQlJFQUtfVE9LRU4pO1xuXG4gIC8vIELGsOG7m2MgMjogdMOhY2ggdGhlbyB0b2tlblxuICBjb25zdCBwYXJ0cyA9IG5vcm1hbGl6ZWRIdG1sLnNwbGl0KEJSRUFLX1RPS0VOKTtcblxuICBjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gIGNvbnN0IGRpdnM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCByYXcgb2YgcGFydHMpIHtcbiAgICBjb25zdCB0cmltbWVkID0gcmF3LnRyaW0oKTtcbiAgICBpZiAoIXRyaW1tZWQpIGNvbnRpbnVlO1xuXG4gICAgLy8gcGFyc2UgbeG7l2kgcGjhuqduIG5o4buPIG5oxrAgbeG7mXQgZG9jdW1lbnQgcmnDqm5nXG4gICAgY29uc3QgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyh0cmltbWVkLCAndGV4dC9odG1sJyk7XG4gICAgY29uc3QgYm9keSA9IGRvYy5ib2R5O1xuXG4gICAgLy8gTOG6pXkgbOG6oWkgbuG7mWkgZHVuZyBiw6puIHRyb25nIGJvZHlcbiAgICBkaXZzLnB1c2goYDxkaXY+JHtib2R5LmlubmVySFRNTH08L2Rpdj5gKTtcbiAgfVxuXG4gIHJldHVybiBkaXZzLmpvaW4oJycpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlbHRhRnJvbUhUTUwgPSBhc3luYyAoaHRtbDogc3RyaW5nKTogUHJvbWlzZTxEZWx0YT4gPT4ge1xuICBxdWlsbC5yb290LmlubmVySFRNTCA9IGh0bWw7XG5cbiAgYXdhaXQgbGFzdFZhbHVlRnJvbSh0aW1lcigxMDAwKSk7XG4gIHJldHVybiBxdWlsbC5nZXRDb250ZW50cygpO1xufTtcblxuZXhwb3J0IGNvbnN0IHByb2Nlc3NQYXN0ZURhdGEgPSBhc3luYyAoXG4gIGU6IENsaXBib2FyZEV2ZW50LFxuICBjb25maWc6IHtcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgICBoYW5kbGVyUGFzdGVGaWxlPzogKGZpbGVzOiBGaWxlTGlzdCkgPT4gdm9pZDtcbiAgICBjYWxsQmFjaz86IChwb3NpdG9uUmV0dXJuOiAnZmlsZScgfCAncmFuZ2UnIHwgJ2NvbnRlbnQnIHwgJ25vLWNvbnRlbnQnKSA9PiB2b2lkO1xuICB9XG4pID0+IHtcbiAgY29uc3QgZWxlbWVudCA9IGNvbmZpZy5lbGVtZW50O1xuICBjb25zdCBmaWxlcyA9IGUuY2xpcGJvYXJkRGF0YT8uZmlsZXM7XG4gIGlmIChmaWxlcz8ubGVuZ3RoKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbmZpZy5oYW5kbGVyUGFzdGVGaWxlPy4oZmlsZXMpO1xuICAgIGNvbmZpZy5jYWxsQmFjaz8uKCdmaWxlJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIEzGsHUgc2VsZWN0aW9uIFRSxq/hu5pDIGtoaSBwcmV2ZW50IGRlZmF1bHRcbiAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICBsZXQgc2F2ZWRSYW5nZTogUmFuZ2UgfCBudWxsID0gbnVsbDtcbiAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcbiAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xuICAgIC8vIENo4buJIGzGsHUgbuG6v3UgcmFuZ2UgbuG6sW0gdHJvbmcgY29udGVudFRleHQgZWxlbWVudFxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO1xuICAgIGNvbnN0IGlzSW5Db250ZW50RWxlbWVudCA9IGVsZW1lbnQuY29udGFpbnMoY29udGFpbmVyLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSA/IGNvbnRhaW5lci5wYXJlbnROb2RlIDogY29udGFpbmVyKTtcbiAgICBpZiAoaXNJbkNvbnRlbnRFbGVtZW50KSB7XG4gICAgICBzYXZlZFJhbmdlID0gcmFuZ2UuY2xvbmVSYW5nZSgpO1xuICAgIH1cbiAgfVxuICAvLyBQcmV2ZW50IGRlZmF1bHQgxJHhu4MgdOG7sSB44butIGzDvSBwYXN0ZVxuICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIC8vIFPhu60gZOG7pW5nIFF1aWxsIMSR4buDIGNsZWFuIEhUTUwgY29udGVudFxuICBjb25zdCBodG1sQ29udGVudCA9IGUuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dC9odG1sJykgfHwgJyc7XG4gIGNvbnN0IHBsYWluVGV4dCA9IGUuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dC9wbGFpbicpIHx8ICcnO1xuICBsZXQgY29udGVudFRvSW5zZXJ0ID0gKHBsYWluVGV4dCB8fCAnJykucmVwbGFjZSgvXFxuL2csICc8YnI+Jyk7XG4gIGlmIChodG1sQ29udGVudCkge1xuICAgIGNvbnRlbnRUb0luc2VydCA9IGF3YWl0IGdldEhUTUxGcm9tUXVpbGwoaHRtbENvbnRlbnQpO1xuICB9XG5cbiAgaWYgKCFjb250ZW50VG9JbnNlcnQpIHtcbiAgICBjb25maWcuY2FsbEJhY2s/Lignbm8tY29udGVudCcpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChzYXZlZFJhbmdlKSB7XG4gICAgaW5zZXJ0Q29udGVudFdpdGhSYW5nZShjb250ZW50VG9JbnNlcnQsIHNhdmVkUmFuZ2UsIGVsZW1lbnQpO1xuICAgIGNvbmZpZy5jYWxsQmFjaz8uKCdyYW5nZScpO1xuICAgIHJldHVybjtcbiAgfVxuICBlbGVtZW50LmlubmVySFRNTCArPSBjb250ZW50VG9JbnNlcnQ7XG4gIGNvbmZpZy5jYWxsQmFjaz8uKCdjb250ZW50Jyk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0Q29udGVudFdpdGhSYW5nZSA9IChjb250ZW50OiBzdHJpbmcsIHNhdmVkUmFuZ2U6IFJhbmdlLCBlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQgPT4ge1xuICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIGlmICghc2VsZWN0aW9uKSB7XG4gICAgLy8gRmFsbGJhY2s6IGFwcGVuZCB2w6BvIGN14buRaVxuICAgIGVsZW1lbnQuaW5uZXJIVE1MICs9IGNvbnRlbnQ7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIFJlc3RvcmUgc2VsZWN0aW9uXG4gIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgc2VsZWN0aW9uLmFkZFJhbmdlKHNhdmVkUmFuZ2UpO1xuICAvLyBYw7NhIG7hu5lpIGR1bmcgxJHDoyBzZWxlY3QgKG7hur91IGPDsylcbiAgc2F2ZWRSYW5nZS5kZWxldGVDb250ZW50cygpO1xuICAvLyBU4bqhbyBkb2N1bWVudCBmcmFnbWVudCB04burIEhUTUwgY29udGVudFxuICBjb25zdCB0ZW1wRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHRlbXBEaXYuaW5uZXJIVE1MID0gY29udGVudDtcbiAgY29uc3QgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gIHdoaWxlICh0ZW1wRGl2LmZpcnN0Q2hpbGQpIHtcbiAgICBmcmFnbWVudC5hcHBlbmRDaGlsZCh0ZW1wRGl2LmZpcnN0Q2hpbGQpO1xuICB9XG4gIC8vIEluc2VydCBmcmFnbWVudCB04bqhaSB24buLIHRyw60gcmFuZ2VcbiAgc2F2ZWRSYW5nZS5pbnNlcnROb2RlKGZyYWdtZW50KTtcbiAgLy8gRGkgY2h1eeG7g24gY3Vyc29yIMSR4bq/biBjdeG7kWkgbuG7mWkgZHVuZyB24burYSBpbnNlcnRcbiAgaWYgKGZyYWdtZW50Lmxhc3RDaGlsZCkge1xuICAgIHNhdmVkUmFuZ2Uuc2V0U3RhcnRBZnRlcihmcmFnbWVudC5sYXN0Q2hpbGQpO1xuICB9XG4gIHNhdmVkUmFuZ2UuY29sbGFwc2UodHJ1ZSk7XG4gIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgc2VsZWN0aW9uLmFkZFJhbmdlKHNhdmVkUmFuZ2UpO1xufTtcbiJdfQ==
265
+ export const quill2xGetHtmlByDelta = (delta) => {
266
+ if (!quill2x) {
267
+ quill2x = new Quill2x(document.createElement('div'));
268
+ }
269
+ if (!delta || !delta.ops || !delta.ops.length) {
270
+ return '';
271
+ }
272
+ quill2x.setContents(delta);
273
+ return quill2x.root.innerHTML;
274
+ };
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy11aS91dGlscy9zcmMvZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sY0FBYyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFFOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFaEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztBQUM1QyxJQUFJLE1BQU0sR0FBcUIsSUFBSSxDQUFDO0FBQ3BDLElBQUksS0FBSyxHQUFpQixJQUFJLENBQUM7QUFDL0IsSUFBSSxPQUFPLEdBQW1CLElBQUksQ0FBQztBQUVuQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFO0lBQ2hDLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtJQUNyQyxNQUFNLElBQUksR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUM3QixPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUN4RCxDQUFDLENBQUM7QUFFRixNQUFNLENB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QUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUNoQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBJQm91bmRpbmdDbGllbnRSZWN0IH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgRGV2aWNlRGV0ZWN0b3IgZnJvbSAnZGV2aWNlLWRldGVjdG9yLWpzJztcbmltcG9ydCBRdWlsbCBmcm9tICdxdWlsbCc7XG5pbXBvcnQgUXVpbGwyeCBmcm9tICdxdWlsbDJ4JztcbmltcG9ydCBEZWx0YSBmcm9tICdxdWlsbC1kZWx0YSc7XG5pbXBvcnQgeyBmaW5hbGl6ZSwgZnJvbUV2ZW50LCBsYXN0VmFsdWVGcm9tLCBtZXJnZU1hcCwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlY29kZUVzY2FwZUh0bWwgfSBmcm9tICcuL2Zvcm1hdC10ZXh0JztcbmltcG9ydCB7IHNldCB9IGZyb20gJy4vaGVscGVycyc7XG5cbmNvbnN0IGRldmljZURldGVjdG9yID0gbmV3IERldmljZURldGVjdG9yKCk7XG5sZXQgcGFyc2VyOiBET01QYXJzZXIgfCBudWxsID0gbnVsbDtcbmxldCBxdWlsbDogUXVpbGwgfCBudWxsID0gbnVsbDtcbmxldCBxdWlsbDJ4OiBRdWlsbDJ4IHwgbnVsbCA9IG51bGw7XG5cbmV4cG9ydCBjb25zdCBnZXREZXZpY2VJbmZvID0gKCkgPT4ge1xuICByZXR1cm4gZGV2aWNlRGV0ZWN0b3IucGFyc2Uod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpO1xufTtcbmV4cG9ydCBjb25zdCBnZXRQbGF0RnJvbUJyb3dzZXIgPSAoKSA9PiB7XG4gIGNvbnN0IGluZm8gPSBnZXREZXZpY2VJbmZvKCk7XG4gIHJldHVybiBgJHtpbmZvLmNsaWVudD8ubmFtZX0gJHtpbmZvLmNsaWVudD8udmVyc2lvbn1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEV2ZW50TmFtZUhhbmRsZUNsaWNrID0gKCgpID0+IHtcbiAgY29uc3QgZGV2aWNlSW5mbyA9IGdldERldmljZUluZm8oKTtcbiAgbGV0IG5hbWVFdmVudEhhbmRsZUNsaWNrID0gZGV2aWNlSW5mby5kZXZpY2U/LnR5cGUgPT09ICdkZXNrdG9wJyA/ICdjbGljaycgOiAndG91Y2hzdGFydCc7XG4gIGlmICgnb25wb2ludGVyZG93bicgaW4gd2luZG93ICYmICdtYXhUb3VjaFBvaW50cycgaW4gbmF2aWdhdG9yICYmIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDApIHtcbiAgICBuYW1lRXZlbnRIYW5kbGVDbGljayA9ICdwb2ludGVyZG93bic7XG4gIH1cblxuICByZXR1cm4gbmFtZUV2ZW50SGFuZGxlQ2xpY2s7XG59KSgpO1xuXG5leHBvcnQgY29uc3QgZ2V0RG9jdW1lbnRCeVN0cmluZyA9IChodG1sU3RyOiBzdHJpbmcpOiBEb2N1bWVudCA9PiB7XG4gIGlmICghcGFyc2VyKSB7XG4gICAgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICB9XG4gIHJldHVybiBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGh0bWxTdHIsICd0ZXh0L2h0bWwnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QgPSAocmVjdDogSUJvdW5kaW5nQ2xpZW50UmVjdCk6IElCb3VuZGluZ0NsaWVudFJlY3QgPT4ge1xuICByZXR1cm4ge1xuICAgIHRvcDogcmVjdFsndG9wJ10sXG4gICAgbGVmdDogcmVjdFsnbGVmdCddLFxuICAgIHdpZHRoOiByZWN0Wyd3aWR0aCddLFxuICAgIGhlaWdodDogcmVjdFsnaGVpZ2h0J10sXG4gICAgYm90dG9tOiByZWN0Wydib3R0b20nXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRTdHlsZXNFbGVtZW50ID0gKGVsOiBIVE1MRWxlbWVudCwgc3R5bGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCA9PiB7XG4gIE9iamVjdC5rZXlzKHN0eWxlcykuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHNldChlbCwgYHN0eWxlLiR7a2V5fWAsIHN0eWxlc1trZXldKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Vmlld3BvcnQgPSAod2luOiBXaW5kb3cgPSB3aW5kb3cpOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0gPT4ge1xuICBjb25zdCBkb2MgPSB3aW4uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgIGJvZHkgPSB3aW4uZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXSxcbiAgICB3ID0gd2luLmlubmVyV2lkdGggfHwgZG9jLmNsaWVudFdpZHRoIHx8IGJvZHkuY2xpZW50V2lkdGgsXG4gICAgaCA9IHdpbi5pbm5lckhlaWdodCB8fCBkb2MuY2xpZW50SGVpZ2h0IHx8IGJvZHkuY2xpZW50SGVpZ2h0O1xuXG4gIHJldHVybiB7IHdpZHRoOiB3LCBoZWlnaHQ6IGggfTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDYXJldFBvc2l0aW9uID0gKGVsZW1lbnQ6IEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBIVE1MSW5wdXRFbGVtZW50LCBwb3NpdGlvbjogbnVtYmVyKTogdm9pZCA9PiB7XG4gIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBlbGVtZW50LmZvY3VzKCk7XG4gIGVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zaXRpb24sIHBvc2l0aW9uKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1ZpZXdJblNjcmVlbiA9IChjb250YWluZXI6IEhUTUxFbGVtZW50LCBlbGVtZW50OiBIVE1MRWxlbWVudCwgZWxlbWVudFNjcm9sbD86IEhUTUxFbGVtZW50LCBtYXhUb3BMZWZ0PzogeyB0b3A/OiBudW1iZXI7IGxlZnQ/OiBudW1iZXIgfSk6IGJvb2xlYW4gPT4ge1xuICBpZiAoIWNvbnRhaW5lciB8fCAhZWxlbWVudCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHJlY3RDb250YWluZXIgPSBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QoY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcblxuICBpZiAoZWxlbWVudFNjcm9sbCkge1xuICAgIGNvbnN0IHJlY3RFbGVtZW50U2Nyb2xsID0gZWxlbWVudFNjcm9sbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIHJlY3RDb250YWluZXJbJ2xlZnQnXSA9IHJlY3RFbGVtZW50U2Nyb2xsLmxlZnQ7XG4gICAgcmVjdENvbnRhaW5lclsndG9wJ10gPSByZWN0RWxlbWVudFNjcm9sbC50b3A7XG4gIH1cblxuICBjb25zdCByZWN0RWxlbWVudCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHsgbGVmdCwgdG9wIH0gPSByZWN0RWxlbWVudDtcbiAgY29uc3QgdG9wQ29udGFpbmVyID0gcmVjdENvbnRhaW5lclsndG9wJ107XG4gIGNvbnN0IGxlZnRDb250YWluZXIgPSByZWN0Q29udGFpbmVyWydsZWZ0J107XG4gIGNvbnN0IHdpZHRoQ29udGFpbmVyID0gcmVjdENvbnRhaW5lclsnd2lkdGgnXTtcbiAgY29uc3QgaGVpZ2h0Q29udGFpbmVyID0gcmVjdENvbnRhaW5lclsnaGVpZ2h0J107XG4gIGNvbnN0IHNjcm9sbFRvcENvbnRhaW5lciA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gIGNvbnN0IHNjcm9sbExlZnRDb250YWluZXIgPSBjb250YWluZXIuc2Nyb2xsTGVmdDtcbiAgY29uc3QgbGltaXRUb3AgPSB0b3BDb250YWluZXIgKyBzY3JvbGxUb3BDb250YWluZXIgKyBoZWlnaHRDb250YWluZXI7XG4gIGNvbnN0IGxpbWl0TGVmdCA9IGxlZnRDb250YWluZXIgKyBzY3JvbGxMZWZ0Q29udGFpbmVyICsgd2lkdGhDb250YWluZXI7XG5cbiAgY29uc3QgbWF4VG9wSXRlbSA9IHRvcCArIChtYXhUb3BMZWZ0Py50b3AgfHwgMCk7XG4gIGNvbnN0IG1heExlZnRJdGVtID0gbGVmdCArIChtYXhUb3BMZWZ0Py5sZWZ0IHx8IDApO1xuXG4gIGlmICh0b3BDb250YWluZXIgPD0gbWF4VG9wSXRlbSAmJiBtYXhUb3BJdGVtIDw9IGxpbWl0VG9wICYmIGxlZnRDb250YWluZXIgPD0gbWF4TGVmdEl0ZW0gJiYgbWF4TGVmdEl0ZW0gPD0gbGltaXRMZWZ0KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lciA9IChtb3VzZVBvc2l0aW9uOiB7IGNsaWVudFg6IG51bWJlcjsgY2xpZW50WTogbnVtYmVyIH0sIGVsZW1lbnQ/OiBIVE1MRWxlbWVudCwgcmVjdD86IERPTVJlY3QpOiBib29sZWFuID0+IHtcbiAgaWYgKCFlbGVtZW50ICYmICFyZWN0KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHJlY3RFbGVtZW50ID0gcmVjdCB8fCBlbGVtZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB8fCAoe30gYXMgRE9NUmVjdCk7XG4gIGNvbnN0IHsgbGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0IH0gPSByZWN0RWxlbWVudDtcbiAgY29uc3QgbGltaXRMZWZ0ID0gbGVmdCArIHdpZHRoO1xuICBjb25zdCBsaW1pdFRvcCA9IHRvcCArIGhlaWdodDtcbiAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBtb3VzZVBvc2l0aW9uO1xuICBpZiAobGVmdCA8PSBjbGllbnRYICYmIGNsaWVudFggPD0gbGltaXRMZWZ0ICYmIHRvcCA8PSBjbGllbnRZICYmIGNsaWVudFkgPD0gbGltaXRUb3ApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREcmFnRXZlbnRCeUVsZW1lbnQgPSAoY29uZmlnOiB7XG4gIGVsZW1lbnRNb3VzZURvd246IEhUTUxFbGVtZW50O1xuICBmdW5jdGlvbk1vdXNlRG93bj86IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgaXNTdGFydFdpdGhNb3VzZURvd25FdmVudD86IGJvb2xlYW47XG4gIGVsZW1lbnRNb3VzZU1vdmU/OiBIVE1MRWxlbWVudDtcbiAgZnVuY3Rpb25Nb3VzZU1vdmU/OiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIGVsZW1lbnRNb3VzZVVwPzogSFRNTEVsZW1lbnQ7XG4gIGZ1bmN0aW9uTW91c2VVcD86IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgZGVzdHJveVJlZjogRGVzdHJveVJlZjtcbn0pID0+IHtcbiAgbGV0IHRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgY29uc3QgYWRkQ2xhc3MgPSAoKSA9PiB7XG4gICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnIXNlbGVjdC1ub25lJyk7XG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJyFjdXJzb3ItZ3JhYmJpbmcnKTtcbiAgICB9LCAyNTApO1xuICB9O1xuICBjb25zdCByZW1vdmVDbGFzcyA9ICgpID0+IHtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJyFzZWxlY3Qtbm9uZScpO1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnIWN1cnNvci1ncmFiYmluZycpO1xuICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gIH07XG4gIGZyb21FdmVudChjb25maWcuZWxlbWVudE1vdXNlRG93biwgJ21vdXNlbGVhdmUnKVxuICAgIC5waXBlKFxuICAgICAgdGFwKCgpID0+IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnY3Vyc29yLXBvaW50ZXInKSksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoY29uZmlnLmRlc3Ryb3lSZWYpXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKTtcbiAgZnJvbUV2ZW50KGNvbmZpZy5lbGVtZW50TW91c2VEb3duLCAnbW91c2VlbnRlcicpXG4gICAgLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdjdXJzb3ItcG9pbnRlcicpKSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZChjb25maWcuZGVzdHJveVJlZilcbiAgICApXG4gICAgLnN1YnNjcmliZSgpO1xuXG4gIGNvbnN0IG1vdXNlRG93biA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pihjb25maWcuZWxlbWVudE1vdXNlRG93biwgJ21vdXNlZG93bicpLnBpcGUoXG4gICAgdGFwKChlKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgYWRkQ2xhc3MoKTtcbiAgICAgIGNvbmZpZy5mdW5jdGlvbk1vdXNlRG93bj8uKGUpO1xuICAgIH0pXG4gICk7XG4gIGNvbnN0IG1vdXNldXAgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oY29uZmlnLmVsZW1lbnRNb3VzZVVwIHx8IGRvY3VtZW50LCAnbW91c2V1cCcpLnBpcGUoXG4gICAgdGFwKChlKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmVtb3ZlQ2xhc3MoKTtcbiAgICAgIGNvbmZpZy5mdW5jdGlvbk1vdXNlVXA/LihlKTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0IG1vdXNlbW92ZSA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pihjb25maWcuZWxlbWVudE1vdXNlTW92ZSB8fCBkb2N1bWVudCwgJ21vdXNlbW92ZScpLnBpcGUoXG4gICAgdGFwKChlKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgY29uZmlnLmZ1bmN0aW9uTW91c2VNb3ZlPy4oZSk7XG4gICAgfSksXG4gICAgdGFrZVVudGlsKG1vdXNldXApXG4gICk7XG5cbiAgcmV0dXJuIG1vdXNlRG93bi5waXBlKFxuICAgIG1lcmdlTWFwKChlOiBNb3VzZUV2ZW50KSA9PiAoY29uZmlnLmlzU3RhcnRXaXRoTW91c2VEb3duRXZlbnQgPyBtb3VzZW1vdmUucGlwZShzdGFydFdpdGgoZSkpIDogbW91c2Vtb3ZlKSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKGNvbmZpZy5kZXN0cm95UmVmKSxcbiAgICBmaW5hbGl6ZShyZW1vdmVDbGFzcylcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIVE1MRnJvbVF1aWxsID0gYXN5bmMgKFxuICBkYXRhOiBEZWx0YSB8IHN0cmluZyxcbiAgb3B0aW9ucz86IHtcbiAgICBnZXRSb290SHRtbD86IGJvb2xlYW47XG4gICAgcmVwbGFjZU5ld0xpbmVUbz86IHN0cmluZztcbiAgICByZXBsYWNlVGFnQlJUbz86IHN0cmluZztcbiAgICByZXBsYWNlQnJUb0Rpdj86IGJvb2xlYW47XG4gICAgZnVuY3Rpb25SZXBsYWNlRGVsdGE/OiAob3A6IERlbHRhKSA9PiB2b2lkO1xuICAgIHJlcGxhY2VUYWdzPzoge1xuICAgICAgdGFnOiBzdHJpbmc7XG4gICAgICByZXBsYWNlVG86IHN0cmluZztcbiAgICB9W107XG4gIH1cbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGlmICghcXVpbGwpIHtcbiAgICBxdWlsbCA9IG5ldyBRdWlsbChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XG4gIH1cbiAgY29uc3QgeyByZXBsYWNlTmV3TGluZVRvID0gJzxicj4nLCByZXBsYWNlVGFnQlJUbywgcmVwbGFjZVRhZ3MsIHJlcGxhY2VCclRvRGl2IH0gPSBvcHRpb25zIHx8IHt9O1xuICBjb25zdCBkZWx0YSA9IHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJyA/IGF3YWl0IGdldERlbHRhRnJvbUhUTUwoZGF0YSkgOiBkYXRhO1xuICBpZiAob3B0aW9ucz8uZnVuY3Rpb25SZXBsYWNlRGVsdGEpIHtcbiAgICBvcHRpb25zLmZ1bmN0aW9uUmVwbGFjZURlbHRhKGRlbHRhKTtcbiAgfVxuXG4gIGRlbHRhLm9wcy5mb3JFYWNoKChvcCkgPT4ge1xuICAgIGlmIChvcC5pbnNlcnQpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3AuaW5zZXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAocmVwbGFjZU5ld0xpbmVUbykge1xuICAgICAgICAgIG9wLmluc2VydCA9IG9wLmluc2VydC5yZXBsYWNlKC9cXG4vZywgcmVwbGFjZU5ld0xpbmVUbyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcGxhY2VUYWdCUlRvKSB7XG4gICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UoLzxicj4vZywgcmVwbGFjZVRhZ0JSVG8pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcGxhY2VUYWdzPy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiByZXBsYWNlVGFncykge1xuICAgICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UobmV3IFJlZ0V4cChgPCR7dGFnLnRhZ30+YCwgJ2cnKSwgYDwke3RhZy5yZXBsYWNlVG99PmApIGFzIHN0cmluZztcbiAgICAgICAgICAgIG9wLmluc2VydCA9IG9wLmluc2VydC5yZXBsYWNlKG5ldyBSZWdFeHAoYDwvJHt0YWcudGFnfT5gLCAnZycpLCBgPC8ke3RhZy5yZXBsYWNlVG99PmApIGFzIHN0cmluZztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBxdWlsbC5zZXRDb250ZW50cyhkZWx0YSk7XG4gIGxldCBodG1sVGV4dCA9IG9wdGlvbnM/LmdldFJvb3RIdG1sID8gcXVpbGwucm9vdC5pbm5lckhUTUwgOiBxdWlsbC5yb290LmZpcnN0RWxlbWVudENoaWxkPy5pbm5lckhUTUw7XG4gIGlmIChyZXBsYWNlQnJUb0Rpdikge1xuICAgIGh0bWxUZXh0ID0gY29udmVydEh0bWxUb0RpdkJsb2NrcyhodG1sVGV4dCB8fCAnJyk7XG4gIH1cbiAgcmV0dXJuIGRlY29kZUVzY2FwZUh0bWwoaHRtbFRleHQgfHwgJycpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRIdG1sVG9EaXZCbG9ja3MgPSAoaHRtbDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgQlJFQUtfVE9LRU4gPSAnPDw8QlJFQUs+Pj4nO1xuICAvLyBCxrDhu5tjIDE6IHRoYXkgPGJyPiB0aMOgbmggdG9rZW4gdOG6oW1cbiAgY29uc3Qgbm9ybWFsaXplZEh0bWwgPSBodG1sLnJlcGxhY2UoLzxiclxccypcXC8/Pi9naSwgQlJFQUtfVE9LRU4pO1xuXG4gIC8vIELGsOG7m2MgMjogdMOhY2ggdGhlbyB0b2tlblxuICBjb25zdCBwYXJ0cyA9IG5vcm1hbGl6ZWRIdG1sLnNwbGl0KEJSRUFLX1RPS0VOKTtcblxuICBjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gIGNvbnN0IGRpdnM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCByYXcgb2YgcGFydHMpIHtcbiAgICBjb25zdCB0cmltbWVkID0gcmF3LnRyaW0oKTtcbiAgICBpZiAoIXRyaW1tZWQpIGNvbnRpbnVlO1xuXG4gICAgLy8gcGFyc2UgbeG7l2kgcGjhuqduIG5o4buPIG5oxrAgbeG7mXQgZG9jdW1lbnQgcmnDqm5nXG4gICAgY29uc3QgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyh0cmltbWVkLCAndGV4dC9odG1sJyk7XG4gICAgY29uc3QgYm9keSA9IGRvYy5ib2R5O1xuXG4gICAgLy8gTOG6pXkgbOG6oWkgbuG7mWkgZHVuZyBiw6puIHRyb25nIGJvZHlcbiAgICBkaXZzLnB1c2goYDxkaXY+JHtib2R5LmlubmVySFRNTH08L2Rpdj5gKTtcbiAgfVxuXG4gIHJldHVybiBkaXZzLmpvaW4oJycpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlbHRhRnJvbUhUTUwgPSBhc3luYyAoaHRtbDogc3RyaW5nKTogUHJvbWlzZTxEZWx0YT4gPT4ge1xuICBpZiAoIXF1aWxsKSB7XG4gICAgcXVpbGwgPSBuZXcgUXVpbGwoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xuICB9XG4gIHF1aWxsLnJvb3QuaW5uZXJIVE1MID0gaHRtbDtcblxuICBhd2FpdCBsYXN0VmFsdWVGcm9tKHRpbWVyKDEwMDApKTtcbiAgcmV0dXJuIHF1aWxsLmdldENvbnRlbnRzKCk7XG59O1xuXG5leHBvcnQgY29uc3QgcHJvY2Vzc1Bhc3RlRGF0YSA9IGFzeW5jIChcbiAgZTogQ2xpcGJvYXJkRXZlbnQsXG4gIGNvbmZpZzoge1xuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICAgIGhhbmRsZXJQYXN0ZUZpbGU/OiAoZmlsZXM6IEZpbGVMaXN0KSA9PiB2b2lkO1xuICAgIGNhbGxCYWNrPzogKHBvc2l0b25SZXR1cm46ICdmaWxlJyB8ICdyYW5nZScgfCAnY29udGVudCcgfCAnbm8tY29udGVudCcpID0+IHZvaWQ7XG4gIH1cbikgPT4ge1xuICBjb25zdCBlbGVtZW50ID0gY29uZmlnLmVsZW1lbnQ7XG4gIGNvbnN0IGZpbGVzID0gZS5jbGlwYm9hcmREYXRhPy5maWxlcztcbiAgaWYgKGZpbGVzPy5sZW5ndGgpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uZmlnLmhhbmRsZXJQYXN0ZUZpbGU/LihmaWxlcyk7XG4gICAgY29uZmlnLmNhbGxCYWNrPy4oJ2ZpbGUnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gTMawdSBzZWxlY3Rpb24gVFLGr+G7mkMga2hpIHByZXZlbnQgZGVmYXVsdFxuICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIGxldCBzYXZlZFJhbmdlOiBSYW5nZSB8IG51bGwgPSBudWxsO1xuICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xuICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XG4gICAgLy8gQ2jhu4kgbMawdSBu4bq/dSByYW5nZSBu4bqxbSB0cm9uZyBjb250ZW50VGV4dCBlbGVtZW50XG4gICAgY29uc3QgY29udGFpbmVyID0gcmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXI7XG4gICAgY29uc3QgaXNJbkNvbnRlbnRFbGVtZW50ID0gZWxlbWVudC5jb250YWlucyhjb250YWluZXIubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFID8gY29udGFpbmVyLnBhcmVudE5vZGUgOiBjb250YWluZXIpO1xuICAgIGlmIChpc0luQ29udGVudEVsZW1lbnQpIHtcbiAgICAgIHNhdmVkUmFuZ2UgPSByYW5nZS5jbG9uZVJhbmdlKCk7XG4gICAgfVxuICB9XG4gIC8vIFByZXZlbnQgZGVmYXVsdCDEkeG7gyB04buxIHjhu60gbMO9IHBhc3RlXG4gIGUucHJldmVudERlZmF1bHQoKTtcbiAgLy8gU+G7rSBk4bulbmcgUXVpbGwgxJHhu4MgY2xlYW4gSFRNTCBjb250ZW50XG4gIGNvbnN0IGh0bWxDb250ZW50ID0gZS5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0L2h0bWwnKSB8fCAnJztcbiAgY29uc3QgcGxhaW5UZXh0ID0gZS5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0L3BsYWluJykgfHwgJyc7XG4gIGxldCBjb250ZW50VG9JbnNlcnQgPSAocGxhaW5UZXh0IHx8ICcnKS5yZXBsYWNlKC9cXG4vZywgJzxicj4nKTtcbiAgaWYgKGh0bWxDb250ZW50KSB7XG4gICAgY29udGVudFRvSW5zZXJ0ID0gYXdhaXQgZ2V0SFRNTEZyb21RdWlsbChodG1sQ29udGVudCk7XG4gIH1cblxuICBpZiAoIWNvbnRlbnRUb0luc2VydCkge1xuICAgIGNvbmZpZy5jYWxsQmFjaz8uKCduby1jb250ZW50Jyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHNhdmVkUmFuZ2UpIHtcbiAgICBpbnNlcnRDb250ZW50V2l0aFJhbmdlKGNvbnRlbnRUb0luc2VydCwgc2F2ZWRSYW5nZSwgZWxlbWVudCk7XG4gICAgY29uZmlnLmNhbGxCYWNrPy4oJ3JhbmdlJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsZW1lbnQuaW5uZXJIVE1MICs9IGNvbnRlbnRUb0luc2VydDtcbiAgY29uZmlnLmNhbGxCYWNrPy4oJ2NvbnRlbnQnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRDb250ZW50V2l0aFJhbmdlID0gKGNvbnRlbnQ6IHN0cmluZywgc2F2ZWRSYW5nZTogUmFuZ2UsIGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCA9PiB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgaWYgKCFzZWxlY3Rpb24pIHtcbiAgICAvLyBGYWxsYmFjazogYXBwZW5kIHbDoG8gY3Xhu5FpXG4gICAgZWxlbWVudC5pbm5lckhUTUwgKz0gY29udGVudDtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gUmVzdG9yZSBzZWxlY3Rpb25cbiAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWxlY3Rpb24uYWRkUmFuZ2Uoc2F2ZWRSYW5nZSk7XG4gIC8vIFjDs2EgbuG7mWkgZHVuZyDEkcOjIHNlbGVjdCAobuG6v3UgY8OzKVxuICBzYXZlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XG4gIC8vIFThuqFvIGRvY3VtZW50IGZyYWdtZW50IHThu6sgSFRNTCBjb250ZW50XG4gIGNvbnN0IHRlbXBEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgdGVtcERpdi5pbm5lckhUTUwgPSBjb250ZW50O1xuICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgd2hpbGUgKHRlbXBEaXYuZmlyc3RDaGlsZCkge1xuICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHRlbXBEaXYuZmlyc3RDaGlsZCk7XG4gIH1cbiAgLy8gSW5zZXJ0IGZyYWdtZW50IHThuqFpIHbhu4sgdHLDrSByYW5nZVxuICBzYXZlZFJhbmdlLmluc2VydE5vZGUoZnJhZ21lbnQpO1xuICAvLyBEaSBjaHV54buDbiBjdXJzb3IgxJHhur9uIGN14buRaSBu4buZaSBkdW5nIHbhu6thIGluc2VydFxuICBpZiAoZnJhZ21lbnQubGFzdENoaWxkKSB7XG4gICAgc2F2ZWRSYW5nZS5zZXRTdGFydEFmdGVyKGZyYWdtZW50Lmxhc3RDaGlsZCk7XG4gIH1cbiAgc2F2ZWRSYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWxlY3Rpb24uYWRkUmFuZ2Uoc2F2ZWRSYW5nZSk7XG59O1xuXG5leHBvcnQgY29uc3QgcXVpbGwyeEdldEh0bWxCeURlbHRhID0gKGRlbHRhPzogRGVsdGEgfCBudWxsKSA9PiB7XG4gIGlmICghcXVpbGwyeCkge1xuICAgIHF1aWxsMnggPSBuZXcgUXVpbGwyeChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XG4gIH1cbiAgaWYgKCFkZWx0YSB8fCAhZGVsdGEub3BzIHx8ICFkZWx0YS5vcHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHF1aWxsMnguc2V0Q29udGVudHMoZGVsdGEpO1xuICByZXR1cm4gcXVpbGwyeC5yb290LmlubmVySFRNTDtcbn07XG4iXX0=
@@ -1,6 +1,7 @@
1
1
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
2
2
  import DeviceDetector from 'device-detector-js';
3
3
  import Quill from 'quill';
4
+ import Quill2x from 'quill2x';
4
5
  import { Observable, Subject, fromEvent, filter, tap, takeUntil, mergeMap, startWith, finalize, lastValueFrom, timer } from 'rxjs';
5
6
  import { HttpParams } from '@angular/common/http';
6
7
  import { TemplateRef, ElementRef, isSignal, signal, InjectionToken } from '@angular/core';
@@ -2127,8 +2128,9 @@ const generateInterface = (obj, interfaceName) => {
2127
2128
  };
2128
2129
 
2129
2130
  const deviceDetector = new DeviceDetector();
2130
- const parser = new DOMParser();
2131
- const quill = new Quill(document.createElement('div'));
2131
+ let parser = null;
2132
+ let quill = null;
2133
+ let quill2x = null;
2132
2134
  const getDeviceInfo = () => {
2133
2135
  return deviceDetector.parse(window.navigator.userAgent);
2134
2136
  };
@@ -2145,6 +2147,9 @@ const getEventNameHandleClick = (() => {
2145
2147
  return nameEventHandleClick;
2146
2148
  })();
2147
2149
  const getDocumentByString = (htmlStr) => {
2150
+ if (!parser) {
2151
+ parser = new DOMParser();
2152
+ }
2148
2153
  return parser.parseFromString(htmlStr, 'text/html');
2149
2154
  };
2150
2155
  const cloneIBoundingClientRect = (rect) => {
@@ -2247,6 +2252,9 @@ const getDragEventByElement = (config) => {
2247
2252
  return mouseDown.pipe(mergeMap((e) => (config.isStartWithMouseDownEvent ? mousemove.pipe(startWith(e)) : mousemove)), takeUntilDestroyed(config.destroyRef), finalize(removeClass));
2248
2253
  };
2249
2254
  const getHTMLFromQuill = async (data, options) => {
2255
+ if (!quill) {
2256
+ quill = new Quill(document.createElement('div'));
2257
+ }
2250
2258
  const { replaceNewLineTo = '<br>', replaceTagBRTo, replaceTags, replaceBrToDiv } = options || {};
2251
2259
  const delta = typeof data === 'string' ? await getDeltaFromHTML(data) : data;
2252
2260
  if (options?.functionReplaceDelta) {
@@ -2298,6 +2306,9 @@ const convertHtmlToDivBlocks = (html) => {
2298
2306
  return divs.join('');
2299
2307
  };
2300
2308
  const getDeltaFromHTML = async (html) => {
2309
+ if (!quill) {
2310
+ quill = new Quill(document.createElement('div'));
2311
+ }
2301
2312
  quill.root.innerHTML = html;
2302
2313
  await lastValueFrom(timer(1000));
2303
2314
  return quill.getContents();
@@ -2373,6 +2384,16 @@ const insertContentWithRange = (content, savedRange, element) => {
2373
2384
  selection.removeAllRanges();
2374
2385
  selection.addRange(savedRange);
2375
2386
  };
2387
+ const quill2xGetHtmlByDelta = (delta) => {
2388
+ if (!quill2x) {
2389
+ quill2x = new Quill2x(document.createElement('div'));
2390
+ }
2391
+ if (!delta || !delta.ops || !delta.ops.length) {
2392
+ return '';
2393
+ }
2394
+ quill2x.setContents(delta);
2395
+ return quill2x.root.innerHTML;
2396
+ };
2376
2397
 
2377
2398
  class UtilsUrlSearchParams {
2378
2399
  static instance;
@@ -3355,5 +3376,5 @@ const getObjectSize = (obj) => {
3355
3376
  * Generated bundle index. Do not edit.
3356
3377
  */
3357
3378
 
3358
- export { AudioExtList, CHARACTER_DATA_EMPTY, COMMUNICATE_MICRO_KEY_GET_ALL_MESSAGE, COMMUNICATE_MICRO_PREFIX_TYPE, DEFAULT_START_PAGE_0, DocumentExtList, ENCODE_URI_PATTERN, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MAX_VALID, ERROR_MESSAGE_MIN_LENGTH, ERROR_MESSAGE_MIN_VALID, ERROR_MESSAGE_PATTEN_VALID, ExcelExtList, ImageExtList, LINK_IMAGE_ERROR_TOKEN_INJECT, PROCESS_BAR_STANDARD_CONFIG_DEFAULT_TOKEN_INJECT, PROCESS_BAR_STEPS_CONFIG_DEFAULT_TOKEN_INJECT, UtilsCache, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, UtilsHttpParamsRequest, UtilsHttpParamsRequestInstance, UtilsKeyCodeConstant, UtilsLanguageConstants, UtilsUrlSearchParams, VideoExtList, addArrayToSet, base64Decode, base64Encode, capitalize, checkMouseOverInContainer, checkViewInScreen, cloneDeep, cloneIBoundingClientRect, colorContrastFromOrigin, colorStepContrastFromOrigin, convertBase64ToBlob, convertBlobToFile, convertFileToBase64, convertFileToBase64_ObjectUrl, convertHtmlToDivBlocks, convertObjectToSignal, convertSetToArray, convertSignalToObject, convertUrlToFile, createUniqueRandomIntGenerator, decodeEscapeHtml, decodeURI, decrypt, decrypt3rd, deleteUnicode, detectAndCleanNearWhiteColors, downloadFileByUrl, downloadFileByUrlUseXmlRequest, downloadImageFromELement, encodeURI, encrypt, encrypt3rd, endCodeUrl, escapeHtml, firstLetterToUpperCase, formatDate, formatNumber, formatTextCompare, fullNameFormat, generateInterface, get, getColorById, getDayjs, getDeltaFromHTML, getDeviceInfo, getDocumentByString, getDragEventByElement, getEventNameHandleClick, getFileExtension, getHTMLFromQuill, getKeyCacheByArrayObject, getLabelBySizeFile, getObjectSize, getPlatFromBrowser, getSmartAxisScale, getViewport, groupBy, hasDangerousConstructorName, highlightByKeyword, insertContentWithRange, isArray, isAsyncObject, isBrowserAPIObject, isBrowserGlobalObject, isBuiltInObject, isDOMObject, isDangerousObject, isDayjsObject, isDifferenceDay, isDifferenceMonth, isDifferenceYear, isEmbedFrame, isEmpty, isEqual, isFalsy, isFile, isFrameworkObject, isIncludeAudioExtList, isIncludeDocumentExtList, isIncludeImageExtList, isIncludeVideoExtList, isMap, isNearWhite, isNil, isRegExp, isReturnAsIsObject, isSafeToProcess, isSet, isSkippableObject, isSpecialObject, isTruthy, isTypeAudio, isTypeFile, isTypeImage, isTypeVideo, keyBy, listColorDefine, md5, omitBy, patterProtocolUrl, patternAccount, patternDomain, patternEmail, patternEmoji, patternEncodeUri, patternGetFieldByRuleFieldReplace, patternHostUrl, patternKey, patternMobilePhone, patternName, patternNameProfile, patternNameSpecial, patternNameUtf8, patternNumber, patternPem, patternPhone, patternRuleFieldReplace, patternTax, patternUrl, processPasteData, protectString, range, removeEmoji, revealString, rgbToHex, set, setCaretPosition, setDefaultTimeZone, setKeyCrypto, setKeyCrypto3rd, setPatternCheckTimeUTC, setStylesElement, uniqBy, unwrapSignal, updateFunctionCheckEmbedFrame, updateFunctionFormatDate, updateFunctionXssFilter, uppercaseByPosition, uuid, viewDataNumberByLanguage, xssFilter };
3379
+ export { AudioExtList, CHARACTER_DATA_EMPTY, COMMUNICATE_MICRO_KEY_GET_ALL_MESSAGE, COMMUNICATE_MICRO_PREFIX_TYPE, DEFAULT_START_PAGE_0, DocumentExtList, ENCODE_URI_PATTERN, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MAX_VALID, ERROR_MESSAGE_MIN_LENGTH, ERROR_MESSAGE_MIN_VALID, ERROR_MESSAGE_PATTEN_VALID, ExcelExtList, ImageExtList, LINK_IMAGE_ERROR_TOKEN_INJECT, PROCESS_BAR_STANDARD_CONFIG_DEFAULT_TOKEN_INJECT, PROCESS_BAR_STEPS_CONFIG_DEFAULT_TOKEN_INJECT, UtilsCache, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, UtilsHttpParamsRequest, UtilsHttpParamsRequestInstance, UtilsKeyCodeConstant, UtilsLanguageConstants, UtilsUrlSearchParams, VideoExtList, addArrayToSet, base64Decode, base64Encode, capitalize, checkMouseOverInContainer, checkViewInScreen, cloneDeep, cloneIBoundingClientRect, colorContrastFromOrigin, colorStepContrastFromOrigin, convertBase64ToBlob, convertBlobToFile, convertFileToBase64, convertFileToBase64_ObjectUrl, convertHtmlToDivBlocks, convertObjectToSignal, convertSetToArray, convertSignalToObject, convertUrlToFile, createUniqueRandomIntGenerator, decodeEscapeHtml, decodeURI, decrypt, decrypt3rd, deleteUnicode, detectAndCleanNearWhiteColors, downloadFileByUrl, downloadFileByUrlUseXmlRequest, downloadImageFromELement, encodeURI, encrypt, encrypt3rd, endCodeUrl, escapeHtml, firstLetterToUpperCase, formatDate, formatNumber, formatTextCompare, fullNameFormat, generateInterface, get, getColorById, getDayjs, getDeltaFromHTML, getDeviceInfo, getDocumentByString, getDragEventByElement, getEventNameHandleClick, getFileExtension, getHTMLFromQuill, getKeyCacheByArrayObject, getLabelBySizeFile, getObjectSize, getPlatFromBrowser, getSmartAxisScale, getViewport, groupBy, hasDangerousConstructorName, highlightByKeyword, insertContentWithRange, isArray, isAsyncObject, isBrowserAPIObject, isBrowserGlobalObject, isBuiltInObject, isDOMObject, isDangerousObject, isDayjsObject, isDifferenceDay, isDifferenceMonth, isDifferenceYear, isEmbedFrame, isEmpty, isEqual, isFalsy, isFile, isFrameworkObject, isIncludeAudioExtList, isIncludeDocumentExtList, isIncludeImageExtList, isIncludeVideoExtList, isMap, isNearWhite, isNil, isRegExp, isReturnAsIsObject, isSafeToProcess, isSet, isSkippableObject, isSpecialObject, isTruthy, isTypeAudio, isTypeFile, isTypeImage, isTypeVideo, keyBy, listColorDefine, md5, omitBy, patterProtocolUrl, patternAccount, patternDomain, patternEmail, patternEmoji, patternEncodeUri, patternGetFieldByRuleFieldReplace, patternHostUrl, patternKey, patternMobilePhone, patternName, patternNameProfile, patternNameSpecial, patternNameUtf8, patternNumber, patternPem, patternPhone, patternRuleFieldReplace, patternTax, patternUrl, processPasteData, protectString, quill2xGetHtmlByDelta, range, removeEmoji, revealString, rgbToHex, set, setCaretPosition, setDefaultTimeZone, setKeyCrypto, setKeyCrypto3rd, setPatternCheckTimeUTC, setStylesElement, uniqBy, unwrapSignal, updateFunctionCheckEmbedFrame, updateFunctionFormatDate, updateFunctionXssFilter, uppercaseByPosition, uuid, viewDataNumberByLanguage, xssFilter };
3359
3380
  //# sourceMappingURL=libs-ui-utils.mjs.map