@libs-ui/components-inputs-quill2x 0.2.357-8 → 0.2.357-9
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/README.md +33 -38
- package/esm2022/quill2x.component.mjs +17 -13
- package/esm2022/utils/data.define.mjs +22 -4
- package/fesm2022/libs-ui-components-inputs-quill2x.mjs +37 -15
- package/fesm2022/libs-ui-components-inputs-quill2x.mjs.map +1 -1
- package/package.json +20 -20
- package/quill2x.component.d.ts +9 -1
- package/utils/data.define.d.ts +7 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { signal } from '@angular/core';
|
|
2
2
|
import { returnListObject } from '@libs-ui/services-http-request';
|
|
3
|
-
import { convertFileToBase64_ObjectUrl } from '@libs-ui/utils';
|
|
3
|
+
import { convertFileToBase64_ObjectUrl, isNil } from '@libs-ui/utils';
|
|
4
4
|
export const listDataAlign = () => {
|
|
5
5
|
return [
|
|
6
6
|
{ key: '', icon: 'libs-ui-icon-align-left text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]' },
|
|
@@ -473,8 +473,8 @@ export const fontSizeWhiteList = () => [
|
|
|
473
473
|
'71px',
|
|
474
474
|
'72px',
|
|
475
475
|
];
|
|
476
|
-
export const getStylesConvertInline = () => {
|
|
477
|
-
|
|
476
|
+
export const getStylesConvertInline = (customStyles) => {
|
|
477
|
+
const defaultStyles = [
|
|
478
478
|
{ selector: '.ql-font-Arial', styles: [{ key: 'font-family', value: 'Arial' }] },
|
|
479
479
|
{ selector: '.ql-font-sans-serif', styles: [{ key: 'font-family', value: 'sans-serif' }] },
|
|
480
480
|
{ selector: '.ql-font-serif', styles: [{ key: 'font-family', value: 'serif' }] },
|
|
@@ -562,5 +562,23 @@ export const getStylesConvertInline = () => {
|
|
|
562
562
|
],
|
|
563
563
|
},
|
|
564
564
|
];
|
|
565
|
+
if (customStyles) {
|
|
566
|
+
const styleExist = (selector) => defaultStyles.find((style) => style.selector === selector);
|
|
567
|
+
customStyles.forEach((styleCustom) => {
|
|
568
|
+
const styleExistInDefault = styleExist(styleCustom.selector);
|
|
569
|
+
if (styleExistInDefault) {
|
|
570
|
+
styleCustom.styles.forEach((item) => {
|
|
571
|
+
const styleItem = styleExistInDefault?.styles?.find((style) => style.key === item.key);
|
|
572
|
+
if (styleItem) {
|
|
573
|
+
styleItem.value = item.value;
|
|
574
|
+
return;
|
|
575
|
+
}
|
|
576
|
+
styleExistInDefault.styles.push(item);
|
|
577
|
+
});
|
|
578
|
+
styleExistInDefault.styles = styleExistInDefault.styles.filter((item) => !isNil(item.value));
|
|
579
|
+
}
|
|
580
|
+
});
|
|
581
|
+
}
|
|
582
|
+
return defaultStyles;
|
|
565
583
|
};
|
|
566
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5kZWZpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsMngvc3JjL3V0aWxzL2RhdGEuZGVmaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFzQixnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRy9ELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDaEMsT0FBTztRQUNMLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsOEZBQThGLEVBQUU7UUFDakgsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSwrRkFBK0YsRUFBRTtRQUN2SCxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGdHQUFnRyxFQUFFO1FBQ3pILEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsaUdBQWlHLEVBQUU7S0FDNUgsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7SUFDM0IsT0FBTztRQUNMLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO1FBQ2hDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1FBQ2hDLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO0tBQ3pDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFO0lBQzdCLE9BQU87UUFDTCxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUs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QUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRTtRQUMvRSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFO1FBQ2hGLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUU7UUFDaEYsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRTtRQUNoRixFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFO1FBQ2hGLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUU7UUFDaEYsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRTtRQUNoRixFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFO1FBQ2hGLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7UUFDNUQsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFB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RTthQUNuQztTQUNGO1FBQ0Q7WUFDRSxRQUFRLEVBQUUsWUFBWTtZQUN0QixNQUFNLEVBQUU7Z0JBQ04sRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtnQkFDL0MsRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7Z0JBQ3RDLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO2dCQUNuQyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTthQUN2QztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUxpc3RDb25maWdJdGVtIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1saXN0JztcbmltcG9ydCB7IElIdHRwUmVxdWVzdENvbmZpZywgcmV0dXJuTGlzdE9iamVjdCB9IGZyb20gJ0BsaWJzLXVpL3NlcnZpY2VzLWh0dHAtcmVxdWVzdCc7XG5pbXBvcnQgeyBjb252ZXJ0RmlsZVRvQmFzZTY0X09iamVjdFVybCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IElRdWlsbDJ4TGluaywgSVF1aWxsMnhUb29sYmFyQ29uZmlnLCBJUXVpbGwyeFVwbG9hZEltYWdlQ29uZmlnLCBRVUlMTDJYX1RZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVpbGwyeC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgbGlzdERhdGFBbGlnbiA9ICgpID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7IGtleTogJycsIGljb246ICdsaWJzLXVpLWljb24tYWxpZ24tbGVmdCB0ZXh0LVsjNmE3MzgzXSB0ZXh0LVsxNnB4XSBob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXScgfSxcbiAgICB7IGtleTogJ3JpZ2h0JywgaWNvbjogJ2xpYnMtdWktaWNvbi1hbGlnbi1yaWdodCB0ZXh0LVsjNmE3MzgzXSB0ZXh0LVsxNnB4XSBob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXScgfSxcbiAgICB7IGtleTogJ2NlbnRlcicsIGljb246ICdsaWJzLXVpLWljb24tYWxpZ24tY2VudGVyIHRleHQtWyM2YTczODNdIHRleHQtWzE2cHhdIGhvdmVyOnRleHQtW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMSldJyB9LFxuICAgIHsga2V5OiAnanVzdGlmeScsIGljb246ICdsaWJzLXVpLWljb24tYWxpZ24tanVzdGlmeSB0ZXh0LVsjNmE3MzgzXSB0ZXh0LVsxNnB4XSBob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXScgfSxcbiAgXTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaXN0Rm9udCA9ICgpID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7IGtleTogJycsIGxhYmVsOiAnU2FucyBTZXJpZicgfSxcbiAgICB7IGtleTogJ3NlcmlmJywgbGFiZWw6ICdTZXJpZicgfSxcbiAgICB7IGtleTogJ21vbm9zcGFjZScsIGxhYmVsOiAnTW9ub3NwYWNlJyB9LFxuICBdO1xufTtcblxuZXhwb3J0IGNvbnN0IGxpc3RIZWFkZXIgPSAoKSA9PiB7XG4gIHJldHVybiBbXG4gICAgeyBrZXk6ICcnLCBsYWJlbDogJ05vcm1hbCcgfSxcbiAgICB7IGtleTogJzEnLCBsYWJlbDogJ0hlYWRpbmcgMScgfSxcbiAgICB7IGtleTogJzInLCBsYWJlbDogJ0hlYWRpbmcgMicgfSxcbiAgICB7IGtleTogJzMnLCBsYWJlbDogJ0hlYWRpbmcgMycgfSxcbiAgICB7IGtleTogJzQnLCBsYWJlbDogJ0hlYWRpbmcgNCcgfSxcbiAgICB7IGtleTogJzUnLCBsYWJlbDogJ0hlYWRpbmcgNScgfSxcbiAgICB7IGtleTogJzYnLCBsYWJlbDogJ0hlYWRpbmcgNicgfSxcbiAgXTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaXN0Q29uZmlnQWxpZ24gPSAoKTogSUxpc3RDb25maWdJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgYXV0b1NlbGVjdEZpcnN0SXRlbTogdHJ1ZSxcbiAgICBodHRwUmVxdWVzdERhdGE6IHNpZ25hbDxJSHR0cFJlcXVlc3RDb25maWc+KHtcbiAgICAgIG9iamVjdEluc3RhbmNlOiByZXR1cm5MaXN0T2JqZWN0KGxpc3REYXRhQWxpZ24oKSksXG4gICAgICBmdW5jdGlvbk5hbWU6ICdsaXN0JyxcbiAgICAgIGFyZ3VtZW50c1ZhbHVlOiBbXSxcbiAgICB9KSxcbiAgICBjb25maWdUZW1wbGF0ZVRleHQ6IHNpZ25hbCh7XG4gICAgICBmaWVsZEtleTogJ2tleScsXG4gICAgICBnZXRDbGFzc0l0ZW06ICgpID0+ICchcHgtWzhweF0gIXB5LVs0cHhdJyxcbiAgICAgIGdldFZhbHVlOiAoaXRlbSkgPT4gYDxpIGNsYXNzPSdmbGV4ICR7aXRlbS5pY29ufSc+PC9pPmAsXG4gICAgICBpZ25vcmVJY29uU2VsZWN0ZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgbGlzdENvbmZpZ0ZvbnQgPSAoKTogSUxpc3RDb25maWdJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgYXV0b1NlbGVjdEZpcnN0SXRlbTogdHJ1ZSxcbiAgICBodHRwUmVxdWVzdERhdGE6IHNpZ25hbDxJSHR0cFJlcXVlc3RDb25maWc+KHtcbiAgICAgIG9iamVjdEluc3RhbmNlOiByZXR1cm5MaXN0T2JqZWN0KGxpc3RGb250KCkpLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnbGlzdCcsXG4gICAgICBhcmd1bWVudHNWYWx1ZTogW10sXG4gICAgfSksXG4gICAgY29uZmlnVGVtcGxhdGVUZXh0OiBzaWduYWwoe1xuICAgICAgZmllbGRLZXk6ICdrZXknLFxuICAgICAgZ2V0VmFsdWU6IChpdGVtKSA9PiBpdGVtLmxhYmVsLFxuICAgICAgaWdub3JlSWNvblNlbGVjdGVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGxpc3RDb25maWdIZWFkZXIgPSAoKTogSUxpc3RDb25maWdJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgYXV0b1NlbGVjdEZpcnN0SXRlbTogdHJ1ZSxcbiAgICBodHRwUmVxdWVzdERhdGE6IHNpZ25hbDxJSHR0cFJlcXVlc3RDb25maWc+KHtcbiAgICAgIG9iamVjdEluc3RhbmNlOiByZXR1cm5MaXN0T2JqZWN0KGxpc3RIZWFkZXIoKSksXG4gICAgICBmdW5jdGlvbk5hbWU6ICdsaXN0JyxcbiAgICAgIGFyZ3VtZW50c1ZhbHVlOiBbXSxcbiAgICB9KSxcbiAgICBjb25maWdUZW1wbGF0ZVRleHQ6IHNpZ25hbCh7XG4gICAgICBmaWVsZEtleTogJ2tleScsXG4gICAgICBnZXRWYWx1ZTogKGl0ZW0pID0+IHtcbiAgICAgICAgc3dpdGNoIChpdGVtPy5rZXkpIHtcbiAgICAgICAgICBjYXNlICcnOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oNXJcIj4ke2l0ZW0/LmxhYmVsfTwvc3Bhbj5gO1xuICAgICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oMXJcIj4ke2l0ZW0/LmxhYmVsfTwvc3Bhbj5gO1xuICAgICAgICAgIGNhc2UgJzInOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oMnJcIj4ke2l0ZW0/LmxhYmVsfTwvc3Bhbj5gO1xuICAgICAgICAgIGNhc2UgJzMnOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oM3JcIj4ke2l0ZW0/LmxhYmVsfTwvc3Bhbj5gO1xuICAgICAgICAgIGNhc2UgJzQnOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oNHJcIj4ke2l0ZW0/LmxhYmVsfTwvc3Bhbj5gO1xuICAgICAgICAgIGNhc2UgJzUnOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oNXJcIj4ke2l0ZW0/LmxhYmVsfTwvc3Bhbj5gO1xuICAgICAgICAgIGNhc2UgJzYnOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oNnJcIj4ke2l0ZW0/LmxhYmVsfTwvc3Bhbj5gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtPy5sYWJlbDtcbiAgICAgIH0sXG4gICAgICBpZ25vcmVJY29uU2VsZWN0ZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9vbEJhck9wdGlvbnMgPSAobW9kZTogUVVJTEwyWF9UWVBFX01PREVfQkFSX0NPTkZJR19PUFRJT04sIGhhc0ljb25JbWFnZTogYm9vbGVhbiwgaGFzSWNvblBlcnNvbmFsaXplOiBib29sZWFuKTogQXJyYXk8SVF1aWxsMnhUb29sYmFyQ29uZmlnPiA9PiB7XG4gIHJldHVybiAoXG4gICAgW1xuICAgICAge1xuICAgICAgICB0eXBlOiAndW5kbycsXG4gICAgICAgIGNsYXNzSW5jbHVkZTogJ21yLVs4cHhdJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAncmVkbycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2hlYWRlcicsXG4gICAgICAgIGNsYXNzSW5jbHVkZTogJ21sLVs4cHhdJyxcbiAgICAgICAgbW9kZTogWydhbGwnXSxcbiAgICAgICAgd2lkdGg6IDE0NixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdmb250RmFtaWx5JyxcbiAgICAgICAgY2xhc3NJbmNsdWRlOiAnbWwtWzhweF0nLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAxMzYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZm9udFNpemUnLFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bOHB4XSBtci1bOHB4XScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDgyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2NvbG9yJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnYmFja2dyb3VuZCcsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2JvbGQnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpdGFsaWMnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICd1bmRlcmxpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzdHJpa2VUaHJvdWdoJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnc2NyaXB0LnN1YicsXG4gICAgICAgIG1vZGU6IFsnYWxsJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzY3JpcHQuc3VwZXInLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2FkanVzdCcsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDUyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpbmRlbnRJbmNyZWFzZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2luZGVudERlY3JlYXNlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdEJ1bGxldGVkJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdE51bWJlcmVkJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdENoZWNrZWQnLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAncGVyc29uYWxpemUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdibG9ja3F1b3RlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluaycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3VuTGluaycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAndmlkZW8nLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZW1vamknLFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bOHB4XScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgfSxcbiAgICAgIHsgdHlwZTogJ3RhYmxlJywgd2lkdGg6IDMyLCBtb2RlOiBbJ2FsbCddIH0sXG4gICAgXSBhcyBBcnJheTxJUXVpbGwyeFRvb2xiYXJDb25maWc+XG4gICkuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgaWYgKCFpdGVtLm1vZGU/LmluY2x1ZGVzKG1vZGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpdGVtLnR5cGUgPT09ICdpbWFnZScpIHtcbiAgICAgIHJldHVybiBoYXNJY29uSW1hZ2U7XG4gICAgfVxuICAgIGlmIChpdGVtLnR5cGUgPT09ICdwZXJzb25hbGl6ZScpIHtcbiAgICAgIHJldHVybiBoYXNJY29uUGVyc29uYWxpemU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufTtcbmV4cG9ydCBjb25zdCBpY29uTGlzdCA9ICgpOiBBcnJheTx7IGtleTogc3RyaW5nOyBpY29uOiBzdHJpbmcgfT4gPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIGtleTogJ2JvbGQnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItYm9sZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdpdGFsaWMnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItaXRhbGljJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3VuZGVybGluZScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWVkaXRvci11bmRlcmxpbmVkJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2ltYWdlJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24taW1hZ2Utc29saWQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnbGluaycsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWxpbmsnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndW5kbycsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLXVuZG8nLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAncmVkbycsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLXJlZG8nLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnc3RyaWtlJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLXN0cmlrZS10aHJvdWdoJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2Jsb2NrcXVvdGUnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1xdW90ZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdvcmRlcmVkJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tbGlzdC1udW1iZXJlZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdidWxsZXQnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1saXN0LWJ1bGxldGVkJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2JhY2tncm91bmQnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItY29sb3ItYmFja2dyb3VuZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdjb2xvcicsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWVkaXRvci1jb2xvci10ZXh0JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2luZGVudC4tMScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWluZGVudC1kZWNyZWFzZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdpbmRlbnQuKzEnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1pbmRlbnQtaW5jcmVhc2UnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYWxpZ24uJyxcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tbGVmdCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdhbGlnbi5jZW50ZXInLFxuICAgICAgaWNvbjogJ2FsaWduLXF1aWxsIGxpYnMtdWktaWNvbi1hbGlnbi1jZW50ZXInLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYWxpZ24ucmlnaHQnLFxuICAgICAgaWNvbjogJ2FsaWduLXF1aWxsIGxpYnMtdWktaWNvbi1hbGlnbi1yaWdodCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdhbGlnbi5qdXN0aWZ5JyxcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tanVzdGlmeScsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd1bkxpbmsnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1saW5rLWJyb2tlbicsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdlbW9qaScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWZhY2Utc21pbGUnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndGFibGUnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi10YWJsZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdjaGVjaycsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLXRhc2stbGlzdCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd2aWRlbycsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLXZpZGVvLW91dGxpbmUnLFxuICAgIH0sXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgdXBsb2FkSW1hZ2VDb25maWdEZWZhdWx0ID0gKCk6IElRdWlsbDJ4VXBsb2FkSW1hZ2VDb25maWcgPT4ge1xuICByZXR1cm4ge1xuICAgIG1vZGVDdXN0b206IGZhbHNlLFxuICAgIHpJbmRleDogMTIwMixcbiAgICBzaG93SWNvbjogdHJ1ZSxcbiAgICBtYXhJbWFnZVNpemU6IDUgKiAxMDI0ICogMTAyNCxcbiAgICBvbmx5QWNjZXB0SW1hZ2VIdHRwc0xpbms6IGZhbHNlLFxuICAgIGZ1bmN0aW9uVXBsb2FkSW1hZ2U6IGFzeW5jIChmaWxlczogQXJyYXk8RmlsZT4pID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBkYXRhLnB1c2goYXdhaXQgY29udmVydEZpbGVUb0Jhc2U2NF9PYmplY3RVcmwoZmlsZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaW5rRGVmYXVsdCA9ICgpOiBJUXVpbGwyeExpbmsgPT4ge1xuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnJyxcbiAgICB1cmw6ICcnLFxuICAgIHJhbmdlOiB7XG4gICAgICBpbmRleDogMCxcbiAgICAgIGxlbmd0aDogMCxcbiAgICB9LFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGZvbnRTaXplV2hpdGVMaXN0ID0gKCkgPT4gW1xuICAnOHB4JyxcbiAgJzlweCcsXG4gICcxMHB4JyxcbiAgJzExcHgnLFxuICAnMTJweCcsXG4gICcxM3B4JyxcbiAgJzE0cHgnLFxuICAnMTVweCcsXG4gICcxNnB4JyxcbiAgJzE3cHgnLFxuICAnMThweCcsXG4gICcxOXB4JyxcbiAgJzIwcHgnLFxuICAnMjFweCcsXG4gICcyMnB4JyxcbiAgJzIzcHgnLFxuICAnMjRweCcsXG4gICcyNXB4JyxcbiAgJzI2cHgnLFxuICAnMjdweCcsXG4gICcyOHB4JyxcbiAgJzI5cHgnLFxuICAnMzBweCcsXG4gICczMXB4JyxcbiAgJzMycHgnLFxuICAnMzNweCcsXG4gICczNHB4JyxcbiAgJzM1cHgnLFxuICAnMzZweCcsXG4gICczN3B4JyxcbiAgJzM4cHgnLFxuICAnMzlweCcsXG4gICc0MHB4JyxcbiAgJzQxcHgnLFxuICAnNDJweCcsXG4gICc0M3B4JyxcbiAgJzQ0cHgnLFxuICAnNDVweCcsXG4gICc0NnB4JyxcbiAgJzQ3cHgnLFxuICAnNDhweCcsXG4gICc0OXB4JyxcbiAgJzUwcHgnLFxuICAnNTFweCcsXG4gICc1MnB4JyxcbiAgJzUzcHgnLFxuICAnNTRweCcsXG4gICc1NXB4JyxcbiAgJzU2cHgnLFxuICAnNTdweCcsXG4gICc1OHB4JyxcbiAgJzU5cHgnLFxuICAnNjBweCcsXG4gICc2MXB4JyxcbiAgJzYycHgnLFxuICAnNjNweCcsXG4gICc2NHB4JyxcbiAgJzY1cHgnLFxuICAnNjZweCcsXG4gICc2N3B4JyxcbiAgJzY4cHgnLFxuICAnNjlweCcsXG4gICc3MHB4JyxcbiAgJzcxcHgnLFxuICAnNzJweCcsXG5dO1xuXG5leHBvcnQgY29uc3QgZ2V0U3R5bGVzQ29udmVydElubGluZSA9ICgpOiBBcnJheTx7IHNlbGVjdG9yOiBzdHJpbmc7IHN0eWxlczogQXJyYXk8eyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PiB9PiA9PiB7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJy5xbC1mb250LUFyaWFsJywgc3R5bGVzOiBbeyBrZXk6ICdmb250LWZhbWlseScsIHZhbHVlOiAnQXJpYWwnIH1dIH0sXG4gICAgeyBzZWxlY3RvcjogJy5xbC1mb250LXNhbnMtc2VyaWYnLCBzdHlsZXM6IFt7IGtleTogJ2ZvbnQtZmFtaWx5JywgdmFsdWU6ICdzYW5zLXNlcmlmJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICcucWwtZm9udC1zZXJpZicsIHN0eWxlczogW3sga2V5OiAnZm9udC1mYW1pbHknLCB2YWx1ZTogJ3NlcmlmJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICcucWwtZm9udC1tb25vc3BhY2UnLCBzdHlsZXM6IFt7IGtleTogJ2ZvbnQtZmFtaWx5JywgdmFsdWU6ICdtb25vc3BhY2UnIH1dIH0sXG4gICAgeyBzZWxlY3RvcjogJy5xbC1mb250LUhlbHZldGljYScsIHN0eWxlczogW3sga2V5OiAnZm9udC1mYW1pbHknLCB2YWx1ZTogJ0hlbHZldGljYScgfV0gfSxcbiAgICB7IHNlbGVjdG9yOiAnLnFsLWluZGVudC0xJywgc3R5bGVzOiBbeyBrZXk6ICdwYWRkaW5nLWxlZnQnLCB2YWx1ZTogJzQuNWVtJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICcucWwtaW5kZW50LTInLCBzdHlsZXM6IFt7IGtleTogJ3BhZGRpbmctbGVmdCcsIHZhbHVlOiAnNy41cmVtJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICcucWwtaW5kZW50LTMnLCBzdHlsZXM6IFt7IGtleTogJ3BhZGRpbmctbGVmdCcsIHZhbHVlOiAnMTAuNWVtJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICcucWwtaW5kZW50LTQnLCBzdHlsZXM6IFt7IGtleTogJ3BhZGRpbmctbGVmdCcsIHZhbHVlOiAnMTMuNWVtJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICcucWwtaW5kZW50LTUnLCBzdHlsZXM6IFt7IGtleTogJ3BhZGRpbmctbGVmdCcsIHZhbHVlOiAnMTYuNWVtJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICcucWwtaW5kZW50LTYnLCBzdHlsZXM6IFt7IGtleTogJ3BhZGRpbmctbGVmdCcsIHZhbHVlOiAnMTkuNWVtJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICcucWwtaW5kZW50LTcnLCBzdHlsZXM6IFt7IGtleTogJ3BhZGRpbmctbGVmdCcsIHZhbHVlOiAnMjIuNWVtJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICcucWwtaW5kZW50LTgnLCBzdHlsZXM6IFt7IGtleTogJ3BhZGRpbmctbGVmdCcsIHZhbHVlOiAnMjUuNWVtJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICdhJywgc3R5bGVzOiBbeyBrZXk6ICdjb2xvcicsIHZhbHVlOiAnIzA2YycgfV0gfSxcbiAgICB7IHNlbGVjdG9yOiAnc3BhbicsIHN0eWxlczogW3sga2V5OiAnd2hpdGUtc3BhY2UnLCB2YWx1ZTogJ3ByZS13cmFwJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICdkaXYnLCBzdHlsZXM6IFt7IGtleTogJ3doaXRlLXNwYWNlJywgdmFsdWU6ICdwcmUtd3JhcCcgfV0gfSxcbiAgICB7IHNlbGVjdG9yOiAncCcsIHN0eWxlczogW3sga2V5OiAnd2hpdGUtc3BhY2UnLCB2YWx1ZTogJ3ByZS13cmFwJyB9XSB9LFxuICAgIHtcbiAgICAgIHNlbGVjdG9yOiAnaDEnLFxuICAgICAgc3R5bGVzOiBbXG4gICAgICAgIHsga2V5OiAnd2hpdGUtc3BhY2UnLCB2YWx1ZTogJ3ByZS13cmFwJyB9LFxuICAgICAgICB7IGtleTogJ2ZvbnQtc2l0ZScsIHZhbHVlOiAnMmVtJyB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHNlbGVjdG9yOiAnaDInLFxuICAgICAgc3R5bGVzOiBbXG4gICAgICAgIHsga2V5OiAnd2hpdGUtc3BhY2UnLCB2YWx1ZTogJ3ByZS13cmFwJyB9LFxuICAgICAgICB7IGtleTogJ2ZvbnQtc2l6ZScsIHZhbHVlOiAnMS41ZW0nIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgc2VsZWN0b3I6ICdoMycsXG4gICAgICBzdHlsZXM6IFtcbiAgICAgICAgeyBrZXk6ICd3aGl0ZS1zcGFjZScsIHZhbHVlOiAncHJlLXdyYXAnIH0sXG4gICAgICAgIHsga2V5OiAnZm9udC1zaXplJywgdmFsdWU6ICcxLjI1ZW0nIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgc2VsZWN0b3I6ICdoNCcsXG4gICAgICBzdHlsZXM6IFtcbiAgICAgICAgeyBrZXk6ICd3aGl0ZS1zcGFjZScsIHZhbHVlOiAncHJlLXdyYXAnIH0sXG4gICAgICAgIHsga2V5OiAnZm9udC1zaXplJywgdmFsdWU6ICcxZW0nIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgc2VsZWN0b3I6ICdoNScsXG4gICAgICBzdHlsZXM6IFtcbiAgICAgICAgeyBrZXk6ICd3aGl0ZS1zcGFjZScsIHZhbHVlOiAncHJlLXdyYXAnIH0sXG4gICAgICAgIHsga2V5OiAnZm9udC1zaXplJywgdmFsdWU6ICcwLjg3NWVtJyB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHNlbGVjdG9yOiAnaDYnLFxuICAgICAgc3R5bGVzOiBbXG4gICAgICAgIHsga2V5OiAnd2hpdGUtc3BhY2UnLCB2YWx1ZTogJ3ByZS13cmFwJyB9LFxuICAgICAgICB7IGtleTogJ2ZvbnQtc2l6ZScsIHZhbHVlOiAnMC43NWVtJyB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHsgc2VsZWN0b3I6ICdvbCcsIHN0eWxlczogW3sga2V5OiAnd2hpdGUtc3BhY2UnLCB2YWx1ZTogJ3ByZS13cmFwJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICdsaScsIHN0eWxlczogW3sga2V5OiAnd2hpdGUtc3BhY2UnLCB2YWx1ZTogJ3ByZS13cmFwJyB9XSB9LFxuICAgIHtcbiAgICAgIHNlbGVjdG9yOiAnLmxpYnMtdWktcXVpbGwtZm9ybWF0LWltYWdlJyxcbiAgICAgIHN0eWxlczogW1xuICAgICAgICB7IGtleTogJ21heC13aWR0aCcsIHZhbHVlOiAnMTAwJScgfSxcbiAgICAgICAgeyBrZXk6ICdoZWlnaHQnLCB2YWx1ZTogJ2F1dG8nIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgc2VsZWN0b3I6ICcubGlicy11aS1xdWlsbC1tZW50aW9uJyxcbiAgICAgIHN0eWxlczogW1xuICAgICAgICB7IGtleTogJ2ZvbnQtd2VpZ2h0JywgdmFsdWU6ICc2MDAnIH0sXG4gICAgICAgIHsga2V5OiAnbW96LW9zeC1mb250LXNtb290aGluZycsIHZhbHVlOiAnZ3JheXNjYWxlJyB9LFxuICAgICAgICB7IGtleTogJ3dlYmtpdC1mb250LXNtb290aGluZycsIHZhbHVlOiAnYW50aWFsaWFzZWQnIH0sXG4gICAgICAgIHsga2V5OiAnY29sb3InLCB2YWx1ZTogJyM3MjM5RUEnIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgc2VsZWN0b3I6ICdibG9ja3F1b3RlJyxcbiAgICAgIHN0eWxlczogW1xuICAgICAgICB7IGtleTogJ2JvcmRlci1sZWZ0JywgdmFsdWU6ICc0cHggc29saWQgI2NjYycgfSxcbiAgICAgICAgeyBrZXk6ICdtYXJnaW4tYm90dG9tJywgdmFsdWU6ICc1cHgnIH0sXG4gICAgICAgIHsga2V5OiAnbWFyZ2luLXRvcCcsIHZhbHVlOiAnNXB4JyB9LFxuICAgICAgICB7IGtleTogJ3BhZGRpbmctbGVmdCcsIHZhbHVlOiAnMTZweCcgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcbn07XG4iXX0=
|
|
584
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5kZWZpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsMngvc3JjL3V0aWxzL2RhdGEuZGVmaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFzQixnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd0RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFO0lBQ2hDLE9BQU87UUFDTCxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLDhGQUE4RixFQUFFO1FBQ2pILEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsK0ZBQStGLEVBQUU7UUFDdkgsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxnR0FBZ0csRUFBRTtRQUN6SCxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGlHQUFpRyxFQUFFO0tBQzVILENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO0lBQzNCLE9BQU87UUFDTCxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtRQUNoQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtRQUNoQyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtLQUN6QyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEdBQUcsRUFBRTtJQUM3QixPQUFPO1FBQ0wsRUFBRSxHQUFHLEVBQUUs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RUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO1FBQy9FLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUU7UUFDaEYsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRTtRQUNoRixFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFO1FBQ2hGLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUU7UUFDaEYsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRTtRQUNoRixFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFO1FBQ2hGLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUU7UUFDaEYsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtRQUM1RCxF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Q0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hDLENBQUMsQ0FBQyxDQUFDO2dCQUNILG1CQUFtQixDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMvRixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTGlzdENvbmZpZ0l0ZW0gfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWxpc3QnO1xuaW1wb3J0IHsgSUh0dHBSZXF1ZXN0Q29uZmlnLCByZXR1cm5MaXN0T2JqZWN0IH0gZnJvbSAnQGxpYnMtdWkvc2VydmljZXMtaHR0cC1yZXF1ZXN0JztcbmltcG9ydCB7IGNvbnZlcnRGaWxlVG9CYXNlNjRfT2JqZWN0VXJsLCBpc05pbCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IElRdWlsbDJ4TGluaywgSVF1aWxsMnhUb29sYmFyQ29uZmlnLCBJUXVpbGwyeFVwbG9hZEltYWdlQ29uZmlnLCBRVUlMTDJYX1RZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVpbGwyeC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgbGlzdERhdGFBbGlnbiA9ICgpID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7IGtleTogJycsIGljb246ICdsaWJzLXVpLWljb24tYWxpZ24tbGVmdCB0ZXh0LVsjNmE3MzgzXSB0ZXh0LVsxNnB4XSBob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXScgfSxcbiAgICB7IGtleTogJ3JpZ2h0JywgaWNvbjogJ2xpYnMtdWktaWNvbi1hbGlnbi1yaWdodCB0ZXh0LVsjNmE3MzgzXSB0ZXh0LVsxNnB4XSBob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXScgfSxcbiAgICB7IGtleTogJ2NlbnRlcicsIGljb246ICdsaWJzLXVpLWljb24tYWxpZ24tY2VudGVyIHRleHQtWyM2YTczODNdIHRleHQtWzE2cHhdIGhvdmVyOnRleHQtW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMSldJyB9LFxuICAgIHsga2V5OiAnanVzdGlmeScsIGljb246ICdsaWJzLXVpLWljb24tYWxpZ24tanVzdGlmeSB0ZXh0LVsjNmE3MzgzXSB0ZXh0LVsxNnB4XSBob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXScgfSxcbiAgXTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaXN0Rm9udCA9ICgpID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7IGtleTogJycsIGxhYmVsOiAnU2FucyBTZXJpZicgfSxcbiAgICB7IGtleTogJ3NlcmlmJywgbGFiZWw6ICdTZXJpZicgfSxcbiAgICB7IGtleTogJ21vbm9zcGFjZScsIGxhYmVsOiAnTW9ub3NwYWNlJyB9LFxuICBdO1xufTtcblxuZXhwb3J0IGNvbnN0IGxpc3RIZWFkZXIgPSAoKSA9PiB7XG4gIHJldHVybiBbXG4gICAgeyBrZXk6ICcnLCBsYWJlbDogJ05vcm1hbCcgfSxcbiAgICB7IGtleTogJzEnLCBsYWJlbDogJ0hlYWRpbmcgMScgfSxcbiAgICB7IGtleTogJzInLCBsYWJlbDogJ0hlYWRpbmcgMicgfSxcbiAgICB7IGtleTogJzMnLCBsYWJlbDogJ0hlYWRpbmcgMycgfSxcbiAgICB7IGtleTogJzQnLCBsYWJlbDogJ0hlYWRpbmcgNCcgfSxcbiAgICB7IGtleTogJzUnLCBsYWJlbDogJ0hlYWRpbmcgNScgfSxcbiAgICB7IGtleTogJzYnLCBsYWJlbDogJ0hlYWRpbmcgNicgfSxcbiAgXTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaXN0Q29uZmlnQWxpZ24gPSAoKTogSUxpc3RDb25maWdJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgYXV0b1NlbGVjdEZpcnN0SXRlbTogdHJ1ZSxcbiAgICBodHRwUmVxdWVzdERhdGE6IHNpZ25hbDxJSHR0cFJlcXVlc3RDb25maWc+KHtcbiAgICAgIG9iamVjdEluc3RhbmNlOiByZXR1cm5MaXN0T2JqZWN0KGxpc3REYXRhQWxpZ24oKSksXG4gICAgICBmdW5jdGlvbk5hbWU6ICdsaXN0JyxcbiAgICAgIGFyZ3VtZW50c1ZhbHVlOiBbXSxcbiAgICB9KSxcbiAgICBjb25maWdUZW1wbGF0ZVRleHQ6IHNpZ25hbCh7XG4gICAgICBmaWVsZEtleTogJ2tleScsXG4gICAgICBnZXRDbGFzc0l0ZW06ICgpID0+ICchcHgtWzhweF0gIXB5LVs0cHhdJyxcbiAgICAgIGdldFZhbHVlOiAoaXRlbSkgPT4gYDxpIGNsYXNzPSdmbGV4ICR7aXRlbS5pY29ufSc+PC9pPmAsXG4gICAgICBpZ25vcmVJY29uU2VsZWN0ZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgbGlzdENvbmZpZ0ZvbnQgPSAoKTogSUxpc3RDb25maWdJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgYXV0b1NlbGVjdEZpcnN0SXRlbTogdHJ1ZSxcbiAgICBodHRwUmVxdWVzdERhdGE6IHNpZ25hbDxJSHR0cFJlcXVlc3RDb25maWc+KHtcbiAgICAgIG9iamVjdEluc3RhbmNlOiByZXR1cm5MaXN0T2JqZWN0KGxpc3RGb250KCkpLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnbGlzdCcsXG4gICAgICBhcmd1bWVudHNWYWx1ZTogW10sXG4gICAgfSksXG4gICAgY29uZmlnVGVtcGxhdGVUZXh0OiBzaWduYWwoe1xuICAgICAgZmllbGRLZXk6ICdrZXknLFxuICAgICAgZ2V0VmFsdWU6IChpdGVtKSA9PiBpdGVtLmxhYmVsLFxuICAgICAgaWdub3JlSWNvblNlbGVjdGVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGxpc3RDb25maWdIZWFkZXIgPSAoKTogSUxpc3RDb25maWdJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgYXV0b1NlbGVjdEZpcnN0SXRlbTogdHJ1ZSxcbiAgICBodHRwUmVxdWVzdERhdGE6IHNpZ25hbDxJSHR0cFJlcXVlc3RDb25maWc+KHtcbiAgICAgIG9iamVjdEluc3RhbmNlOiByZXR1cm5MaXN0T2JqZWN0KGxpc3RIZWFkZXIoKSksXG4gICAgICBmdW5jdGlvbk5hbWU6ICdsaXN0JyxcbiAgICAgIGFyZ3VtZW50c1ZhbHVlOiBbXSxcbiAgICB9KSxcbiAgICBjb25maWdUZW1wbGF0ZVRleHQ6IHNpZ25hbCh7XG4gICAgICBmaWVsZEtleTogJ2tleScsXG4gICAgICBnZXRWYWx1ZTogKGl0ZW0pID0+IHtcbiAgICAgICAgc3dpdGNoIChpdGVtPy5rZXkpIHtcbiAgICAgICAgICBjYXNlICcnOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oNXJcIj4ke2l0ZW0/LmxhYmVsfTwvc3Bhbj5gO1xuICAgICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oMXJcIj4ke2l0ZW0/LmxhYmVsfTwvc3Bhbj5gO1xuICAgICAgICAgIGNhc2UgJzInOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oMnJcIj4ke2l0ZW0/LmxhYmVsfTwvc3Bhbj5gO1xuICAgICAgICAgIGNhc2UgJzMnOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oM3JcIj4ke2l0ZW0/LmxhYmVsfTwvc3Bhbj5gO1xuICAgICAgICAgIGNhc2UgJzQnOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oNHJcIj4ke2l0ZW0/LmxhYmVsfTwvc3Bhbj5gO1xuICAgICAgICAgIGNhc2UgJzUnOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oNXJcIj4ke2l0ZW0/LmxhYmVsfTwvc3Bhbj5gO1xuICAgICAgICAgIGNhc2UgJzYnOlxuICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oNnJcIj4ke2l0ZW0/LmxhYmVsfTwvc3Bhbj5gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtPy5sYWJlbDtcbiAgICAgIH0sXG4gICAgICBpZ25vcmVJY29uU2VsZWN0ZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9vbEJhck9wdGlvbnMgPSAobW9kZTogUVVJTEwyWF9UWVBFX01PREVfQkFSX0NPTkZJR19PUFRJT04sIGhhc0ljb25JbWFnZTogYm9vbGVhbiwgaGFzSWNvblBlcnNvbmFsaXplOiBib29sZWFuKTogQXJyYXk8SVF1aWxsMnhUb29sYmFyQ29uZmlnPiA9PiB7XG4gIHJldHVybiAoXG4gICAgW1xuICAgICAge1xuICAgICAgICB0eXBlOiAndW5kbycsXG4gICAgICAgIGNsYXNzSW5jbHVkZTogJ21yLVs4cHhdJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAncmVkbycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2hlYWRlcicsXG4gICAgICAgIGNsYXNzSW5jbHVkZTogJ21sLVs4cHhdJyxcbiAgICAgICAgbW9kZTogWydhbGwnXSxcbiAgICAgICAgd2lkdGg6IDE0NixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdmb250RmFtaWx5JyxcbiAgICAgICAgY2xhc3NJbmNsdWRlOiAnbWwtWzhweF0nLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAxMzYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZm9udFNpemUnLFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bOHB4XSBtci1bOHB4XScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDgyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2NvbG9yJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnYmFja2dyb3VuZCcsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2JvbGQnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpdGFsaWMnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICd1bmRlcmxpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzdHJpa2VUaHJvdWdoJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnc2NyaXB0LnN1YicsXG4gICAgICAgIG1vZGU6IFsnYWxsJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzY3JpcHQuc3VwZXInLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2FkanVzdCcsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDUyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpbmRlbnRJbmNyZWFzZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2luZGVudERlY3JlYXNlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdEJ1bGxldGVkJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdE51bWJlcmVkJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdENoZWNrZWQnLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAncGVyc29uYWxpemUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdibG9ja3F1b3RlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluaycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3VuTGluaycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAndmlkZW8nLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZW1vamknLFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bOHB4XScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgfSxcbiAgICAgIHsgdHlwZTogJ3RhYmxlJywgd2lkdGg6IDMyLCBtb2RlOiBbJ2FsbCddIH0sXG4gICAgXSBhcyBBcnJheTxJUXVpbGwyeFRvb2xiYXJDb25maWc+XG4gICkuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgaWYgKCFpdGVtLm1vZGU/LmluY2x1ZGVzKG1vZGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpdGVtLnR5cGUgPT09ICdpbWFnZScpIHtcbiAgICAgIHJldHVybiBoYXNJY29uSW1hZ2U7XG4gICAgfVxuICAgIGlmIChpdGVtLnR5cGUgPT09ICdwZXJzb25hbGl6ZScpIHtcbiAgICAgIHJldHVybiBoYXNJY29uUGVyc29uYWxpemU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufTtcbmV4cG9ydCBjb25zdCBpY29uTGlzdCA9ICgpOiBBcnJheTx7IGtleTogc3RyaW5nOyBpY29uOiBzdHJpbmcgfT4gPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIGtleTogJ2JvbGQnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItYm9sZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdpdGFsaWMnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItaXRhbGljJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3VuZGVybGluZScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWVkaXRvci11bmRlcmxpbmVkJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2ltYWdlJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24taW1hZ2Utc29saWQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnbGluaycsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWxpbmsnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndW5kbycsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLXVuZG8nLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAncmVkbycsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLXJlZG8nLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnc3RyaWtlJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLXN0cmlrZS10aHJvdWdoJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2Jsb2NrcXVvdGUnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1xdW90ZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdvcmRlcmVkJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tbGlzdC1udW1iZXJlZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdidWxsZXQnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1saXN0LWJ1bGxldGVkJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2JhY2tncm91bmQnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItY29sb3ItYmFja2dyb3VuZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdjb2xvcicsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWVkaXRvci1jb2xvci10ZXh0JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2luZGVudC4tMScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWluZGVudC1kZWNyZWFzZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdpbmRlbnQuKzEnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1pbmRlbnQtaW5jcmVhc2UnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYWxpZ24uJyxcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tbGVmdCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdhbGlnbi5jZW50ZXInLFxuICAgICAgaWNvbjogJ2FsaWduLXF1aWxsIGxpYnMtdWktaWNvbi1hbGlnbi1jZW50ZXInLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYWxpZ24ucmlnaHQnLFxuICAgICAgaWNvbjogJ2FsaWduLXF1aWxsIGxpYnMtdWktaWNvbi1hbGlnbi1yaWdodCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdhbGlnbi5qdXN0aWZ5JyxcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tanVzdGlmeScsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd1bkxpbmsnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1saW5rLWJyb2tlbicsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdlbW9qaScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWZhY2Utc21pbGUnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndGFibGUnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi10YWJsZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdjaGVjaycsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLXRhc2stbGlzdCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd2aWRlbycsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLXZpZGVvLW91dGxpbmUnLFxuICAgIH0sXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgdXBsb2FkSW1hZ2VDb25maWdEZWZhdWx0ID0gKCk6IElRdWlsbDJ4VXBsb2FkSW1hZ2VDb25maWcgPT4ge1xuICByZXR1cm4ge1xuICAgIG1vZGVDdXN0b206IGZhbHNlLFxuICAgIHpJbmRleDogMTIwMixcbiAgICBzaG93SWNvbjogdHJ1ZSxcbiAgICBtYXhJbWFnZVNpemU6IDUgKiAxMDI0ICogMTAyNCxcbiAgICBvbmx5QWNjZXB0SW1hZ2VIdHRwc0xpbms6IGZhbHNlLFxuICAgIGZ1bmN0aW9uVXBsb2FkSW1hZ2U6IGFzeW5jIChmaWxlczogQXJyYXk8RmlsZT4pID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBkYXRhLnB1c2goYXdhaXQgY29udmVydEZpbGVUb0Jhc2U2NF9PYmplY3RVcmwoZmlsZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaW5rRGVmYXVsdCA9ICgpOiBJUXVpbGwyeExpbmsgPT4ge1xuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnJyxcbiAgICB1cmw6ICcnLFxuICAgIHJhbmdlOiB7XG4gICAgICBpbmRleDogMCxcbiAgICAgIGxlbmd0aDogMCxcbiAgICB9LFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGZvbnRTaXplV2hpdGVMaXN0ID0gKCkgPT4gW1xuICAnOHB4JyxcbiAgJzlweCcsXG4gICcxMHB4JyxcbiAgJzExcHgnLFxuICAnMTJweCcsXG4gICcxM3B4JyxcbiAgJzE0cHgnLFxuICAnMTVweCcsXG4gICcxNnB4JyxcbiAgJzE3cHgnLFxuICAnMThweCcsXG4gICcxOXB4JyxcbiAgJzIwcHgnLFxuICAnMjFweCcsXG4gICcyMnB4JyxcbiAgJzIzcHgnLFxuICAnMjRweCcsXG4gICcyNXB4JyxcbiAgJzI2cHgnLFxuICAnMjdweCcsXG4gICcyOHB4JyxcbiAgJzI5cHgnLFxuICAnMzBweCcsXG4gICczMXB4JyxcbiAgJzMycHgnLFxuICAnMzNweCcsXG4gICczNHB4JyxcbiAgJzM1cHgnLFxuICAnMzZweCcsXG4gICczN3B4JyxcbiAgJzM4cHgnLFxuICAnMzlweCcsXG4gICc0MHB4JyxcbiAgJzQxcHgnLFxuICAnNDJweCcsXG4gICc0M3B4JyxcbiAgJzQ0cHgnLFxuICAnNDVweCcsXG4gICc0NnB4JyxcbiAgJzQ3cHgnLFxuICAnNDhweCcsXG4gICc0OXB4JyxcbiAgJzUwcHgnLFxuICAnNTFweCcsXG4gICc1MnB4JyxcbiAgJzUzcHgnLFxuICAnNTRweCcsXG4gICc1NXB4JyxcbiAgJzU2cHgnLFxuICAnNTdweCcsXG4gICc1OHB4JyxcbiAgJzU5cHgnLFxuICAnNjBweCcsXG4gICc2MXB4JyxcbiAgJzYycHgnLFxuICAnNjNweCcsXG4gICc2NHB4JyxcbiAgJzY1cHgnLFxuICAnNjZweCcsXG4gICc2N3B4JyxcbiAgJzY4cHgnLFxuICAnNjlweCcsXG4gICc3MHB4JyxcbiAgJzcxcHgnLFxuICAnNzJweCcsXG5dO1xuXG5leHBvcnQgY29uc3QgZ2V0U3R5bGVzQ29udmVydElubGluZSA9IChjdXN0b21TdHlsZXM/OiBBcnJheTx7IHNlbGVjdG9yOiBzdHJpbmc7IHN0eWxlczogQXJyYXk8eyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PiB9Pik6IEFycmF5PHsgc2VsZWN0b3I6IHN0cmluZzsgc3R5bGVzOiBBcnJheTx7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+IH0+ID0+IHtcbiAgY29uc3QgZGVmYXVsdFN0eWxlcyA9IFtcbiAgICB7IHNlbGVjdG9yOiAnLnFsLWZvbnQtQXJpYWwnLCBzdHlsZXM6IFt7IGtleTogJ2ZvbnQtZmFtaWx5JywgdmFsdWU6ICdBcmlhbCcgfV0gfSxcbiAgICB7IHNlbGVjdG9yOiAnLnFsLWZvbnQtc2Fucy1zZXJpZicsIHN0eWxlczogW3sga2V5OiAnZm9udC1mYW1pbHknLCB2YWx1ZTogJ3NhbnMtc2VyaWYnIH1dIH0sXG4gICAgeyBzZWxlY3RvcjogJy5xbC1mb250LXNlcmlmJywgc3R5bGVzOiBbeyBrZXk6ICdmb250LWZhbWlseScsIHZhbHVlOiAnc2VyaWYnIH1dIH0sXG4gICAgeyBzZWxlY3RvcjogJy5xbC1mb250LW1vbm9zcGFjZScsIHN0eWxlczogW3sga2V5OiAnZm9udC1mYW1pbHknLCB2YWx1ZTogJ21vbm9zcGFjZScgfV0gfSxcbiAgICB7IHNlbGVjdG9yOiAnLnFsLWZvbnQtSGVsdmV0aWNhJywgc3R5bGVzOiBbeyBrZXk6ICdmb250LWZhbWlseScsIHZhbHVlOiAnSGVsdmV0aWNhJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICcucWwtaW5kZW50LTEnLCBzdHlsZXM6IFt7IGtleTogJ3BhZGRpbmctbGVmdCcsIHZhbHVlOiAnNC41ZW0nIH1dIH0sXG4gICAgeyBzZWxlY3RvcjogJy5xbC1pbmRlbnQtMicsIHN0eWxlczogW3sga2V5OiAncGFkZGluZy1sZWZ0JywgdmFsdWU6ICc3LjVyZW0nIH1dIH0sXG4gICAgeyBzZWxlY3RvcjogJy5xbC1pbmRlbnQtMycsIHN0eWxlczogW3sga2V5OiAncGFkZGluZy1sZWZ0JywgdmFsdWU6ICcxMC41ZW0nIH1dIH0sXG4gICAgeyBzZWxlY3RvcjogJy5xbC1pbmRlbnQtNCcsIHN0eWxlczogW3sga2V5OiAncGFkZGluZy1sZWZ0JywgdmFsdWU6ICcxMy41ZW0nIH1dIH0sXG4gICAgeyBzZWxlY3RvcjogJy5xbC1pbmRlbnQtNScsIHN0eWxlczogW3sga2V5OiAncGFkZGluZy1sZWZ0JywgdmFsdWU6ICcxNi41ZW0nIH1dIH0sXG4gICAgeyBzZWxlY3RvcjogJy5xbC1pbmRlbnQtNicsIHN0eWxlczogW3sga2V5OiAncGFkZGluZy1sZWZ0JywgdmFsdWU6ICcxOS41ZW0nIH1dIH0sXG4gICAgeyBzZWxlY3RvcjogJy5xbC1pbmRlbnQtNycsIHN0eWxlczogW3sga2V5OiAncGFkZGluZy1sZWZ0JywgdmFsdWU6ICcyMi41ZW0nIH1dIH0sXG4gICAgeyBzZWxlY3RvcjogJy5xbC1pbmRlbnQtOCcsIHN0eWxlczogW3sga2V5OiAncGFkZGluZy1sZWZ0JywgdmFsdWU6ICcyNS41ZW0nIH1dIH0sXG4gICAgeyBzZWxlY3RvcjogJ2EnLCBzdHlsZXM6IFt7IGtleTogJ2NvbG9yJywgdmFsdWU6ICcjMDZjJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICdzcGFuJywgc3R5bGVzOiBbeyBrZXk6ICd3aGl0ZS1zcGFjZScsIHZhbHVlOiAncHJlLXdyYXAnIH1dIH0sXG4gICAgeyBzZWxlY3RvcjogJ2RpdicsIHN0eWxlczogW3sga2V5OiAnd2hpdGUtc3BhY2UnLCB2YWx1ZTogJ3ByZS13cmFwJyB9XSB9LFxuICAgIHsgc2VsZWN0b3I6ICdwJywgc3R5bGVzOiBbeyBrZXk6ICd3aGl0ZS1zcGFjZScsIHZhbHVlOiAncHJlLXdyYXAnIH1dIH0sXG4gICAge1xuICAgICAgc2VsZWN0b3I6ICdoMScsXG4gICAgICBzdHlsZXM6IFtcbiAgICAgICAgeyBrZXk6ICd3aGl0ZS1zcGFjZScsIHZhbHVlOiAncHJlLXdyYXAnIH0sXG4gICAgICAgIHsga2V5OiAnZm9udC1zaXRlJywgdmFsdWU6ICcyZW0nIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgc2VsZWN0b3I6ICdoMicsXG4gICAgICBzdHlsZXM6IFtcbiAgICAgICAgeyBrZXk6ICd3aGl0ZS1zcGFjZScsIHZhbHVlOiAncHJlLXdyYXAnIH0sXG4gICAgICAgIHsga2V5OiAnZm9udC1zaXplJywgdmFsdWU6ICcxLjVlbScgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBzZWxlY3RvcjogJ2gzJyxcbiAgICAgIHN0eWxlczogW1xuICAgICAgICB7IGtleTogJ3doaXRlLXNwYWNlJywgdmFsdWU6ICdwcmUtd3JhcCcgfSxcbiAgICAgICAgeyBrZXk6ICdmb250LXNpemUnLCB2YWx1ZTogJzEuMjVlbScgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBzZWxlY3RvcjogJ2g0JyxcbiAgICAgIHN0eWxlczogW1xuICAgICAgICB7IGtleTogJ3doaXRlLXNwYWNlJywgdmFsdWU6ICdwcmUtd3JhcCcgfSxcbiAgICAgICAgeyBrZXk6ICdmb250LXNpemUnLCB2YWx1ZTogJzFlbScgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBzZWxlY3RvcjogJ2g1JyxcbiAgICAgIHN0eWxlczogW1xuICAgICAgICB7IGtleTogJ3doaXRlLXNwYWNlJywgdmFsdWU6ICdwcmUtd3JhcCcgfSxcbiAgICAgICAgeyBrZXk6ICdmb250LXNpemUnLCB2YWx1ZTogJzAuODc1ZW0nIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgc2VsZWN0b3I6ICdoNicsXG4gICAgICBzdHlsZXM6IFtcbiAgICAgICAgeyBrZXk6ICd3aGl0ZS1zcGFjZScsIHZhbHVlOiAncHJlLXdyYXAnIH0sXG4gICAgICAgIHsga2V5OiAnZm9udC1zaXplJywgdmFsdWU6ICcwLjc1ZW0nIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAgeyBzZWxlY3RvcjogJ29sJywgc3R5bGVzOiBbeyBrZXk6ICd3aGl0ZS1zcGFjZScsIHZhbHVlOiAncHJlLXdyYXAnIH1dIH0sXG4gICAgeyBzZWxlY3RvcjogJ2xpJywgc3R5bGVzOiBbeyBrZXk6ICd3aGl0ZS1zcGFjZScsIHZhbHVlOiAncHJlLXdyYXAnIH1dIH0sXG4gICAge1xuICAgICAgc2VsZWN0b3I6ICcubGlicy11aS1xdWlsbC1mb3JtYXQtaW1hZ2UnLFxuICAgICAgc3R5bGVzOiBbXG4gICAgICAgIHsga2V5OiAnbWF4LXdpZHRoJywgdmFsdWU6ICcxMDAlJyB9LFxuICAgICAgICB7IGtleTogJ2hlaWdodCcsIHZhbHVlOiAnYXV0bycgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBzZWxlY3RvcjogJy5saWJzLXVpLXF1aWxsLW1lbnRpb24nLFxuICAgICAgc3R5bGVzOiBbXG4gICAgICAgIHsga2V5OiAnZm9udC13ZWlnaHQnLCB2YWx1ZTogJzYwMCcgfSxcbiAgICAgICAgeyBrZXk6ICdtb3otb3N4LWZvbnQtc21vb3RoaW5nJywgdmFsdWU6ICdncmF5c2NhbGUnIH0sXG4gICAgICAgIHsga2V5OiAnd2Via2l0LWZvbnQtc21vb3RoaW5nJywgdmFsdWU6ICdhbnRpYWxpYXNlZCcgfSxcbiAgICAgICAgeyBrZXk6ICdjb2xvcicsIHZhbHVlOiAnIzcyMzlFQScgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBzZWxlY3RvcjogJ2Jsb2NrcXVvdGUnLFxuICAgICAgc3R5bGVzOiBbXG4gICAgICAgIHsga2V5OiAnYm9yZGVyLWxlZnQnLCB2YWx1ZTogJzRweCBzb2xpZCAjY2NjJyB9LFxuICAgICAgICB7IGtleTogJ21hcmdpbi1ib3R0b20nLCB2YWx1ZTogJzVweCcgfSxcbiAgICAgICAgeyBrZXk6ICdtYXJnaW4tdG9wJywgdmFsdWU6ICc1cHgnIH0sXG4gICAgICAgIHsga2V5OiAncGFkZGluZy1sZWZ0JywgdmFsdWU6ICcxNnB4JyB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xuXG4gIGlmIChjdXN0b21TdHlsZXMpIHtcbiAgICBjb25zdCBzdHlsZUV4aXN0ID0gKHNlbGVjdG9yOiBzdHJpbmcpID0+IGRlZmF1bHRTdHlsZXMuZmluZCgoc3R5bGUpID0+IHN0eWxlLnNlbGVjdG9yID09PSBzZWxlY3Rvcik7XG5cbiAgICBjdXN0b21TdHlsZXMuZm9yRWFjaCgoc3R5bGVDdXN0b20pID0+IHtcbiAgICAgIGNvbnN0IHN0eWxlRXhpc3RJbkRlZmF1bHQgPSBzdHlsZUV4aXN0KHN0eWxlQ3VzdG9tLnNlbGVjdG9yKTtcblxuICAgICAgaWYgKHN0eWxlRXhpc3RJbkRlZmF1bHQpIHtcbiAgICAgICAgc3R5bGVDdXN0b20uc3R5bGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCBzdHlsZUl0ZW0gPSBzdHlsZUV4aXN0SW5EZWZhdWx0Py5zdHlsZXM/LmZpbmQoKHN0eWxlKSA9PiBzdHlsZS5rZXkgPT09IGl0ZW0ua2V5KTtcbiAgICAgICAgICBpZiAoc3R5bGVJdGVtKSB7XG4gICAgICAgICAgICBzdHlsZUl0ZW0udmFsdWUgPSBpdGVtLnZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHN0eWxlRXhpc3RJbkRlZmF1bHQuc3R5bGVzLnB1c2goaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgICBzdHlsZUV4aXN0SW5EZWZhdWx0LnN0eWxlcyA9IHN0eWxlRXhpc3RJbkRlZmF1bHQuc3R5bGVzLmZpbHRlcigoaXRlbSkgPT4gIWlzTmlsKGl0ZW0udmFsdWUpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdFN0eWxlcztcbn07XG4iXX0=
|
|
@@ -14,7 +14,7 @@ import { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scro
|
|
|
14
14
|
import { LibsUiComponentsSkeletonComponent } from '@libs-ui/components-skeleton';
|
|
15
15
|
import { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';
|
|
16
16
|
import { LibsUiNotificationService } from '@libs-ui/services-notification';
|
|
17
|
-
import { patternUrl, convertFileToBase64_ObjectUrl, setStylesElement, set, decodeEscapeHtml, getDocumentByString, get, isNearWhite, UtilsKeyCodeConstant,
|
|
17
|
+
import { patternUrl, convertFileToBase64_ObjectUrl, isNil, setStylesElement, set, decodeEscapeHtml, getDocumentByString, get, isNearWhite, UtilsKeyCodeConstant, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MIN_LENGTH, ERROR_MESSAGE_MAX_LENGTH, xssFilter, getLabelBySizeFile, patternProtocolUrl } from '@libs-ui/utils';
|
|
18
18
|
import * as i1 from '@ngx-translate/core';
|
|
19
19
|
import { TranslateService, TranslateModule } from '@ngx-translate/core';
|
|
20
20
|
import Quill2x, { Delta } from 'quill2x';
|
|
@@ -572,8 +572,8 @@ const fontSizeWhiteList = () => [
|
|
|
572
572
|
'71px',
|
|
573
573
|
'72px',
|
|
574
574
|
];
|
|
575
|
-
const getStylesConvertInline = () => {
|
|
576
|
-
|
|
575
|
+
const getStylesConvertInline = (customStyles) => {
|
|
576
|
+
const defaultStyles = [
|
|
577
577
|
{ selector: '.ql-font-Arial', styles: [{ key: 'font-family', value: 'Arial' }] },
|
|
578
578
|
{ selector: '.ql-font-sans-serif', styles: [{ key: 'font-family', value: 'sans-serif' }] },
|
|
579
579
|
{ selector: '.ql-font-serif', styles: [{ key: 'font-family', value: 'serif' }] },
|
|
@@ -661,6 +661,24 @@ const getStylesConvertInline = () => {
|
|
|
661
661
|
],
|
|
662
662
|
},
|
|
663
663
|
];
|
|
664
|
+
if (customStyles) {
|
|
665
|
+
const styleExist = (selector) => defaultStyles.find((style) => style.selector === selector);
|
|
666
|
+
customStyles.forEach((styleCustom) => {
|
|
667
|
+
const styleExistInDefault = styleExist(styleCustom.selector);
|
|
668
|
+
if (styleExistInDefault) {
|
|
669
|
+
styleCustom.styles.forEach((item) => {
|
|
670
|
+
const styleItem = styleExistInDefault?.styles?.find((style) => style.key === item.key);
|
|
671
|
+
if (styleItem) {
|
|
672
|
+
styleItem.value = item.value;
|
|
673
|
+
return;
|
|
674
|
+
}
|
|
675
|
+
styleExistInDefault.styles.push(item);
|
|
676
|
+
});
|
|
677
|
+
styleExistInDefault.styles = styleExistInDefault.styles.filter((item) => !isNil(item.value));
|
|
678
|
+
}
|
|
679
|
+
});
|
|
680
|
+
}
|
|
681
|
+
return defaultStyles;
|
|
664
682
|
};
|
|
665
683
|
|
|
666
684
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
@@ -1359,6 +1377,19 @@ class LibsUiComponentsInputsQuill2xComponent {
|
|
|
1359
1377
|
containerEditorClass = computed(() => `${this.displayEditor() ? 'h-full' : 'hidden'} !border ${this.borderColor()} !rounded-b-[4px] ${this.readonly() ? ' libs-ui-readonly-background ' : ' '} ${get(this.quillCustomConfig(), 'editor.classCustomContainerEditor') || ''} ${get(this.quillCustomConfig(), 'toolbar.positionFixed') ? ' rounded-t-[4px] ' : ' '}`);
|
|
1360
1378
|
showButtonMoreToolbar = computed(() => this.toolbarOptionsConfig().some((item) => item.display === false));
|
|
1361
1379
|
displaySkeletonToolbar = computed(() => this.toolbarOptionsConfig().every((item) => item.display === undefined));
|
|
1380
|
+
stylesConvertInlineComputed = computed(() => {
|
|
1381
|
+
const styles = getStylesConvertInline(this.customStylesConvertInline());
|
|
1382
|
+
this.blotsRegister()?.forEach((item) => {
|
|
1383
|
+
styles.push({
|
|
1384
|
+
selector: `.${item.className}`,
|
|
1385
|
+
styles: item.style.split(';').map((style) => {
|
|
1386
|
+
const [key, value] = style.split(':');
|
|
1387
|
+
return { key, value };
|
|
1388
|
+
}),
|
|
1389
|
+
});
|
|
1390
|
+
});
|
|
1391
|
+
return styles;
|
|
1392
|
+
});
|
|
1362
1393
|
labelFontSelectedComputed = computed(() => get(this.fontSelected(), 'item.label') || 'Sans Serif');
|
|
1363
1394
|
fontSelected = signal(undefined);
|
|
1364
1395
|
listConfigFont = signal(listConfigFont());
|
|
@@ -1396,6 +1427,7 @@ class LibsUiComponentsInputsQuill2xComponent {
|
|
|
1396
1427
|
ignoreCommunicateMicroEventPopup = input();
|
|
1397
1428
|
handlersExpand = input();
|
|
1398
1429
|
resizeImagePlugin = input();
|
|
1430
|
+
customStylesConvertInline = input();
|
|
1399
1431
|
fontSizeDefault = input(14, { transform: (value) => value ?? 14 });
|
|
1400
1432
|
heightEditorContentDefault = input();
|
|
1401
1433
|
minHeightEditorContentDefault = input();
|
|
@@ -2038,17 +2070,7 @@ class LibsUiComponentsInputsQuill2xComponent {
|
|
|
2038
2070
|
this.cdr.detectChanges();
|
|
2039
2071
|
}
|
|
2040
2072
|
setStyleForContent() {
|
|
2041
|
-
|
|
2042
|
-
this.blotsRegister()?.forEach((item) => {
|
|
2043
|
-
stylesConvertInline.push({
|
|
2044
|
-
selector: `.${item.className}`,
|
|
2045
|
-
styles: item.style.split(';').map((style) => {
|
|
2046
|
-
const [key, value] = style.split(':');
|
|
2047
|
-
return { key, value };
|
|
2048
|
-
}),
|
|
2049
|
-
});
|
|
2050
|
-
});
|
|
2051
|
-
stylesConvertInline.forEach((item) => {
|
|
2073
|
+
this.stylesConvertInlineComputed().forEach((item) => {
|
|
2052
2074
|
const elements = this.quill?.root.querySelectorAll(item.selector);
|
|
2053
2075
|
elements?.forEach((element) => {
|
|
2054
2076
|
element.style.setProperty('font-family', 'inherit');
|
|
@@ -2317,7 +2339,7 @@ class LibsUiComponentsInputsQuill2xComponent {
|
|
|
2317
2339
|
this.quill = null;
|
|
2318
2340
|
}
|
|
2319
2341
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuill2xComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2320
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsInputsQuill2xComponent, isStandalone: true, selector: "libs_ui-components-inputs-quill2x", inputs: { uploadImageConfig: { classPropertyName: "uploadImageConfig", publicName: "uploadImageConfig", isSignal: true, isRequired: false, transformFunction: null }, displayToolbar: { classPropertyName: "displayToolbar", publicName: "displayToolbar", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, blotsRegister: { classPropertyName: "blotsRegister", publicName: "blotsRegister", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, quillCustomConfig: { classPropertyName: "quillCustomConfig", publicName: "quillCustomConfig", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, fieldBind: { classPropertyName: "fieldBind", publicName: "fieldBind", isSignal: true, isRequired: true, transformFunction: null }, dataConfigMention: { classPropertyName: "dataConfigMention", publicName: "dataConfigMention", isSignal: true, isRequired: false, transformFunction: null }, templateToolBarPersonalize: { classPropertyName: "templateToolBarPersonalize", publicName: "templateToolBarPersonalize", isSignal: true, isRequired: false, transformFunction: null }, mentionListTemplate: { classPropertyName: "mentionListTemplate", publicName: "mentionListTemplate", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, ignoreShowPopupEditLink: { classPropertyName: "ignoreShowPopupEditLink", publicName: "ignoreShowPopupEditLink", isSignal: true, isRequired: false, transformFunction: null }, ignoreCommunicateMicroEventPopup: { classPropertyName: "ignoreCommunicateMicroEventPopup", publicName: "ignoreCommunicateMicroEventPopup", isSignal: true, isRequired: false, transformFunction: null }, handlersExpand: { classPropertyName: "handlersExpand", publicName: "handlersExpand", isSignal: true, isRequired: false, transformFunction: null }, resizeImagePlugin: { classPropertyName: "resizeImagePlugin", publicName: "resizeImagePlugin", isSignal: true, isRequired: false, transformFunction: null }, fontSizeDefault: { classPropertyName: "fontSizeDefault", publicName: "fontSizeDefault", isSignal: true, isRequired: false, transformFunction: null }, heightEditorContentDefault: { classPropertyName: "heightEditorContentDefault", publicName: "heightEditorContentDefault", isSignal: true, isRequired: false, transformFunction: null }, minHeightEditorContentDefault: { classPropertyName: "minHeightEditorContentDefault", publicName: "minHeightEditorContentDefault", isSignal: true, isRequired: false, transformFunction: null }, maxHeightEditorContentDefault: { classPropertyName: "maxHeightEditorContentDefault", publicName: "maxHeightEditorContentDefault", isSignal: true, isRequired: false, transformFunction: null }, removeNearWhiteColorsOnPaste: { classPropertyName: "removeNearWhiteColorsOnPaste", publicName: "removeNearWhiteColorsOnPaste", isSignal: true, isRequired: false, transformFunction: null }, resize: { classPropertyName: "resize", publicName: "resize", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, focusTimerOnInit: { classPropertyName: "focusTimerOnInit", publicName: "focusTimerOnInit", isSignal: true, isRequired: false, transformFunction: null }, focusBottom: { classPropertyName: "focusBottom", publicName: "focusBottom", isSignal: true, isRequired: false, transformFunction: null }, validRequired: { classPropertyName: "validRequired", publicName: "validRequired", isSignal: true, isRequired: false, transformFunction: null }, validMinLength: { classPropertyName: "validMinLength", publicName: "validMinLength", isSignal: true, isRequired: false, transformFunction: null }, validMaxLength: { classPropertyName: "validMaxLength", publicName: "validMaxLength", isSignal: true, isRequired: false, transformFunction: null }, showErrorLabel: { classPropertyName: "showErrorLabel", publicName: "showErrorLabel", isSignal: true, isRequired: false, transformFunction: null }, showErrorBorder: { classPropertyName: "showErrorBorder", publicName: "showErrorBorder", isSignal: true, isRequired: false, transformFunction: null }, ignoreShowBorderErrorToolbar: { classPropertyName: "ignoreShowBorderErrorToolbar", publicName: "ignoreShowBorderErrorToolbar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { item: "itemChange", outShowPopupEditLink: "outShowPopupEditLink", outMessageError: "outMessageError", outBlur: "outBlur", outFocus: "outFocus", outChange: "outChange", outSelectionChange: "outSelectionChange", outTextChange: "outTextChange", outContextMenu: "outContextMenu", outFunctionsControl: "outFunctionsControl" }, viewQueries: [{ propertyName: "htmlContainer", first: true, predicate: ["htmlContainer"], descendants: true, isSignal: true }, { propertyName: "quillBodyContainer", first: true, predicate: ["snowContainer"], descendants: true, isSignal: true }, { propertyName: "toolbarContainer", first: true, predicate: ["toolbarContainer"], descendants: true, isSignal: true }, { propertyName: "inputLinkRef", first: true, predicate: ["inputLinkRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #htmlContainer\n [class]=\"containerClass()\"\n [style.--resize]=\"resize()\">\n @if (label(); as label) {\n <libs_ui-components-label\n [classInclude]=\"label.classInclude\"\n [required]=\"label.required\"\n [labelLeft]=\"label.labelLeft\" />\n }\n <div\n #toolbarContainer\n class=\"relative h-[44px]\"\n [class.hidden]=\"!displayToolbar()\"\n [ngStyle]=\"quillCustomConfig()?.toolbar?.()?.styles?.() || {}\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\" />\n </div>\n <div\n #snowContainer\n LibsUiComponentsScrollOverlayDirective\n LibsUiComponentsInputsMentionDirective\n [options]=\"{ ignoreTransparentScrollBarColorDefault: resize() !== 'none' }\"\n [mentionConfig]=\"dataConfigMention()\"\n [mentionListTemplate]=\"mentionListTemplate()\"\n (outToggle)=\"handleToggleMention($event)\"\n (outInsertMention)=\"handlerInsertMention($event)\"\n [class]=\"containerEditorClass()\"></div>\n @if (messageError() && showErrorLabel()) {\n <div class=\"flex items-center mt-[8px]\">\n <span class=\"text-[#ff5454] libs-ui-font-h7r\">{{ messageError() | translate }}</span>\n </div>\n }\n</div>\n\n<ng-template #toolbarTemplate>\n <div\n [class]=\"containerToolbarClass()\"\n #toolbarItems>\n @if (displaySkeletonToolbar()) {\n <libs_ui-components-skeleton\n class=\"w-full h-full\"\n [config]=\"{\n rows: [\n {\n item: { classIncludeItem: '!rounded-none' },\n },\n ],\n }\" />\n }\n <div class=\"ql-formats items-center px-[16px] py-[4px] !flex !mr-0\">\n @for (option of toolbarOptionsConfig(); track option) {\n <div\n class=\"items-center\"\n [class.hidden]=\"!option.display\"\n [class.flex]=\"option.display\">\n <ng-container *ngTemplateOutlet=\"itemToolbarTemplate; context: { option, $index, $last }\" />\n </div>\n }\n <div class=\"relative\">\n @if (showButtonMoreToolbar()) {\n <libs_ui-components-buttons-button\n [type]=\"showMoreAction() ? 'button-secondary' : 'button-third'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[1px] !h-[20px] ml-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-move-right rotate-90'\"\n (outClick)=\"handlerChangeShowMoreAction($event)\" />\n }\n <!-- Build toolbar khi click xem th\u00EAm-->\n <div\n [class.hidden]=\"!showMoreAction()\"\n class=\"absolute bg-[#ffffff] shadow-[0px_4px_16px_0px_rgba(0,20,51,0.10)] z-[1] flex items-center pl-[8px] pr-[16px] py-[4px] rounded-[8px] top-[31px] right-[0px]\">\n @for (option of toolbarOptionsConfig(); track option) {\n <div\n class=\"items-center\"\n [class.hidden]=\"option.display !== false\"\n [class.flex]=\"option.display === false\">\n <ng-container *ngTemplateOutlet=\"itemToolbarTemplate; context: { option, $index, $last }\" />\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template\n #itemToolbarTemplate\n let-$index=\"$index\"\n let-$last=\"$last\"\n let-option=\"option\">\n @if (option.type === 'undo') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_undo', zIndex: zIndex() }\"\n class=\"ql-undo\"></button>\n </div>\n }\n @if (option.type === 'redo') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_redo', zIndex: zIndex() }\"\n class=\"ql-redo\"></button>\n </div>\n }\n @if (option.type === 'fontFamily') {\n <div\n class=\"relative w-[132px] h-full rounded-[4px] libs-ui-border-general {{ option.classInclude || 'mx-[8px]' }}\"\n [class.bg-white]=\"!readonly() && !loadingUploadImage()\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [listConfig]=\"listConfigFont()\"\n [listHasButtonUnSelectOption]=\"false\"\n [listHiddenInputSearch]=\"true\"\n [readonly]=\"readonly()\"\n [zIndex]=\"1250\"\n (outSelectKey)=\"handleSelectFont($event)\">\n @if (fontSelected(); as fontSelected) {\n <div class=\"flex items-center cursor-pointer py-[7px] libs-ui-font-h5r pl-[16px] pr-[40px]\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [ignoreStopPropagationEvent]=\"true\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ labelFontSelectedComputed() }}\n </libs_ui-components-popover>\n <i class=\"libs-ui-icon-move-right rotate-90 absolute right-[12px] text-[#6a7383] text-[16px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </div>\n }\n @if (option.type === 'header') {\n <div\n class=\"relative w-[138px] h-full rounded-[4px] libs-ui-border-general {{ option.classInclude || 'mx-[8px]' }}\"\n [class.bg-white]=\"!readonly() && !loadingUploadImage()\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [popoverCustomConfig]=\"{ widthByParent: false, width: 200, classInclude: 'h-[254px]', classIncludeOverlayBody: 'h-full', position: { mode: 'start', distance: -8 } }\"\n [listConfig]=\"listConfigHeader()\"\n [listHasButtonUnSelectOption]=\"false\"\n [listHiddenInputSearch]=\"true\"\n [readonly]=\"readonly()\"\n [listMaxItemShow]=\"-1\"\n [zIndex]=\"1250\"\n (outSelectKey)=\"handleSelectHeader($event)\">\n @if (headerSelected(); as headerSelected) {\n <div class=\"flex items-center cursor-pointer py-[7px] libs-ui-font-h5r pl-[16px] pr-[40px] {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [ignoreStopPropagationEvent]=\"true\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ labelHeaderSelectedComputed() }}\n </libs_ui-components-popover>\n <i class=\"libs-ui-icon-move-right rotate-90 absolute right-[12px] text-[#6a7383] text-[16px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </div>\n }\n @if (option.type === 'fontSize') {\n <div class=\" {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-inputs-valid\n #inputSizeRef\n [dataType]=\"'int'\"\n [(item)]=\"fontSize\"\n [fieldNameBind]=\"'value'\"\n [valueUpDownNumber]=\"1\"\n [maxValueNumber]=\"72\"\n [minValueNumber]=\"8\"\n [readonly]=\"readonly() || loadingUploadImage()\"\n [classContainerInput]=\"'w-[72px] h-[32px]'\"\n (outChangeValueByButtonUpDown)=\"handlerValueChangeFontSize()\"\n (outFocusAndBlur)=\"handlerValueChangeFontSize($event)\" />\n </div>\n }\n @if (option.type === 'color') {\n <div class=\"ql-color ql-picker ql-color-picker !flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_text_color', zIndex: zIndex() }\">\n <libs_ui-components-buttons-select_color\n [zIndex]=\"zIndex()\"\n [direction]=\"'top'\"\n [externalContent]=\"true\"\n [customOptions]=\"{\n showAlpha: true,\n }\"\n [applyNow]=\"false\"\n (outColorChangeMultipleType)=\"handlerSetFormat('color', $event)\">\n <div\n class=\"libs-ui-icon-editor-color-text libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\"\n [class.libs-ui-icon-editor-color-text-active]=\"!!colorSelected()\"\n [style.--color-selected]=\"colorSelected()\"></div>\n </libs_ui-components-buttons-select_color>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'background') {\n <div class=\"ql-background ql-picker ql-color-picker !flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_background_color', zIndex: zIndex() }\">\n <libs_ui-components-buttons-select_color\n [zIndex]=\"zIndex()\"\n [direction]=\"'top'\"\n [externalContent]=\"true\"\n [applyNow]=\"false\"\n [customOptions]=\"{\n showAlpha: true,\n }\"\n (outColorChangeMultipleType)=\"handlerSetFormat('background', $event)\">\n <div\n class=\"libs-ui-icon-editor-color-background libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\"\n [class.libs-ui-icon-editor-color-background-active]=\"!!backgroundSelected()\"\n [style.--background-selected]=\"backgroundSelected()\"></div>\n </libs_ui-components-buttons-select_color>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'bold') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_font_weight_bold', zIndex: zIndex() }\"\n class=\"ql-bold !flex\"></button>\n </div>\n }\n @if (option.type === 'italic') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_font_style_italic', zIndex: zIndex() }\"\n class=\"ql-italic !flex\"></button>\n </div>\n }\n @if (option.type === 'underline') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_text_decoration_underline', zIndex: zIndex() }\"\n class=\"ql-underline !flex\"></button>\n </div>\n }\n @if (option.type === 'strikeThrough') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_text_line_through', zIndex: zIndex() }\"\n class=\"ql-strike !flex\"></button>\n </div>\n }\n @if (option.type === 'script.sub') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_script_sub', zIndex: zIndex() }\"\n class=\"ql-script flex\"\n value=\"sub\"></button>\n </div>\n }\n @if (option.type === 'script.super') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_script_super', zIndex: zIndex() }\"\n class=\"ql-script flex\"\n value=\"super\"></button>\n </div>\n }\n @if (option.type === 'adjust') {\n <div class=\"relative !flex items-center ql-align ql-picker ql-icon-picker !w-max {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_adjust', zIndex: zIndex() }\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [ignoreStopPropagationEvent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [listConfig]=\"listConfigAlign()\"\n [listHiddenInputSearch]=\"true\"\n [popoverCustomConfig]=\"{ ignoreArrow: true, classInclude: '!w-[32px] overflow-hidden !py-[4px]', position: { mode: 'start', distance: 0 }, paddingLeftItem: false }\"\n [listHasButtonUnSelectOption]=\"false\"\n [zIndex]=\"zIndex() + 1\"\n [listKeySelected]=\"adjustSelected()\"\n (outSelectKey)=\"handleSelectAlign($event)\">\n @if (alignSelected(); as alignSelected) {\n <div class=\"flex items-center cursor-pointer\">\n <i\n [class]=\"iconAlignSelectedComputed()\"\n [class.text-[var(--libs-ui-color-light-1)]]=\"adjustSelected() !== undefined\"></i>\n <i class=\"libs-ui-icon-move-right rotate-90 text-[#6a7383] text-[16px] ml-[4px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'indentIncrease') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_indent_increase', zIndex: zIndex() }\"\n class=\"ql-indent\"\n value=\"+1\"></button>\n </div>\n }\n @if (option.type === 'indentDecrease') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_indent_decrease', zIndex: zIndex() }\"\n class=\"ql-indent\"\n value=\"-1\"></button>\n </div>\n }\n @if (option.type === 'listBulleted') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_list_bulleted', zIndex: zIndex() }\"\n class=\"ql-list ql-bullet\"\n value=\"bullet\"></button>\n </div>\n }\n @if (option.type === 'listNumbered') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_list_numbered', zIndex: zIndex() }\"\n class=\"ql-list ql-ordered\"\n value=\"ordered\"></button>\n </div>\n }\n @if (option.type === 'listChecked') {\n <div\n [class]=\"option.classInclude || 'mx-[8px]'\"\n [class.ql-active]=\"listCheckboxSelected()\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_list_numbered', zIndex: zIndex() }\"\n class=\"ql-list ql-check\"\n value=\"check\"></button>\n </div>\n }\n @if (option.type === 'personalize' && templateToolBarPersonalize(); as templateToolBarPersonalize) {\n <div class=\"flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <ng-container *ngTemplateOutlet=\"templateToolBarPersonalize\"></ng-container>\n </div>\n }\n @if (option.type === 'blockquote') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_quote', zIndex: zIndex() }\"\n class=\"ql-blockquote\"></button>\n </div>\n }\n @if (option.type === 'link') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_insert_link', zIndex: zIndex() }\"\n class=\"ql-link\"></button>\n </div>\n }\n @if (option.type === 'unLink') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_unlink', zIndex: zIndex() }\"\n class=\"ql-unLink\"\n (click)=\"handlerUnlink($event)\"></button>\n </div>\n }\n @if (option.type === 'image') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_image', zIndex: zIndex() }\"\n class=\"ql-image\"></button>\n </div>\n }\n @if (option.type === 'video') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_video', zIndex: zIndex() }\"\n class=\"ql-video\"></button>\n </div>\n }\n @if (option.type === 'emoji') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <libs_ui-components-emoji\n [zIndex]=\"zIndex()\"\n [isNgContent]=\"true\"\n (outEventEmoji)=\"handlerInsertEmoji($event)\">\n <button class=\"ql-emoji\"></button>\n </libs_ui-components-emoji>\n </div>\n }\n @if (option.type === 'table') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_table', zIndex: zIndex() }\"\n class=\"ql-table\"></button>\n </div>\n }\n @if (option.type === 'line') {\n <div class=\"w-[1px] h-[16px] libs-ui-border-right-general\"></div>\n }\n</ng-template>\n\n<libs_ui-components-popover\n #inputLinkRef\n [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{ template: viewLink, whiteTheme: true, ignoreArrow: true, zIndex: zIndex() }\"\n (outEvent)=\"handlerPopoverEvent($event)\" />\n\n<ng-template #viewLink>\n <div class=\"flex justify-between items-center px-[16px] py-[8px] rounded-[8px]\">\n <div\n class=\"w-full min-w-0 libs-ui-font-h5r\"\n [type]=\"'text'\"\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: link().url, zIndex: zIndex() + 1 }\">\n {{ link().url }}\n </div>\n <div class=\"flex items-center ml-[16px]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-edit-line'\"\n [classInclude]=\"'!p-0'\"\n (outClick)=\"handlerEditLink($event)\" />\n <libs_ui-components-buttons-button\n [type]=\"'button-link-custom'\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#071631',\n text_hover: '#ee2d41',\n text_active: '#ee2d41',\n text_disable: '071631',\n },\n rootColor: '#071631',\n }\"\n [classInclude]=\"'!p-0 ml-[12px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-link-broken'\"\n (outClick)=\"handlerUnlink($event)\" />\n </div>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";:host ::ng-deep .quill-container .ql-container{font-family:var(--libs-ui-font-family-name),Arial,sans-serif!important;font-weight:400}:host ::ng-deep .quill-container .ql-container .ql-editor{font-family:var(--libs-ui-font-family-name),Arial,sans-serif!important;font-weight:400;height:auto;min-height:100%;resize:var(--resize)}:host ::ng-deep .quill-container .ql-container .ql-blank:before{font-style:normal!important;font-size:12px!important;color:#9ca2ad!important;font-family:var(--libs-ui-font-family-name),Arial,sans-serif!important}:host ::ng-deep .quill-container .ql-active span:before{color:var(--libs-ui-color-light-1)!important}:host ::ng-deep .quill-container .ql-active .ql-fill{fill:var(--libs-ui-color-light-1)!important}:host ::ng-deep .quill-container .ql-script :hover .ql-fill{fill:var(--libs-ui-color-light-1)!important}:host ::ng-deep .quill-container .ql-toolbar{padding:0!important;border:none!important}:host ::ng-deep .quill-container .ql-toolbar button{padding:0!important;height:16px!important;width:16px!important}:host ::ng-deep .quill-container .ql-tooltip{display:none!important}:host ::ng-deep .quill-container #editor-resizer .toolbar{top:0!important;left:0!important;transform:none!important;font-family:var(--libs-ui-font-family-name),Arial,sans-serif!important;font-weight:400;font-size:12px}:host ::ng-deep .quill-container .libs-ui-icon-editor-color-text-active{color:var(--color-selected)!important}:host ::ng-deep .quill-container .libs-ui-icon-editor-color-background-active{color:var(--background-selected)!important}:host ::ng-deep .quill-container .ql-snow .ql-picker{font-size:12px!important;height:32px;float:none;width:auto}:host ::ng-deep .selected-cell{background-color:#0096ff4d}\n", "@charset \"UTF-8\";:host ::ng-deep .ql-container{font-family:var(--libs-ui-font-family-name),Arial,sans-serif!important;font-weight:400;height:auto}:host ::ng-deep .ql-container ol,:host ::ng-deep .ql-container ul{list-style:none!important;padding-left:0!important;margin-left:0!important}:host ::ng-deep .ql-container ol li,:host ::ng-deep .ql-container ul li{list-style-type:none!important}:host ::ng-deep .ql-container li,:host ::ng-deep .ql-container ol li,:host ::ng-deep .ql-container ul li,:host ::ng-deep .ql-container li[data-list]{counter-reset:none!important;counter-increment:none!important;counter-set:none!important}@supports (counter-set: none){:host ::ng-deep .ql-container li[data-list]{counter-set:none!important}}:host ::ng-deep .ql-container ol li:not(.ql-direction-rtl){counter-increment:none!important}:host ::ng-deep .ql-container ol{counter-reset:my-counter 0!important}:host ::ng-deep .ql-container ol>li[data-list=ordered]{counter-increment:my-counter 1!important;position:relative;padding-left:8px}:host ::ng-deep .ql-container ol>li[data-list=ordered]:before{content:counter(my-counter) \". \"}:host ::ng-deep .ql-container ol li span:before{content:\"\"!important}:host ::ng-deep .ql-container ol li[data-list=bullet]:before{content:\"\\2022 \"!important}:host ::ng-deep .ql-container ol li[data-list=unchecked]:before{content:\"\\2610 \"!important}:host ::ng-deep .ql-container ol li[data-list=checked]:before{content:\"\\2611 \"!important}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LibsUiComponentsDropdownComponent, selector: "libs_ui-components-dropdown", inputs: ["useXssFilter", "popoverElementRefCustom", "classInclude", "ignoreStopPropagationEvent", "flagMouse", "flagMouseContent", "popoverCustomConfig", "isNgContent", "zIndex", "convertItemSelected", "getPopoverItemSelected", "httpRequestDetailItemById", "lengthKeys", "textDisplayWhenNoSelect", "textDisplayWhenMultiSelect", "classIncludeTextDisplayWhenNoSelect", "fieldLabel", "fieldGetLabel", "labelPopoverConfig", "labelPopoverFullWidth", "hasContentUnitRight", "listSearchNoDataTemplateRef", "dropdownTemplateRefNotSearchNoData", "fieldGetImage", "imageSize", "typeShape", "fieldGetIcon", "fieldGetTextAvatar", "fieldGetColorAvatar", "classAvatarInclude", "getLastTextAfterSpace", "linkImageError", "showError", "showBorderError", "disable", "readonly", "labelConfig", "disableLabel", "listSearchConfig", "isSearchOnline", "listHiddenInputSearch", "listSearchPadding", "listKeySearch", "listDividerClassInclude", "listConfig", "listButtonsOther", "listHasButtonUnSelectOption", "listClickExactly", "listBackgroundCustom", "listMaxItemShow", "listKeySelected", "listMultiKeySelected", "listKeysDisable", "listKeysHidden", "validRequired", "validMaxItemSelected", "changeValidUndefinedResetError", "allowSelectItemMultiple", "focusInputSearch", "onlyEmitDataWhenReset", "resetKeyWhenSelectAllKey", "listConfigHasDivider", "classIncludeIcon", "classIncludeContent", "listIgnoreClassDisableDefaultWhenUseKeysDisableItem", "tabKeyActive", "tabsConfig", "ignoreBorderBottom"], outputs: ["flagMouseChange", "flagMouseContentChange", "lengthKeysChange", "showBorderErrorChange", "listKeySelectedChange", "listMultiKeySelectedChange", "tabKeyActiveChange", "outSelectKey", "outSelectMultiKey", "outFunctionsControl", "outValidEvent", "outChangStageFlagMouse", "outDataChange", "outClickButtonOther", "outShowList", "outChangeTabKeyActive"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsSkeletonComponent, selector: "libs_ui-components-skeleton", inputs: ["config"] }, { kind: "directive", type: LibsUiComponentsScrollOverlayDirective, selector: "[LibsUiComponentsScrollOverlayDirective]", inputs: ["debugMode", "ignoreInit", "classContainer", "options", "elementCheckScrollX", "elementCheckScrollY", "elementScroll"], outputs: ["outScroll", "outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "component", type: LibsUiComponentsEmojiComponent, selector: "libs_ui-components-emoji", inputs: ["configPopover", "isNgContent", "zIndex", "ignoreShowPopoverText", "modePopoverPosition", "classPopup", "classInclude", "classIconInclude"], outputs: ["outEventEmoji", "outFunctionsControl", "outFlagMouse"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "typeInput", "modeInput", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "ignoreShowMessageError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut", "debounceTimeValidate"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }, { kind: "component", type: LibsUiComponentsButtonsSelectColorComponent, selector: "libs_ui-components-buttons-select_color", inputs: ["zIndex", "customOptions", "externalContent", "direction", "button", "applyNow"], outputs: ["zIndexChange", "outColorChange", "outColorChangeMultipleType"] }, { kind: "component", type: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }, { kind: "directive", type: LibsUiComponentsInputsMentionDirective, selector: "[LibsUiComponentsInputsMentionDirective]", inputs: ["timeDelayInit", "mentionConfig", "mentionListTemplate"], outputs: ["outSearchTerm", "outItemSelected", "outToggle", "outInsertMention", "outFunctionControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2342
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsInputsQuill2xComponent, isStandalone: true, selector: "libs_ui-components-inputs-quill2x", inputs: { uploadImageConfig: { classPropertyName: "uploadImageConfig", publicName: "uploadImageConfig", isSignal: true, isRequired: false, transformFunction: null }, displayToolbar: { classPropertyName: "displayToolbar", publicName: "displayToolbar", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, blotsRegister: { classPropertyName: "blotsRegister", publicName: "blotsRegister", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, quillCustomConfig: { classPropertyName: "quillCustomConfig", publicName: "quillCustomConfig", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, fieldBind: { classPropertyName: "fieldBind", publicName: "fieldBind", isSignal: true, isRequired: true, transformFunction: null }, dataConfigMention: { classPropertyName: "dataConfigMention", publicName: "dataConfigMention", isSignal: true, isRequired: false, transformFunction: null }, templateToolBarPersonalize: { classPropertyName: "templateToolBarPersonalize", publicName: "templateToolBarPersonalize", isSignal: true, isRequired: false, transformFunction: null }, mentionListTemplate: { classPropertyName: "mentionListTemplate", publicName: "mentionListTemplate", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, ignoreShowPopupEditLink: { classPropertyName: "ignoreShowPopupEditLink", publicName: "ignoreShowPopupEditLink", isSignal: true, isRequired: false, transformFunction: null }, ignoreCommunicateMicroEventPopup: { classPropertyName: "ignoreCommunicateMicroEventPopup", publicName: "ignoreCommunicateMicroEventPopup", isSignal: true, isRequired: false, transformFunction: null }, handlersExpand: { classPropertyName: "handlersExpand", publicName: "handlersExpand", isSignal: true, isRequired: false, transformFunction: null }, resizeImagePlugin: { classPropertyName: "resizeImagePlugin", publicName: "resizeImagePlugin", isSignal: true, isRequired: false, transformFunction: null }, customStylesConvertInline: { classPropertyName: "customStylesConvertInline", publicName: "customStylesConvertInline", isSignal: true, isRequired: false, transformFunction: null }, fontSizeDefault: { classPropertyName: "fontSizeDefault", publicName: "fontSizeDefault", isSignal: true, isRequired: false, transformFunction: null }, heightEditorContentDefault: { classPropertyName: "heightEditorContentDefault", publicName: "heightEditorContentDefault", isSignal: true, isRequired: false, transformFunction: null }, minHeightEditorContentDefault: { classPropertyName: "minHeightEditorContentDefault", publicName: "minHeightEditorContentDefault", isSignal: true, isRequired: false, transformFunction: null }, maxHeightEditorContentDefault: { classPropertyName: "maxHeightEditorContentDefault", publicName: "maxHeightEditorContentDefault", isSignal: true, isRequired: false, transformFunction: null }, removeNearWhiteColorsOnPaste: { classPropertyName: "removeNearWhiteColorsOnPaste", publicName: "removeNearWhiteColorsOnPaste", isSignal: true, isRequired: false, transformFunction: null }, resize: { classPropertyName: "resize", publicName: "resize", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, focusTimerOnInit: { classPropertyName: "focusTimerOnInit", publicName: "focusTimerOnInit", isSignal: true, isRequired: false, transformFunction: null }, focusBottom: { classPropertyName: "focusBottom", publicName: "focusBottom", isSignal: true, isRequired: false, transformFunction: null }, validRequired: { classPropertyName: "validRequired", publicName: "validRequired", isSignal: true, isRequired: false, transformFunction: null }, validMinLength: { classPropertyName: "validMinLength", publicName: "validMinLength", isSignal: true, isRequired: false, transformFunction: null }, validMaxLength: { classPropertyName: "validMaxLength", publicName: "validMaxLength", isSignal: true, isRequired: false, transformFunction: null }, showErrorLabel: { classPropertyName: "showErrorLabel", publicName: "showErrorLabel", isSignal: true, isRequired: false, transformFunction: null }, showErrorBorder: { classPropertyName: "showErrorBorder", publicName: "showErrorBorder", isSignal: true, isRequired: false, transformFunction: null }, ignoreShowBorderErrorToolbar: { classPropertyName: "ignoreShowBorderErrorToolbar", publicName: "ignoreShowBorderErrorToolbar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { item: "itemChange", outShowPopupEditLink: "outShowPopupEditLink", outMessageError: "outMessageError", outBlur: "outBlur", outFocus: "outFocus", outChange: "outChange", outSelectionChange: "outSelectionChange", outTextChange: "outTextChange", outContextMenu: "outContextMenu", outFunctionsControl: "outFunctionsControl" }, viewQueries: [{ propertyName: "htmlContainer", first: true, predicate: ["htmlContainer"], descendants: true, isSignal: true }, { propertyName: "quillBodyContainer", first: true, predicate: ["snowContainer"], descendants: true, isSignal: true }, { propertyName: "toolbarContainer", first: true, predicate: ["toolbarContainer"], descendants: true, isSignal: true }, { propertyName: "inputLinkRef", first: true, predicate: ["inputLinkRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #htmlContainer\n [class]=\"containerClass()\"\n [style.--resize]=\"resize()\">\n @if (label(); as label) {\n <libs_ui-components-label\n [classInclude]=\"label.classInclude\"\n [required]=\"label.required\"\n [labelLeft]=\"label.labelLeft\" />\n }\n <div\n #toolbarContainer\n class=\"relative h-[44px]\"\n [class.hidden]=\"!displayToolbar()\"\n [ngStyle]=\"quillCustomConfig()?.toolbar?.()?.styles?.() || {}\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\" />\n </div>\n <div\n #snowContainer\n LibsUiComponentsScrollOverlayDirective\n LibsUiComponentsInputsMentionDirective\n [options]=\"{ ignoreTransparentScrollBarColorDefault: resize() !== 'none' }\"\n [mentionConfig]=\"dataConfigMention()\"\n [mentionListTemplate]=\"mentionListTemplate()\"\n (outToggle)=\"handleToggleMention($event)\"\n (outInsertMention)=\"handlerInsertMention($event)\"\n [class]=\"containerEditorClass()\"></div>\n @if (messageError() && showErrorLabel()) {\n <div class=\"flex items-center mt-[8px]\">\n <span class=\"text-[#ff5454] libs-ui-font-h7r\">{{ messageError() | translate }}</span>\n </div>\n }\n</div>\n\n<ng-template #toolbarTemplate>\n <div\n [class]=\"containerToolbarClass()\"\n #toolbarItems>\n @if (displaySkeletonToolbar()) {\n <libs_ui-components-skeleton\n class=\"w-full h-full\"\n [config]=\"{\n rows: [\n {\n item: { classIncludeItem: '!rounded-none' },\n },\n ],\n }\" />\n }\n <div class=\"ql-formats items-center px-[16px] py-[4px] !flex !mr-0\">\n @for (option of toolbarOptionsConfig(); track option) {\n <div\n class=\"items-center\"\n [class.hidden]=\"!option.display\"\n [class.flex]=\"option.display\">\n <ng-container *ngTemplateOutlet=\"itemToolbarTemplate; context: { option, $index, $last }\" />\n </div>\n }\n <div class=\"relative\">\n @if (showButtonMoreToolbar()) {\n <libs_ui-components-buttons-button\n [type]=\"showMoreAction() ? 'button-secondary' : 'button-third'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[1px] !h-[20px] ml-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-move-right rotate-90'\"\n (outClick)=\"handlerChangeShowMoreAction($event)\" />\n }\n <!-- Build toolbar khi click xem th\u00EAm-->\n <div\n [class.hidden]=\"!showMoreAction()\"\n class=\"absolute bg-[#ffffff] shadow-[0px_4px_16px_0px_rgba(0,20,51,0.10)] z-[1] flex items-center pl-[8px] pr-[16px] py-[4px] rounded-[8px] top-[31px] right-[0px]\">\n @for (option of toolbarOptionsConfig(); track option) {\n <div\n class=\"items-center\"\n [class.hidden]=\"option.display !== false\"\n [class.flex]=\"option.display === false\">\n <ng-container *ngTemplateOutlet=\"itemToolbarTemplate; context: { option, $index, $last }\" />\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template\n #itemToolbarTemplate\n let-$index=\"$index\"\n let-$last=\"$last\"\n let-option=\"option\">\n @if (option.type === 'undo') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_undo', zIndex: zIndex() }\"\n class=\"ql-undo\"></button>\n </div>\n }\n @if (option.type === 'redo') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_redo', zIndex: zIndex() }\"\n class=\"ql-redo\"></button>\n </div>\n }\n @if (option.type === 'fontFamily') {\n <div\n class=\"relative w-[132px] h-full rounded-[4px] libs-ui-border-general {{ option.classInclude || 'mx-[8px]' }}\"\n [class.bg-white]=\"!readonly() && !loadingUploadImage()\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [listConfig]=\"listConfigFont()\"\n [listHasButtonUnSelectOption]=\"false\"\n [listHiddenInputSearch]=\"true\"\n [readonly]=\"readonly()\"\n [zIndex]=\"1250\"\n (outSelectKey)=\"handleSelectFont($event)\">\n @if (fontSelected(); as fontSelected) {\n <div class=\"flex items-center cursor-pointer py-[7px] libs-ui-font-h5r pl-[16px] pr-[40px]\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [ignoreStopPropagationEvent]=\"true\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ labelFontSelectedComputed() }}\n </libs_ui-components-popover>\n <i class=\"libs-ui-icon-move-right rotate-90 absolute right-[12px] text-[#6a7383] text-[16px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </div>\n }\n @if (option.type === 'header') {\n <div\n class=\"relative w-[138px] h-full rounded-[4px] libs-ui-border-general {{ option.classInclude || 'mx-[8px]' }}\"\n [class.bg-white]=\"!readonly() && !loadingUploadImage()\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [popoverCustomConfig]=\"{ widthByParent: false, width: 200, classInclude: 'h-[254px]', classIncludeOverlayBody: 'h-full', position: { mode: 'start', distance: -8 } }\"\n [listConfig]=\"listConfigHeader()\"\n [listHasButtonUnSelectOption]=\"false\"\n [listHiddenInputSearch]=\"true\"\n [readonly]=\"readonly()\"\n [listMaxItemShow]=\"-1\"\n [zIndex]=\"1250\"\n (outSelectKey)=\"handleSelectHeader($event)\">\n @if (headerSelected(); as headerSelected) {\n <div class=\"flex items-center cursor-pointer py-[7px] libs-ui-font-h5r pl-[16px] pr-[40px] {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [ignoreStopPropagationEvent]=\"true\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ labelHeaderSelectedComputed() }}\n </libs_ui-components-popover>\n <i class=\"libs-ui-icon-move-right rotate-90 absolute right-[12px] text-[#6a7383] text-[16px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </div>\n }\n @if (option.type === 'fontSize') {\n <div class=\" {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-inputs-valid\n #inputSizeRef\n [dataType]=\"'int'\"\n [(item)]=\"fontSize\"\n [fieldNameBind]=\"'value'\"\n [valueUpDownNumber]=\"1\"\n [maxValueNumber]=\"72\"\n [minValueNumber]=\"8\"\n [readonly]=\"readonly() || loadingUploadImage()\"\n [classContainerInput]=\"'w-[72px] h-[32px]'\"\n (outChangeValueByButtonUpDown)=\"handlerValueChangeFontSize()\"\n (outFocusAndBlur)=\"handlerValueChangeFontSize($event)\" />\n </div>\n }\n @if (option.type === 'color') {\n <div class=\"ql-color ql-picker ql-color-picker !flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_text_color', zIndex: zIndex() }\">\n <libs_ui-components-buttons-select_color\n [zIndex]=\"zIndex()\"\n [direction]=\"'top'\"\n [externalContent]=\"true\"\n [customOptions]=\"{\n showAlpha: true,\n }\"\n [applyNow]=\"false\"\n (outColorChangeMultipleType)=\"handlerSetFormat('color', $event)\">\n <div\n class=\"libs-ui-icon-editor-color-text libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\"\n [class.libs-ui-icon-editor-color-text-active]=\"!!colorSelected()\"\n [style.--color-selected]=\"colorSelected()\"></div>\n </libs_ui-components-buttons-select_color>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'background') {\n <div class=\"ql-background ql-picker ql-color-picker !flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_background_color', zIndex: zIndex() }\">\n <libs_ui-components-buttons-select_color\n [zIndex]=\"zIndex()\"\n [direction]=\"'top'\"\n [externalContent]=\"true\"\n [applyNow]=\"false\"\n [customOptions]=\"{\n showAlpha: true,\n }\"\n (outColorChangeMultipleType)=\"handlerSetFormat('background', $event)\">\n <div\n class=\"libs-ui-icon-editor-color-background libs-ui-buttons-select-color text-[#6a7383] text-[16px] hover:text-[var(--libs-ui-color-light-1)]\"\n [class.libs-ui-icon-editor-color-background-active]=\"!!backgroundSelected()\"\n [style.--background-selected]=\"backgroundSelected()\"></div>\n </libs_ui-components-buttons-select_color>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'bold') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_font_weight_bold', zIndex: zIndex() }\"\n class=\"ql-bold !flex\"></button>\n </div>\n }\n @if (option.type === 'italic') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_font_style_italic', zIndex: zIndex() }\"\n class=\"ql-italic !flex\"></button>\n </div>\n }\n @if (option.type === 'underline') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_text_decoration_underline', zIndex: zIndex() }\"\n class=\"ql-underline !flex\"></button>\n </div>\n }\n @if (option.type === 'strikeThrough') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_text_line_through', zIndex: zIndex() }\"\n class=\"ql-strike !flex\"></button>\n </div>\n }\n @if (option.type === 'script.sub') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_script_sub', zIndex: zIndex() }\"\n class=\"ql-script flex\"\n value=\"sub\"></button>\n </div>\n }\n @if (option.type === 'script.super') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_script_super', zIndex: zIndex() }\"\n class=\"ql-script flex\"\n value=\"super\"></button>\n </div>\n }\n @if (option.type === 'adjust') {\n <div class=\"relative !flex items-center ql-align ql-picker ql-icon-picker !w-max {{ option.classInclude || 'mx-[8px]' }}\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_adjust', zIndex: zIndex() }\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [ignoreStopPropagationEvent]=\"true\"\n [labelPopoverFullWidth]=\"true\"\n [listConfig]=\"listConfigAlign()\"\n [listHiddenInputSearch]=\"true\"\n [popoverCustomConfig]=\"{ ignoreArrow: true, classInclude: '!w-[32px] overflow-hidden !py-[4px]', position: { mode: 'start', distance: 0 }, paddingLeftItem: false }\"\n [listHasButtonUnSelectOption]=\"false\"\n [zIndex]=\"zIndex() + 1\"\n [listKeySelected]=\"adjustSelected()\"\n (outSelectKey)=\"handleSelectAlign($event)\">\n @if (alignSelected(); as alignSelected) {\n <div class=\"flex items-center cursor-pointer\">\n <i\n [class]=\"iconAlignSelectedComputed()\"\n [class.text-[var(--libs-ui-color-light-1)]]=\"adjustSelected() !== undefined\"></i>\n <i class=\"libs-ui-icon-move-right rotate-90 text-[#6a7383] text-[16px] ml-[4px]\"></i>\n </div>\n }\n </libs_ui-components-dropdown>\n </libs_ui-components-popover>\n </div>\n }\n @if (option.type === 'indentIncrease') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_indent_increase', zIndex: zIndex() }\"\n class=\"ql-indent\"\n value=\"+1\"></button>\n </div>\n }\n @if (option.type === 'indentDecrease') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_indent_decrease', zIndex: zIndex() }\"\n class=\"ql-indent\"\n value=\"-1\"></button>\n </div>\n }\n @if (option.type === 'listBulleted') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_list_bulleted', zIndex: zIndex() }\"\n class=\"ql-list ql-bullet\"\n value=\"bullet\"></button>\n </div>\n }\n @if (option.type === 'listNumbered') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_list_numbered', zIndex: zIndex() }\"\n class=\"ql-list ql-ordered\"\n value=\"ordered\"></button>\n </div>\n }\n @if (option.type === 'listChecked') {\n <div\n [class]=\"option.classInclude || 'mx-[8px]'\"\n [class.ql-active]=\"listCheckboxSelected()\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_list_numbered', zIndex: zIndex() }\"\n class=\"ql-list ql-check\"\n value=\"check\"></button>\n </div>\n }\n @if (option.type === 'personalize' && templateToolBarPersonalize(); as templateToolBarPersonalize) {\n <div class=\"flex items-center {{ option.classInclude || 'mx-[8px]' }}\">\n <ng-container *ngTemplateOutlet=\"templateToolBarPersonalize\"></ng-container>\n </div>\n }\n @if (option.type === 'blockquote') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_quote', zIndex: zIndex() }\"\n class=\"ql-blockquote\"></button>\n </div>\n }\n @if (option.type === 'link') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_insert_link', zIndex: zIndex() }\"\n class=\"ql-link\"></button>\n </div>\n }\n @if (option.type === 'unLink') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_unlink', zIndex: zIndex() }\"\n class=\"ql-unLink\"\n (click)=\"handlerUnlink($event)\"></button>\n </div>\n }\n @if (option.type === 'image') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_image', zIndex: zIndex() }\"\n class=\"ql-image\"></button>\n </div>\n }\n @if (option.type === 'video') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_video', zIndex: zIndex() }\"\n class=\"ql-video\"></button>\n </div>\n }\n @if (option.type === 'emoji') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <libs_ui-components-emoji\n [zIndex]=\"zIndex()\"\n [isNgContent]=\"true\"\n (outEventEmoji)=\"handlerInsertEmoji($event)\">\n <button class=\"ql-emoji\"></button>\n </libs_ui-components-emoji>\n </div>\n }\n @if (option.type === 'table') {\n <div [class]=\"option.classInclude || 'mx-[8px]'\">\n <button\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: 'i18n_table', zIndex: zIndex() }\"\n class=\"ql-table\"></button>\n </div>\n }\n @if (option.type === 'line') {\n <div class=\"w-[1px] h-[16px] libs-ui-border-right-general\"></div>\n }\n</ng-template>\n\n<libs_ui-components-popover\n #inputLinkRef\n [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{ template: viewLink, whiteTheme: true, ignoreArrow: true, zIndex: zIndex() }\"\n (outEvent)=\"handlerPopoverEvent($event)\" />\n\n<ng-template #viewLink>\n <div class=\"flex justify-between items-center px-[16px] py-[8px] rounded-[8px]\">\n <div\n class=\"w-full min-w-0 libs-ui-font-h5r\"\n [type]=\"'text'\"\n LibsUiComponentsPopoverDirective\n [config]=\"{ content: link().url, zIndex: zIndex() + 1 }\">\n {{ link().url }}\n </div>\n <div class=\"flex items-center ml-[16px]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-link-primary'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-edit-line'\"\n [classInclude]=\"'!p-0'\"\n (outClick)=\"handlerEditLink($event)\" />\n <libs_ui-components-buttons-button\n [type]=\"'button-link-custom'\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#071631',\n text_hover: '#ee2d41',\n text_active: '#ee2d41',\n text_disable: '071631',\n },\n rootColor: '#071631',\n }\"\n [classInclude]=\"'!p-0 ml-[12px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-link-broken'\"\n (outClick)=\"handlerUnlink($event)\" />\n </div>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";:host ::ng-deep .quill-container .ql-container{font-family:var(--libs-ui-font-family-name),Arial,sans-serif!important;font-weight:400}:host ::ng-deep .quill-container .ql-container .ql-editor{font-family:var(--libs-ui-font-family-name),Arial,sans-serif!important;font-weight:400;height:auto;min-height:100%;resize:var(--resize)}:host ::ng-deep .quill-container .ql-container .ql-blank:before{font-style:normal!important;font-size:12px!important;color:#9ca2ad!important;font-family:var(--libs-ui-font-family-name),Arial,sans-serif!important}:host ::ng-deep .quill-container .ql-active span:before{color:var(--libs-ui-color-light-1)!important}:host ::ng-deep .quill-container .ql-active .ql-fill{fill:var(--libs-ui-color-light-1)!important}:host ::ng-deep .quill-container .ql-script :hover .ql-fill{fill:var(--libs-ui-color-light-1)!important}:host ::ng-deep .quill-container .ql-toolbar{padding:0!important;border:none!important}:host ::ng-deep .quill-container .ql-toolbar button{padding:0!important;height:16px!important;width:16px!important}:host ::ng-deep .quill-container .ql-tooltip{display:none!important}:host ::ng-deep .quill-container #editor-resizer .toolbar{top:0!important;left:0!important;transform:none!important;font-family:var(--libs-ui-font-family-name),Arial,sans-serif!important;font-weight:400;font-size:12px}:host ::ng-deep .quill-container .libs-ui-icon-editor-color-text-active{color:var(--color-selected)!important}:host ::ng-deep .quill-container .libs-ui-icon-editor-color-background-active{color:var(--background-selected)!important}:host ::ng-deep .quill-container .ql-snow .ql-picker{font-size:12px!important;height:32px;float:none;width:auto}:host ::ng-deep .selected-cell{background-color:#0096ff4d}\n", "@charset \"UTF-8\";:host ::ng-deep .ql-container{font-family:var(--libs-ui-font-family-name),Arial,sans-serif!important;font-weight:400;height:auto}:host ::ng-deep .ql-container ol,:host ::ng-deep .ql-container ul{list-style:none!important;padding-left:0!important;margin-left:0!important}:host ::ng-deep .ql-container ol li,:host ::ng-deep .ql-container ul li{list-style-type:none!important}:host ::ng-deep .ql-container li,:host ::ng-deep .ql-container ol li,:host ::ng-deep .ql-container ul li,:host ::ng-deep .ql-container li[data-list]{counter-reset:none!important;counter-increment:none!important;counter-set:none!important}@supports (counter-set: none){:host ::ng-deep .ql-container li[data-list]{counter-set:none!important}}:host ::ng-deep .ql-container ol li:not(.ql-direction-rtl){counter-increment:none!important}:host ::ng-deep .ql-container ol{counter-reset:my-counter 0!important}:host ::ng-deep .ql-container ol>li[data-list=ordered]{counter-increment:my-counter 1!important;position:relative;padding-left:8px}:host ::ng-deep .ql-container ol>li[data-list=ordered]:before{content:counter(my-counter) \". \"}:host ::ng-deep .ql-container ol li span:before{content:\"\"!important}:host ::ng-deep .ql-container ol li[data-list=bullet]:before{content:\"\\2022 \"!important}:host ::ng-deep .ql-container ol li[data-list=unchecked]:before{content:\"\\2610 \"!important}:host ::ng-deep .ql-container ol li[data-list=checked]:before{content:\"\\2611 \"!important}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LibsUiComponentsDropdownComponent, selector: "libs_ui-components-dropdown", inputs: ["useXssFilter", "popoverElementRefCustom", "classInclude", "ignoreStopPropagationEvent", "flagMouse", "flagMouseContent", "popoverCustomConfig", "isNgContent", "zIndex", "convertItemSelected", "getPopoverItemSelected", "httpRequestDetailItemById", "lengthKeys", "textDisplayWhenNoSelect", "textDisplayWhenMultiSelect", "classIncludeTextDisplayWhenNoSelect", "fieldLabel", "fieldGetLabel", "labelPopoverConfig", "labelPopoverFullWidth", "hasContentUnitRight", "listSearchNoDataTemplateRef", "dropdownTemplateRefNotSearchNoData", "fieldGetImage", "imageSize", "typeShape", "fieldGetIcon", "fieldGetTextAvatar", "fieldGetColorAvatar", "classAvatarInclude", "getLastTextAfterSpace", "linkImageError", "showError", "showBorderError", "disable", "readonly", "labelConfig", "disableLabel", "listSearchConfig", "isSearchOnline", "listHiddenInputSearch", "listSearchPadding", "listKeySearch", "listDividerClassInclude", "listConfig", "listButtonsOther", "listHasButtonUnSelectOption", "listClickExactly", "listBackgroundCustom", "listMaxItemShow", "listKeySelected", "listMultiKeySelected", "listKeysDisable", "listKeysHidden", "validRequired", "validMaxItemSelected", "changeValidUndefinedResetError", "allowSelectItemMultiple", "focusInputSearch", "onlyEmitDataWhenReset", "resetKeyWhenSelectAllKey", "listConfigHasDivider", "classIncludeIcon", "classIncludeContent", "listIgnoreClassDisableDefaultWhenUseKeysDisableItem", "tabKeyActive", "tabsConfig", "ignoreBorderBottom"], outputs: ["flagMouseChange", "flagMouseContentChange", "lengthKeysChange", "showBorderErrorChange", "listKeySelectedChange", "listMultiKeySelectedChange", "tabKeyActiveChange", "outSelectKey", "outSelectMultiKey", "outFunctionsControl", "outValidEvent", "outChangStageFlagMouse", "outDataChange", "outClickButtonOther", "outShowList", "outChangeTabKeyActive"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsSkeletonComponent, selector: "libs_ui-components-skeleton", inputs: ["config"] }, { kind: "directive", type: LibsUiComponentsScrollOverlayDirective, selector: "[LibsUiComponentsScrollOverlayDirective]", inputs: ["debugMode", "ignoreInit", "classContainer", "options", "elementCheckScrollX", "elementCheckScrollY", "elementScroll"], outputs: ["outScroll", "outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "component", type: LibsUiComponentsEmojiComponent, selector: "libs_ui-components-emoji", inputs: ["configPopover", "isNgContent", "zIndex", "ignoreShowPopoverText", "modePopoverPosition", "classPopup", "classInclude", "classIconInclude"], outputs: ["outEventEmoji", "outFunctionsControl", "outFlagMouse"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsInputsValidComponent, selector: "libs_ui-components-inputs-valid", inputs: ["item", "labelConfig", "emitEmptyInDataTypeNumber", "ignoreBlockInputMaxValue", "fieldNameBind", "showCount", "typeComponentSelectItem", "valueComponentSelectItem", "disableComponentSelectItem", "tagInput", "dataType", "typeInput", "modeInput", "resetAutoCompletePassword", "textAreaEnterNotNewLine", "fixedFloat", "acceptNegativeValue", "valueUpDownNumber", "ignoreWidthInput100", "classIncludeInput", "classContainerInput", "readonly", "disable", "noBorder", "backgroundNone", "useColorModeExist", "placeholder", "keepPlaceholderOnly", "classContainerBottomInput", "autoRemoveEmoji", "defaultHeight", "maxHeightTextArea", "minHeightTextArea", "ignoreShowError", "ignoreShowMessageError", "borderError", "iconLeftClass", "popoverContentIconLeft", "iconRightClass", "popoverContentIconRight", "zIndexPopoverContent", "unitsLeft", "configUnitLeft", "keySelectedUnitLeft", "unitsRight", "configUnitRight", "keySelectedUnitRight", "maxValueNumber", "minValueNumber", "ignoreContentLeft", "ignoreContentRight", "isBaselineStyle", "valuePatternShowError", "validPattern", "validRequired", "validMinLength", "validMinValue", "validMaxValue", "validMaxLength", "functionValid", "maxLength", "positionMessageErrorStartInput", "classInclude", "resize", "templateLeftBottomInput", "templateRightBottomInput", "onlyAcceptNegativeValue", "autoAddZeroLessThan10InTypeInt", "maxLengthNumberCount", "classMessageErrorInclude", "ignoreStopPropagationEvent", "ignoreUnitRightClassReadOnly", "paddingRightCustomSpecific", "focusTimeOut", "debounceTimeValidate"], outputs: ["itemChange", "outValueChange", "outSelect", "outIconLeft", "outIconRight", "outClickButtonLabel", "outSwitchEventLabel", "outLabelRightClick", "outEnterInputEvent", "outHeightAreaChange", "outFunctionsControl", "outFocusAndBlur", "outChangeValueByButtonUpDown"] }, { kind: "component", type: LibsUiComponentsButtonsSelectColorComponent, selector: "libs_ui-components-buttons-select_color", inputs: ["zIndex", "customOptions", "externalContent", "direction", "button", "applyNow"], outputs: ["zIndexChange", "outColorChange", "outColorChangeMultipleType"] }, { kind: "component", type: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }, { kind: "directive", type: LibsUiComponentsInputsMentionDirective, selector: "[LibsUiComponentsInputsMentionDirective]", inputs: ["timeDelayInit", "mentionConfig", "mentionListTemplate"], outputs: ["outSearchTerm", "outItemSelected", "outToggle", "outInsertMention", "outFunctionControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2321
2343
|
}
|
|
2322
2344
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuill2xComponent, decorators: [{
|
|
2323
2345
|
type: Component,
|