@lucca-front/ng 20.1.1 → 20.1.2
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/dialog/index.d.ts +2 -4
- package/fesm2022/lucca-front-ng-button.mjs +2 -2
- package/fesm2022/lucca-front-ng-button.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-callout.mjs +5 -6
- package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-api.mjs +17 -7
- package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-date2.mjs +4 -4
- package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs +4 -2
- package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +2 -2
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms.mjs +6 -4
- package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-horizontal-navigation.mjs +2 -2
- package/fesm2022/lucca-front-ng-horizontal-navigation.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-multi-select.mjs +2 -2
- package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-page-header.mjs +2 -2
- package/fesm2022/lucca-front-ng-popover2.mjs +2 -2
- package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-simple-select.mjs +2 -2
- package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-skeleton.mjs +4 -4
- package/fesm2022/lucca-front-ng-skeleton.mjs.map +1 -1
- package/forms/index.d.ts +4 -2
- package/package.json +18 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucca-front-ng-forms-rich-text-input.mjs","sources":["../../../packages/ng/forms/rich-text-input/formatters/rich-text-formatter.ts","../../../packages/ng/forms/rich-text-input/rich-text-input.component.ts","../../../packages/ng/forms/rich-text-input/rich-text-input.component.html","../../../packages/ng/forms/rich-text-input/translations.ts","../../../packages/ng/forms/rich-text-input/rich-text-input.translate.ts","../../../packages/ng/forms/rich-text-input/utils/lexical.utils.ts","../../../packages/ng/forms/rich-text-input/plugins/clear-format/clear-format.command.ts","../../../packages/ng/forms/rich-text-input/plugins/clear-format/clear-format.component.ts","../../../packages/ng/forms/rich-text-input/plugins/clear-format/clear-format.component.html","../../../packages/ng/forms/rich-text-input/plugins/headings/headings.command.ts","../../../packages/ng/forms/rich-text-input/plugins/headings/headings.component.ts","../../../packages/ng/forms/rich-text-input/plugins/headings/headings.component.html","../../../packages/ng/forms/rich-text-input/plugins/link/link-dialog/link-dialog.component.ts","../../../packages/ng/forms/rich-text-input/plugins/link/link-dialog/link-dialog.component.html","../../../packages/ng/forms/rich-text-input/plugins/link/link.command.ts","../../../packages/ng/forms/rich-text-input/plugins/link/link.component.ts","../../../packages/ng/forms/rich-text-input/plugins/link/link.component.html","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-format.command.ts","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-format.component.ts","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-format.component.html","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-style-toolbar.component.ts","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-style-toolbar.component.html","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style.command.ts","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style.component.ts","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style.component.html","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style-toolbar.component.ts","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style-toolbar.component.html","../../../packages/ng/forms/rich-text-input/plugins/toolbar/toolbar.component.ts","../../../packages/ng/forms/rich-text-input/plugins/toolbar/toolbar.component.html","../../../packages/ng/forms/rich-text-input/lucca-front-ng-forms-rich-text-input.ts"],"sourcesContent":["import { LexicalEditor } from 'lexical';\nimport { InjectionToken } from '@angular/core';\n\nexport abstract class RichTextFormatter {\n\tabstract parse(editor: LexicalEditor, text?: string | null): void;\n\tabstract format(editor: LexicalEditor): string;\n}\n\nclass NoopFormatter extends RichTextFormatter {\n\toverride parse(): void {\n\t\tthrow new Error('You must provide a RichTextFormatter');\n\t}\n\n\toverride format(): string {\n\t\tthrow new Error('You must provide a RichTextFormatter');\n\t}\n}\n\nexport const RICH_TEXT_FORMATTER = new InjectionToken<RichTextFormatter>('RICH_TEXT_FORMATTER', {\n\tfactory: () => new NoopFormatter(),\n});\n","import {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChildren,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tInjectionToken,\n\tinput,\n\tOnDestroy,\n\tOnInit,\n\tSignal,\n\tsignal,\n\tviewChild,\n\tViewEncapsulation,\n\tWritableSignal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { createEmptyHistoryState, registerHistory } from '@lexical/history';\nimport { registerRichText } from '@lexical/rich-text';\nimport { mergeRegister } from '@lexical/utils';\n\nimport { $canShowPlaceholderCurry } from '@lexical/text';\nimport { FormFieldComponent, InputDirective } from '@lucca-front/ng/form-field';\nimport { $getRoot, createEditor, Klass, LexicalEditor, LexicalNode } from 'lexical';\nimport { RICH_TEXT_FORMATTER, RichTextFormatter } from './formatters';\n\nconst INITIAL_UPDATE_TAG = 'initial-update';\n\nexport interface RichTextPluginComponent {\n\tsetEditorInstance(editor: LexicalEditor): void;\n\tgetLexicalNodes?(): Klass<LexicalNode>[];\n\tsetDisabledState(isDisabled: boolean): void;\n\n\t//embedded plugins\n\tpluginComponents?: Signal<readonly RichTextPluginComponent[]>;\n\n\t// accessibility\n\ttabindex?: WritableSignal<number>;\n\tfocus?(): void;\n}\n\nexport const RICH_TEXT_PLUGIN_COMPONENT = new InjectionToken<RichTextPluginComponent>('RichTextPlugin');\n\n@Component({\n\tselector: 'lu-rich-text-input',\n\tstandalone: true,\n\timports: [InputDirective],\n\ttemplateUrl: './rich-text-input.component.html',\n\tstyleUrl: './rich-text-input.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => RichTextInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RichTextInputComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\treadonly #richTextFormatter = inject<RichTextFormatter>(RICH_TEXT_FORMATTER);\n\treadonly #formField = inject(FormFieldComponent, { optional: true });\n\n\treadonly placeholder = input<string>('');\n\treadonly disableSpellcheck = input(false, { transform: booleanAttribute });\n\treadonly autoResize = input(false, { transform: booleanAttribute });\n\n\treadonly content = viewChild.required<string, ElementRef<HTMLElement>>('content', {\n\t\tread: ElementRef,\n\t});\n\treadonly pluginComponents = contentChildren(RICH_TEXT_PLUGIN_COMPONENT, { descendants: true });\n\n\treadonly currentCanShowPlaceholder = signal(false);\n\treadonly isDisabled = signal(false);\n\treadonly formFieldId = computed(() => this.#formField?.id());\n\n\treadonly #customNodes = computed(() =>\n\t\tthis.pluginComponents()\n\t\t\t.map((c) => c.getLexicalNodes?.() ?? [])\n\t\t\t.flat(),\n\t);\n\treadonly #allPlugins = computed(() => this.#flattenPlugins(this.pluginComponents()));\n\treadonly #isTouched = signal(false);\n\n\t#onChange?: (markdown: string | null) => void;\n\t#onTouch?: () => void;\n\t#cleanup?: () => void;\n\t#focusedPlugin: number = 0;\n\t#editor?: LexicalEditor;\n\n\tngOnInit(): void {\n\t\tthis.#editor = createEditor({\n\t\t\ttheme: {\n\t\t\t\ttext: {\n\t\t\t\t\tstrikethrough: 'u-textDecorationLineThrough',\n\t\t\t\t\tbold: 'u-fontWeightBold',\n\t\t\t\t\titalic: 'u-fontStyleItalic',\n\t\t\t\t\tunderline: 'u-textDecorationUnderline',\n\t\t\t\t},\n\t\t\t},\n\t\t\tnodes: [...this.#customNodes()],\n\t\t});\n\n\t\tthis.#cleanup = mergeRegister(\n\t\t\tregisterRichText(this.#editor),\n\t\t\tregisterHistory(this.#editor, createEmptyHistoryState(), 300),\n\t\t\tthis.#editor.registerUpdateListener(({ tags, dirtyElements }) => {\n\t\t\t\tif (!tags.has(INITIAL_UPDATE_TAG) && dirtyElements.size) {\n\t\t\t\t\tconst result = this.#richTextFormatter.format(this.#editor);\n\t\t\t\t\tthis.touch();\n\t\t\t\t\tthis.#onChange?.(result);\n\t\t\t\t}\n\t\t\t\tconst currentCanShowPlaceholder = this.#editor.getEditorState().read($canShowPlaceholderCurry(this.#editor.isComposing()));\n\t\t\t\tthis.currentCanShowPlaceholder.set(currentCanShowPlaceholder);\n\t\t\t}),\n\t\t);\n\t\tthis.#editor.setRootElement(this.content().nativeElement);\n\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(this.#editor));\n\n\t\tif (this.#allPlugins().length > 0) {\n\t\t\tthis.#allPlugins()[this.#focusedPlugin].tabindex.set(0);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.#cleanup?.();\n\t}\n\n\twriteValue(markdown: string | null): void {\n\t\tconst updateTags = ['skip-dom-selection', INITIAL_UPDATE_TAG];\n\t\tif (markdown) {\n\t\t\tthis.#editor?.update(\n\t\t\t\t() => {\n\t\t\t\t\tthis.#richTextFormatter.parse(this.#editor, markdown);\n\t\t\t\t},\n\t\t\t\t{ tag: updateTags },\n\t\t\t);\n\t\t} else if (!this.#editor?.getEditorState().isEmpty()) {\n\t\t\tthis.#editor.update(\n\t\t\t\t() => {\n\t\t\t\t\tconst root = $getRoot();\n\t\t\t\t\troot.clear();\n\t\t\t\t},\n\t\t\t\t{ tag: updateTags },\n\t\t\t);\n\t\t}\n\t}\n\n\tregisterOnChange(onChange: (markdown: string | null) => void): void {\n\t\tthis.#onChange = onChange;\n\t}\n\n\tregisterOnTouched(onTouch: () => void): void {\n\t\tthis.#onTouch = onTouch;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.#editor?.setEditable(!isDisabled);\n\t\tthis.isDisabled.set(isDisabled);\n\t\tthis.pluginComponents().forEach((c) => c.setDisabledState(isDisabled));\n\t}\n\n\tfocusSiblingPlugin(direction: -1 | 1) {\n\t\tconst plugins = this.#allPlugins();\n\n\t\tplugins[this.#focusedPlugin].tabindex.set(-1);\n\t\tthis.#focusedPlugin = this.#focusedPlugin + direction < 0 ? plugins.length - 1 : (this.#focusedPlugin + direction) % plugins.length;\n\t\tplugins[this.#focusedPlugin].tabindex.set(0);\n\t\tplugins[this.#focusedPlugin].focus();\n\t}\n\n\ttouch() {\n\t\tthis.#isTouched.set(true);\n\t\tthis.#onTouch?.();\n\t}\n\n\t#flattenPlugins(plugins: readonly RichTextPluginComponent[]): RichTextPluginComponent[] {\n\t\treturn plugins.flatMap((p) => {\n\t\t\tif (p.pluginComponents) {\n\t\t\t\treturn this.#flattenPlugins(p.pluginComponents());\n\t\t\t} else {\n\t\t\t\treturn p;\n\t\t\t}\n\t\t});\n\t}\n}\n","<div class=\"richTextField\" [class.is-disabled]=\"isDisabled()\" [class.mod-autoResize]=\"autoResize()\">\n\t<div\n\t\t#content\n\t\tluInput\n\t\tclass=\"richTextField-content textFlow\"\n\t\trole=\"textbox\"\n\t\t[attr.contenteditable]=\"!isDisabled()\"\n\t\t[attr.aria-disabled]=\"isDisabled()\"\n\t\t[attr.aria-placeholder]=\"currentCanShowPlaceholder() ? placeholder() : null\"\n\t\t[attr.aria-labelledby]=\"formFieldId() + '-label'\"\n\t\t[attr.spellcheck]=\"!disableSpellcheck()\"\n\t\t(blur)=\"touch()\"\n\t></div>\n\t@if (currentCanShowPlaceholder()) {\n\t\t<div aria-hidden=\"true\" class=\"richTextField-content-placeholder\">{{ placeholder() }}</div>\n\t}\n\t<div\n\t\tclass=\"richTextField-toolbar\"\n\t\t(keydown.arrowleft)=\"$event.preventDefault(); focusSiblingPlugin(-1)\"\n\t\t(keydown.arrowRight)=\"$event.preventDefault(); focusSiblingPlugin(1)\"\n\t\trole=\"toolbar\"\n\t\t[attr.aria-labelledby]=\"formFieldId() + '-label'\"\n\t\t[attr.aria-controls]=\"formFieldId()\"\n\t>\n\t\t<ng-content />\n\t</div>\n</div>\n","export const Translations = {\n\ten: {\n\t\tclearFormat: 'Delete formatting',\n\t\tlinksCancel: 'Cancel',\n\t\tlinksDelete: 'Delete link',\n\t\tlinksHref: 'Web address',\n\t\tlinksLabel: 'Link',\n\t\tlinksSubmit: 'Confirm',\n\t\tlistsNumberedLabel: 'Numbered list',\n\t\tlistsBulletLabel: 'Bulleted list',\n\t\theadingsLabel: 'Heading level',\n\t\theadings0: 'Paragraph',\n\t\theadings1: 'Level 1 Title',\n\t\theadings2: 'Level 2 title',\n\t\theadings3: 'Level 3 Title',\n\t\theadings4: 'Level 4 Title',\n\t\theadings5: 'Level 5 Title',\n\t\theadings6: 'Level 6 Title',\n\t\tstylesItalic: 'Italic',\n\t\tstylesBold: 'Bold',\n\t\tstylesUnderline: 'Underline',\n\t\tstylesStrikethrough: 'Strikethrough',\n\t\tlinksPlaceholder: 'https://www.siteName.com',\n\t},\n\tde: {\n\t\tclearFormat: 'Formatierung löschen',\n\t\tlinksCancel: 'Stornieren',\n\t\tlinksDelete: 'Link löschen',\n\t\tlinksHref: 'Webadresse',\n\t\tlinksLabel: 'Einen Link hinzufügen',\n\t\tlinksSubmit: 'Bestätigen',\n\t\tlistsNumberedLabel: 'Nummernliste',\n\t\tlistsBulletLabel: 'Punkteliste',\n\t\theadingsLabel: 'Ebene des Titels',\n\t\theadings0: 'Absatz',\n\t\theadings1: 'Titel der Stufe 1',\n\t\theadings2: 'Titel der Stufe 2',\n\t\theadings3: 'Titel der Stufe 3',\n\t\theadings4: 'Titel der Stufe 4',\n\t\theadings5: 'Titel der Stufe 5',\n\t\theadings6: 'Titel der Stufe 6',\n\t\tstylesItalic: 'Kursiv',\n\t\tstylesBold: 'Fettdruck',\n\t\tstylesUnderline: 'Unterstrichen',\n\t\tstylesStrikethrough: 'Durchgestrichen',\n\t\tlinksPlaceholder: 'https://www.nameDerSeite.com',\n\t},\n\tfr: {\n\t\tclearFormat: 'Effacer la mise en forme',\n\t\tlinksCancel: 'Annuler',\n\t\tlinksDelete: 'Supprimer le lien',\n\t\tlinksHref: 'Adresse web',\n\t\tlinksLabel: 'Lien',\n\t\tlinksSubmit: 'Valider',\n\t\tlistsNumberedLabel: 'Liste numérotée',\n\t\tlistsBulletLabel: 'Liste à puces',\n\t\theadingsLabel: 'Niveau de titre',\n\t\theadings0: 'Paragraphe',\n\t\theadings1: 'Titre de niveau 1',\n\t\theadings2: 'Titre de niveau 2',\n\t\theadings3: 'Titre de niveau 3',\n\t\theadings4: 'Titre de niveau 4',\n\t\theadings5: 'Titre de niveau 5',\n\t\theadings6: 'Titre de niveau 6',\n\t\tstylesItalic: 'Italique',\n\t\tstylesBold: 'Gras',\n\t\tstylesUnderline: 'Souligné',\n\t\tstylesStrikethrough: 'Barré',\n\t\tlinksPlaceholder: 'https://www.nomDuSite.com',\n\t},\n\tit: {\n\t\tclearFormat: 'Eliminare la formattazione',\n\t\tlinksCancel: 'Annullare',\n\t\tlinksDelete: 'Eliminare il link',\n\t\tlinksHref: 'Indirizzo web',\n\t\tlinksLabel: 'Aggiungere un link',\n\t\tlinksSubmit: 'Convalidare',\n\t\tlistsNumberedLabel: 'Elenco numerato',\n\t\tlistsBulletLabel: 'Elenco puntato',\n\t\theadingsLabel: 'Livello del titolo',\n\t\theadings0: 'Paragrafo',\n\t\theadings1: 'Qualifica di livello 1',\n\t\theadings2: 'Qualifica di livello 2',\n\t\theadings3: 'Qualifica di livello 3',\n\t\theadings4: 'Qualifica di livello 4',\n\t\theadings5: 'Qualifica di livello 5',\n\t\theadings6: 'Qualifica di livello 6',\n\t\tstylesItalic: 'Corsivo',\n\t\tstylesBold: 'Grassetto',\n\t\tstylesUnderline: 'Sottolineato',\n\t\tstylesStrikethrough: 'Barrato',\n\t\tlinksPlaceholder: 'https://www.nomeDelSito.com',\n\t},\n\tnl: {\n\t\tclearFormat: 'Opmaak verwijderen',\n\t\tlinksCancel: 'Annuleren',\n\t\tlinksDelete: 'Link verwijderen',\n\t\tlinksHref: 'Webadres',\n\t\tlinksLabel: 'Een link toevoegen',\n\t\tlinksSubmit: 'Valideren',\n\t\tlistsNumberedLabel: 'Genummerde lijst',\n\t\tlistsBulletLabel: 'Lijst met opsommingstekens',\n\t\theadingsLabel: 'Titel niveau',\n\t\theadings0: 'Paragraaf',\n\t\theadings1: 'Kwalificatie op niveau 1',\n\t\theadings2: 'Kwalificatie op niveau 2',\n\t\theadings3: 'Kwalificatie op niveau 3',\n\t\theadings4: 'Kwalificatie op niveau 4',\n\t\theadings5: 'Kwalificatie op niveau 5',\n\t\theadings6: 'Kwalificatie op niveau 6',\n\t\tstylesItalic: 'Cursief',\n\t\tstylesBold: 'Vet',\n\t\tstylesUnderline: 'Onderstreept',\n\t\tstylesStrikethrough: 'Doorgehaald',\n\t\tlinksPlaceholder: 'https://www.siteNaam.com',\n\t},\n\t'nl-BE': {\n\t\tclearFormat: 'Opmaak verwijderen',\n\t\tlinksCancel: 'Annuleren',\n\t\tlinksDelete: 'Link verwijderen',\n\t\tlinksHref: 'Webadres',\n\t\tlinksLabel: 'Een link toevoegen',\n\t\tlinksSubmit: 'Valideren',\n\t\tlistsNumberedLabel: 'Genummerde lijst',\n\t\tlistsBulletLabel: 'Lijst met opsommingstekens',\n\t\theadingsLabel: 'Titel niveau',\n\t\theadings0: 'Paragraaf',\n\t\theadings1: 'Kwalificatie op niveau 1',\n\t\theadings2: 'Kwalificatie op niveau 2',\n\t\theadings3: 'Kwalificatie op niveau 3',\n\t\theadings4: 'Kwalificatie op niveau 4',\n\t\theadings5: 'Kwalificatie op niveau 5',\n\t\theadings6: 'Kwalificatie op niveau 6',\n\t\tstylesItalic: 'Cursief',\n\t\tstylesBold: 'Vet',\n\t\tstylesUnderline: 'Onderstreept',\n\t\tstylesStrikethrough: 'Doorgehaald',\n\t\tlinksPlaceholder: 'https://www.siteNaam.com',\n\t},\n\tes: {\n\t\tclearFormat: 'Borrar formato',\n\t\tlinksCancel: 'Cancelar',\n\t\tlinksDelete: 'Eliminar el enlace',\n\t\tlinksHref: 'Dirección web',\n\t\tlinksLabel: 'Añadir un enlace',\n\t\tlinksSubmit: 'Validar',\n\t\tlistsNumberedLabel: 'Lista numerada',\n\t\tlistsBulletLabel: 'Lista de viñetas',\n\t\theadingsLabel: 'Nivel del título',\n\t\theadings0: 'Apartado',\n\t\theadings1: 'Cualificación de nivel 1',\n\t\theadings2: 'Cualificación de nivel 2',\n\t\theadings3: 'Cualificación de nivel 3',\n\t\theadings4: 'Cualificación de nivel 4',\n\t\theadings5: 'Cualificación de nivel 5',\n\t\theadings6: 'Cualificación de nivel 6',\n\t\tstylesItalic: 'Cursiva',\n\t\tstylesBold: 'Negrita',\n\t\tstylesUnderline: 'Subrayado',\n\t\tstylesStrikethrough: 'Tachado',\n\t\tlinksPlaceholder: 'https://www.nombreDelSitio.com',\n\t},\n\tpt: {\n\t\tclearFormat: 'Eliminar a formatação',\n\t\tlinksCancel: 'Cancelar',\n\t\tlinksDelete: 'Eliminar a ligação',\n\t\tlinksHref: 'Endereço do sítio Web',\n\t\tlinksLabel: 'Ligação',\n\t\tlinksSubmit: 'Confirmar',\n\t\tlistsNumberedLabel: 'Lista numerada',\n\t\tlistsBulletLabel: 'Lista com marcadores',\n\t\theadingsLabel: 'Nível do título',\n\t\theadings0: 'Parágrafo',\n\t\theadings1: 'Qualificação de nível 1',\n\t\theadings2: 'Qualificação de nível 2',\n\t\theadings3: 'Qualificação de nível 3',\n\t\theadings4: 'Qualificação de nível 4',\n\t\theadings5: 'Qualificação de nível 5',\n\t\theadings6: 'Qualificação de nível 6',\n\t\tstylesItalic: 'Itálico',\n\t\tstylesBold: 'Gordura',\n\t\tstylesUnderline: 'Sublinhado',\n\t\tstylesStrikethrough: 'Barré',\n\t\tlinksPlaceholder: 'https://www.nomeDoSitio.com/',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_RICH_TEXT_INPUT_TRANSLATIONS = new InjectionToken('LuRichTextInputTranslations', {\n\tfactory: () => luRichTextInputTranslations,\n});\n\nexport interface ILuRichTextInputLabel {\n\tclearFormat: string;\n\n\tlinksCancel: string;\n\tlinksDelete: string;\n\tlinksHref: string;\n\tlinksLabel: string;\n\tlinksSubmit: string;\n\tlinksPlaceholder: string;\n\n\tlistsNumberedLabel: string;\n\tlistsBulletLabel: string;\n\n\theadingsLabel: string;\n\theadings0: string;\n\theadings1: string;\n\theadings2: string;\n\theadings3: string;\n\theadings4: string;\n\theadings5: string;\n\theadings6: string;\n\n\tstylesItalic: string;\n\tstylesBold: string;\n\tstylesUnderline: string;\n\tstylesStrikethrough: string;\n}\n\nexport const luRichTextInputTranslations: LuTranslation<ILuRichTextInputLabel> = Translations;\n","import { $createTextNode, ElementNode, LexicalNode, RangeSelection, TextNode } from 'lexical';\nimport { $isAtNodeEnd } from '@lexical/selection';\n\n/**\n * Cut a single text node into:\n * - A shorter text node\n * - A new node created by the replacer\n * - The remaining text in a new text node\n *\n * Returns the new node created by the replacer.\n */\nexport function replaceTextNodeContentPartWith<TNode extends LexicalNode>(textNode: TextNode, fromIndex: number, toIndex: number, replacer: (text: string) => TNode): TNode {\n\tconst safeFrom = Math.min(toIndex, fromIndex);\n\tconst safeTo = Math.max(toIndex, fromIndex);\n\tconst text = textNode.getTextContent();\n\tconst beforeText = text.slice(0, safeFrom);\n\tconst betweenText = text.slice(safeFrom, safeTo);\n\tconst afterText = text.slice(safeTo);\n\n\t// 1. Shorten the original text node\n\ttextNode.setTextContent(beforeText);\n\n\t// 2. Create the new node\n\tconst betweenNode = replacer(betweenText);\n\ttextNode.insertAfter(betweenNode);\n\n\t// 3. Add the remaining text\n\tconst afterNode = $createTextNode(afterText);\n\tafterNode.setStyle(textNode.getStyle());\n\tafterNode.setFormat(textNode.getFormat());\n\tbetweenNode.insertAfter(afterNode);\n\n\treturn betweenNode;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nexport function getSelectedNode(selection: RangeSelection): TextNode | ElementNode {\n\tconst anchor = selection.anchor;\n\tconst focus = selection.focus;\n\tconst anchorNode = selection.anchor.getNode();\n\tconst focusNode = selection.focus.getNode();\n\tif (anchorNode === focusNode) {\n\t\treturn anchorNode;\n\t}\n\tconst isBackward = selection.isBackward();\n\tif (isBackward) {\n\t\treturn $isAtNodeEnd(focus) ? anchorNode : focusNode;\n\t} else {\n\t\treturn $isAtNodeEnd(anchor) ? anchorNode : focusNode;\n\t}\n}\n","import { $createParagraphNode, $createTextNode, $getSelection, $isRangeSelection, $isTextNode, COMMAND_PRIORITY_NORMAL, createCommand, LexicalEditor } from 'lexical';\nimport { $setBlocksType } from '@lexical/selection';\nimport { replaceTextNodeContentPartWith } from '../../utils';\n\nexport const CLEAR_FORMAT = createCommand<void>('CLEAR_FORMAT');\n\nexport function registerClearFormat(editor: LexicalEditor) {\n\treturn editor.registerCommand(\n\t\tCLEAR_FORMAT,\n\t\t() => {\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\n\t\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\t\tconst { anchor, focus } = selection;\n\n\t\t\t\t\tselection.getNodes().forEach((node) => {\n\t\t\t\t\t\tif ($isTextNode(node)) {\n\t\t\t\t\t\t\t// use selection offsets if within current node\n\t\t\t\t\t\t\tconst start = node.getKey() === anchor.key ? anchor.offset : 0;\n\t\t\t\t\t\t\tconst end = node.getKey() === focus.key ? focus.offset : node.getTextContent().length;\n\t\t\t\t\t\t\tif (start === end) {\n\t\t\t\t\t\t\t\tnode.setFormat(0);\n\t\t\t\t\t\t\t\tnode.setStyle('');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treplaceTextNodeContentPartWith(node, start, end, (text) => $createTextNode(text));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t$setBlocksType(selection, () => $createParagraphNode());\n\t\t\t});\n\n\t\t\treturn true;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, OnDestroy, signal, viewChild } from '@angular/core';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { LexicalEditor } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { CLEAR_FORMAT, registerClearFormat } from './clear-format.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-clear-format',\n\ttemplateUrl: 'clear-format.component.html',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => ClearFormatComponent),\n\t\t},\n\t],\n})\nexport class ClearFormatComponent implements RichTextPluginComponent, OnDestroy {\n\t#editor?: LexicalEditor;\n\t#registeredCommands: () => void = () => {};\n\n\treadonly intl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\treadonly element = viewChild('element', { read: ElementRef<HTMLButtonElement> });\n\n\treadonly tabindex = signal<number>(-1);\n\treadonly isDisabled = signal(false);\n\n\tsetEditorInstance(editor: LexicalEditor) {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = registerClearFormat(editor);\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor.dispatchCommand(CLEAR_FORMAT, undefined);\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n}\n","<button\n\t#element\n\tluButton=\"text\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[luTooltip]=\"intl.clearFormat\"\n\tluTooltipOnlyForDisplay\n\t[attr.tabindex]=\"tabindex()\"\n\t[disabled]=\"isDisabled()\"\n\tclass=\"richTextField-toolbar-button\"\n>\n\t<lu-icon icon=\"formatClear\" [alt]=\"intl.clearFormat\" />\n</button>\n","import { $createParagraphNode, $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, CommandPayloadType, createCommand, LexicalEditor, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { $setBlocksType } from '@lexical/selection';\nimport { $createHeadingNode, HeadingNode } from '@lexical/rich-text';\nimport { $getNearestNodeOfType } from '@lexical/utils';\nimport { getSelectedNode } from '../../utils';\n\nexport const FORMAT_HEADINGS = createCommand<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'paragraph'>('FORMAT_HEADINGS');\n\nexport function registerHeadings(editor: LexicalEditor) {\n\treturn editor.registerCommand(\n\t\tFORMAT_HEADINGS,\n\t\t(headingSize) => {\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\t$setBlocksType(selection, () => {\n\t\t\t\t\tif (headingSize === 'paragraph') {\n\t\t\t\t\t\treturn $createParagraphNode();\n\t\t\t\t\t}\n\t\t\t\t\treturn $createHeadingNode(headingSize);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn true;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n\nexport function registerHeadingsSelectionChange(editor: LexicalEditor, onselectionchange: (type: CommandPayloadType<typeof FORMAT_HEADINGS>) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst element = $getNearestNodeOfType(node, HeadingNode);\n\t\t\t\tconst type = element ? element.getTag() : 'paragraph';\n\t\t\t\tonselectionchange(type as CommandPayloadType<typeof FORMAT_HEADINGS>);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, forwardRef, inject, input, OnDestroy, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { mergeRegister } from '@lexical/utils';\nimport { LuOptionDirective } from '@lucca-front/ng/core-select';\nimport { FormFieldComponent } from '@lucca-front/ng/form-field';\nimport { LuSimpleSelectInputComponent } from '@lucca-front/ng/simple-select';\nimport { CommandPayloadType, Klass, LexicalEditor, LexicalNode } from 'lexical';\nimport { filter } from 'rxjs';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\n\nimport { HeadingNode } from '@lexical/rich-text';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { FORMAT_HEADINGS, registerHeadings, registerHeadingsSelectionChange } from './headings.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-headings',\n\ttemplateUrl: './headings.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [LuSimpleSelectInputComponent, FormFieldComponent, ReactiveFormsModule, LuOptionDirective],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => HeadingsComponent),\n\t\t},\n\t],\n})\nexport class HeadingsComponent implements OnDestroy, RichTextPluginComponent {\n\treadonly #destroyRef = inject(DestroyRef);\n\n\treadonly element = viewChild<LuSimpleSelectInputComponent<string>>('selectRef');\n\n\treadonly tabindex = signal<number>(-1);\n\treadonly maxHeadingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(6);\n\treadonly headingOptions = computed<CommandPayloadType<typeof FORMAT_HEADINGS>[]>(\n\t\t() => Object.keys(this.headingLabels).slice(0, this.maxHeadingLevel() + 1) as CommandPayloadType<typeof FORMAT_HEADINGS>[],\n\t);\n\n\treadonly intl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\treadonly headingLabels: Record<CommandPayloadType<typeof FORMAT_HEADINGS>, [string, number]> = {\n\t\tparagraph: [this.intl.headings0, 0],\n\t\th1: [this.intl.headings1, 1],\n\t\th2: [this.intl.headings2, 2],\n\t\th3: [this.intl.headings3, 3],\n\t\th4: [this.intl.headings4, 4],\n\t\th5: [this.intl.headings5, 5],\n\t\th6: [this.intl.headings6, 6],\n\t};\n\treadonly formControl = new FormControl<CommandPayloadType<typeof FORMAT_HEADINGS> | null>('paragraph');\n\n\t#registeredCommands: () => void = () => {};\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.#registeredCommands = mergeRegister(\n\t\t\tregisterHeadings(editor),\n\t\t\tregisterHeadingsSelectionChange(editor, (value) => this.formControl.setValue(value, { emitEvent: false })),\n\t\t);\n\t\tthis.formControl.valueChanges.pipe(takeUntilDestroyed(this.#destroyRef), filter(Boolean)).subscribe((heading) => editor.dispatchCommand(FORMAT_HEADINGS, heading));\n\t}\n\n\tgetLexicalNodes(): Klass<LexicalNode>[] {\n\t\treturn [HeadingNode];\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tfocus() {\n\t\tthis.element().focusInput();\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tif (isDisabled) {\n\t\t\tthis.formControl.disable();\n\t\t} else {\n\t\t\tthis.formControl.enable();\n\t\t}\n\t}\n}\n","<lu-form-field [label]=\"intl.headingsLabel\" size=\"S\" hiddenLabel class=\"mod-width20\">\n\t<lu-simple-select [options]=\"headingOptions()\" [formControl]=\"formControl\" #selectRef [inputTabindex]=\"tabindex()\">\n\t\t<ng-container *luOption=\"let heading; select: selectRef\">{{ headingLabels[heading][0] }}</ng-container>\n\t</lu-simple-select>\n</lu-form-field>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { DialogComponent, DialogContentComponent, DialogDismissDirective, DialogFooterComponent, injectDialogData, injectDialogRef } from '@lucca-front/ng/dialog';\nimport { FormFieldComponent } from '@lucca-front/ng/form-field';\nimport { TextInputComponent } from '@lucca-front/ng/forms';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../../rich-text-input.translate';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-link-dialog',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: 'link-dialog.component.html',\n\timports: [DialogComponent, DialogContentComponent, DialogFooterComponent, FormFieldComponent, TextInputComponent, ReactiveFormsModule, ButtonComponent, DialogDismissDirective],\n})\nexport class LinkDialogComponent {\n\tpublic readonly dialogData = injectDialogData<string>();\n\tpublic readonly dialogRef = injectDialogRef<string | undefined>();\n\n\tintl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\tpublic readonly formGroup = new FormGroup({\n\t\thref: new FormControl<string>(this.dialogData, Validators.required),\n\t});\n\n\tpublic save() {\n\t\tif (this.formGroup.invalid) {\n\t\t\tthis.formGroup.markAllAsTouched();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.dialogRef.close(encodeURI(this.formGroup.controls.href.value.trim()));\n\t}\n\n\tpublic deleteLink() {\n\t\tthis.dialogRef.close(undefined);\n\t}\n}\n","<lu-dialog>\n\t<form class=\"dialog-form\" (submit)=\"save()\" [formGroup]=\"formGroup\">\n\t\t<lu-dialog-content>\n\t\t\t<lu-form-field [label]=\"intl.linksHref\">\n\t\t\t\t<lu-text-input formControlName=\"href\" type=\"url\" [placeholder]=\"intl.linksPlaceholder\" />\n\t\t\t</lu-form-field>\n\t\t</lu-dialog-content>\n\t\t<lu-dialog-footer>\n\t\t\t@if (dialogData) {\n\t\t\t\t<div class=\"footer-content\">\n\t\t\t\t\t<button type=\"button\" luButton=\"text\" delete (click)=\"deleteLink()\">{{ intl.linksDelete }}</button>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t<div class=\"footer-actions\">\n\t\t\t\t<button type=\"submit\" luButton>{{ intl.linksSubmit }}</button>\n\t\t\t\t<button type=\"button\" luButton=\"text\" luDialogDismiss>{{ intl.linksCancel }}</button>\n\t\t\t</div>\n\t\t</lu-dialog-footer>\n\t</form>\n</lu-dialog>\n","import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, createCommand, LexicalEditor, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { $createLinkNode, $isLinkNode, $toggleLink, AutoLinkNode, LinkNode } from '@lexical/link';\nimport { $getNearestNodeOfType } from '@lexical/utils';\nimport { getSelectedNode } from '../../utils';\n\nexport const FORMAT_LINK = createCommand<string | undefined>('FORMAT_LINK');\n\nexport function registerLink(editor: LexicalEditor) {\n\treturn editor.registerCommand(\n\t\tFORMAT_LINK,\n\t\t(href) => {\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\t\tconst parent = $getNearestNodeOfType(node, LinkNode) || $getNearestNodeOfType(node, AutoLinkNode);\n\t\t\t\t\tif (parent) {\n\t\t\t\t\t\tif (href) {\n\t\t\t\t\t\t\tconst linkNode = $createLinkNode(href, {\n\t\t\t\t\t\t\t\trel: parent.__rel,\n\t\t\t\t\t\t\t\ttarget: parent.__target,\n\t\t\t\t\t\t\t\ttitle: parent.__title,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tparent.replace(linkNode, true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$toggleLink(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (href) {\n\t\t\t\t\t\t$toggleLink(href);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn true;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n\nexport function registerLinkSelectionChange(editor: LexicalEditor, onselectionchange: (isLink: boolean) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst parent = node.getParent();\n\t\t\t\tonselectionchange($isLinkNode(node) || $isLinkNode(parent));\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, inject, OnDestroy, signal, viewChild } from '@angular/core';\nimport { AutoLinkNode, LinkNode } from '@lexical/link';\nimport { $getNearestNodeOfType, mergeRegister } from '@lexical/utils';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LuDialogService, provideLuDialog } from '@lucca-front/ng/dialog';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { $getSelection, $isRangeSelection, Klass, LexicalEditor, LexicalNode, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { getSelectedNode } from '../../utils';\nimport { LinkDialogComponent } from './link-dialog';\nimport { FORMAT_LINK, registerLink, registerLinkSelectionChange } from './link.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-link',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: './link.component.html',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\tprovideLuDialog(),\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => LinkComponent),\n\t\t},\n\t],\n})\nexport class LinkComponent implements OnDestroy, RichTextPluginComponent {\n\treadonly #luDialogService = inject(LuDialogService);\n\n\treadonly element = viewChild('element', { read: ElementRef<HTMLButtonElement> });\n\n\treadonly tabindex = signal<number>(-1);\n\treadonly active = signal(false);\n\treadonly isDisabled = signal(false);\n\n\t#editor?: LexicalEditor;\n\tintl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\t#registeredCommands: () => void = () => {};\n\n\tsetEditorInstance(editor: LexicalEditor) {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = mergeRegister(\n\t\t\tregisterLink(editor),\n\t\t\tregisterLinkSelectionChange(editor, (isLink) => this.active.set(isLink)),\n\t\t);\n\t}\n\n\tgetLexicalNodes(): Klass<LexicalNode>[] {\n\t\treturn [LinkNode, AutoLinkNode];\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor?.read(() => {\n\t\t\tlet url = '';\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst parent = $getNearestNodeOfType(node, LinkNode);\n\t\t\t\tif (parent) {\n\t\t\t\t\turl = parent.getURL();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.#luDialogService\n\t\t\t\t.open({\n\t\t\t\t\tcontent: LinkDialogComponent,\n\t\t\t\t\tsize: 'S',\n\t\t\t\t\tdata: url,\n\t\t\t\t})\n\t\t\t\t.result$.subscribe((href) => {\n\t\t\t\t\tlet newHref = href;\n\t\t\t\t\tif (href && !href.startsWith('http')) {\n\t\t\t\t\t\tnewHref = `https://${href}`;\n\t\t\t\t\t}\n\t\t\t\t\tthis.#editor.dispatchCommand(FORMAT_LINK, newHref);\n\t\t\t\t\tthis.#editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n\t\t\t\t});\n\t\t});\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n}\n","<button\n\t#element\n\tluButton=\"text\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[luTooltip]=\"intl.linksLabel\"\n\t[attr.aria-pressed]=\"active()\"\n\tluTooltipOnlyForDisplay\n\t[attr.tabindex]=\"tabindex()\"\n\t[disabled]=\"isDisabled()\"\n\tclass=\"richTextField-toolbar-button\"\n>\n\t<lu-icon icon=\"formatLink\" [alt]=\"intl.linksLabel\" />\n</button>\n","import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, createCommand, INSERT_PARAGRAPH_COMMAND, LexicalEditor, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { $handleListInsertParagraph, $insertList, $removeList, ListNode, ListType } from '@lexical/list';\nimport { $getNearestNodeOfType, mergeRegister } from '@lexical/utils';\nimport { getSelectedNode } from '../../utils';\n\nexport const FORMAT_LIST = createCommand<ListType>('FORMAT_LIST');\n\nexport function registerListsGlobal(editor: LexicalEditor) {\n\treturn mergeRegister(\n\t\teditor.registerCommand(\n\t\t\tFORMAT_LIST,\n\t\t\t(type) => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\t\tconst parent = $getNearestNodeOfType(node, ListNode);\n\t\t\t\t\tif (parent && parent.getListType() === type) {\n\t\t\t\t\t\t$removeList();\n\t\t\t\t\t} else if (parent) {\n\t\t\t\t\t\tparent.setListType(type);\n\t\t\t\t\t\teditor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$insertList(type);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tCOMMAND_PRIORITY_NORMAL,\n\t\t),\n\t\t// end list with enter key on an empty list item node\n\t\teditor.registerCommand(INSERT_PARAGRAPH_COMMAND, () => $handleListInsertParagraph(), COMMAND_PRIORITY_NORMAL),\n\t);\n}\n\nexport function registerListsSelectionChange(editor: LexicalEditor, type: ListType, onselectionchange: (isList: boolean) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst parent = $getNearestNodeOfType(node, ListNode);\n\t\t\t\tonselectionchange(Boolean(parent && parent.getListType() === type));\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, input, OnDestroy, signal, viewChild } from '@angular/core';\nimport { ListType } from '@lexical/list';\nimport { mergeRegister } from '@lexical/utils';\nimport { LuccaIcon } from '@lucca-front/icons';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { LexicalEditor } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { FORMAT_LIST, registerListsSelectionChange } from './list-format.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-list',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: 'list-format.component.html',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => ListFormatComponent),\n\t\t},\n\t],\n})\nexport class ListFormatComponent implements OnDestroy, RichTextPluginComponent {\n\tpublic format = input.required<ListType>();\n\tpublic icon = input.required<LuccaIcon>();\n\tpublic tooltip = input.required<string>();\n\n\tpublic element = viewChild('element', { read: ElementRef<HTMLButtonElement> });\n\n\tpublic tabindex = signal<number>(-1);\n\tpublic active = signal(false);\n\tpublic isDisabled = signal(false);\n\n\t#editor?: LexicalEditor;\n\n\t#registeredCommands: () => void = () => {};\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = mergeRegister(registerListsSelectionChange(editor, this.format(), (hasFormat) => this.active.set(hasFormat)));\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor?.dispatchCommand(FORMAT_LIST, this.format());\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n}\n","<button\n\t#element\n\tluButton=\"text\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[luTooltip]=\"tooltip()\"\n\tluTooltipOnlyForDisplay\n\t[attr.aria-pressed]=\"active()\"\n\t[attr.tabindex]=\"tabindex()\"\n\t[disabled]=\"isDisabled()\"\n\tclass=\"richTextField-toolbar-button\"\n>\n\t<lu-icon [icon]=\"icon()\" [alt]=\"tooltip()\" />\n</button>\n","import { ChangeDetectionStrategy, Component, forwardRef, OnDestroy, viewChildren } from '@angular/core';\nimport { mergeRegister } from '@lexical/utils';\nimport { Klass, LexicalEditor, LexicalNode } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { registerListsGlobal } from './list-format.command';\n\nimport { ListItemNode, ListNode } from '@lexical/list';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { ListFormatComponent } from './list-format.component';\n\n@Component({\n\tselector: 'lu-rich-text-toolbar-list-style',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: `list-style-toolbar.component.html`,\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t\trole: 'radiogroup',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => ListStyleToolbarComponent),\n\t\t},\n\t],\n\timports: [ListFormatComponent],\n})\nexport class ListStyleToolbarComponent implements OnDestroy, RichTextPluginComponent {\n\t#registeredCommands: () => void = () => {};\n\n\tpluginComponents = viewChildren(RICH_TEXT_PLUGIN_COMPONENT);\n\n\tintl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(editor));\n\t\tthis.#registeredCommands = mergeRegister(registerListsGlobal(editor));\n\t}\n\tgetLexicalNodes?(): Klass<LexicalNode>[] {\n\t\treturn [ListNode, ListItemNode];\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setDisabledState(isDisabled));\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n}\n","<lu-rich-text-plugin-list format=\"bullet\" [tooltip]=\"intl.listsBulletLabel\" icon=\"formatBulletedList\" />\n<lu-rich-text-plugin-list format=\"number\" [tooltip]=\"intl.listsNumberedLabel\" icon=\"formatNumberedList\" />\n","import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, LexicalEditor, SELECTION_CHANGE_COMMAND, TextFormatType } from 'lexical';\n\nexport function registerFormatSelectionChange(editor: LexicalEditor, format: TextFormatType, onselectionchange: (hasFormat: boolean) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tonselectionchange(selection.hasFormat(format));\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, input, OnDestroy, signal, viewChild } from '@angular/core';\nimport { LuccaIcon } from '@lucca-front/icons';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { FORMAT_TEXT_COMMAND, LexicalEditor, SELECTION_CHANGE_COMMAND, TextFormatType } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { registerFormatSelectionChange } from './text-style.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-text-style',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: './text-style.component.html',\n\tstyleUrl: './text-style.component.scss',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => TextStyleComponent),\n\t\t},\n\t],\n})\nexport class TextStyleComponent implements OnDestroy, RichTextPluginComponent {\n\tpublic format = input.required<TextFormatType>();\n\tpublic icon = input.required<LuccaIcon>();\n\tpublic tooltip = input.required<string>();\n\n\tpublic tabindex = signal<number>(-1);\n\tpublic active = signal(false);\n\tpublic isDisabled = signal(false);\n\n\tpublic element = viewChild('element', { read: ElementRef<HTMLButtonElement> });\n\n\t#editor?: LexicalEditor;\n\n\t#registeredCommands: () => void = () => {};\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = registerFormatSelectionChange(this.#editor, this.format(), (hasFormat) => this.active.set(hasFormat));\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor.dispatchCommand(FORMAT_TEXT_COMMAND, this.format());\n\t\t// force update selection\n\t\tthis.#editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n}\n","<button\n\t#element\n\tluButton=\"text\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[attr.aria-pressed]=\"active()\"\n\t[luTooltip]=\"tooltip()\"\n\tluTooltipOnlyForDisplay\n\t[attr.tabindex]=\"tabindex()\"\n\tclass=\"richTextField-toolbar-button\"\n\t[disabled]=\"isDisabled()\"\n>\n\t<lu-icon [icon]=\"icon()\" [alt]=\"tooltip()\" />\n</button>\n","import { ChangeDetectionStrategy, Component, forwardRef, viewChildren } from '@angular/core';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LexicalEditor } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { TextStyleComponent } from './text-style.component';\n\n@Component({\n\tselector: 'lu-rich-text-toolbar-text-style',\n\tstandalone: true,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: `text-style-toolbar.component.html`,\n\timports: [TextStyleComponent],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => TextStyleToolbarComponent),\n\t\t},\n\t],\n})\nexport class TextStyleToolbarComponent implements RichTextPluginComponent {\n\tpluginComponents = viewChildren(RICH_TEXT_PLUGIN_COMPONENT);\n\n\tintl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(editor));\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setDisabledState(isDisabled));\n\t}\n}\n","<lu-rich-text-plugin-text-style icon=\"formatTextBold\" [tooltip]=\"intl.stylesBold\" format=\"bold\" />\n<lu-rich-text-plugin-text-style icon=\"formatTextItalic\" [tooltip]=\"intl.stylesItalic\" format=\"italic\" />\n<lu-rich-text-plugin-text-style icon=\"formatTextUnderline\" [tooltip]=\"intl.stylesUnderline\" format=\"underline\" />\n<lu-rich-text-plugin-text-style icon=\"formatTextStrikethrough\" [tooltip]=\"intl.stylesStrikethrough\" format=\"strikethrough\" />\n","import { ChangeDetectionStrategy, Component, forwardRef, viewChildren } from '@angular/core';\nimport { Klass, LexicalEditor, LexicalNode } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { ClearFormatComponent } from '../clear-format';\nimport { HeadingsComponent } from '../headings';\nimport { LinkComponent } from '../link';\nimport { ListStyleToolbarComponent } from '../list-format';\nimport { TextStyleToolbarComponent } from '../text-style';\n\n@Component({\n\tselector: 'lu-rich-text-input-toolbar',\n\ttemplateUrl: 'toolbar.component.html',\n\tstyleUrl: 'toolbar.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [TextStyleToolbarComponent, ListStyleToolbarComponent, HeadingsComponent, LinkComponent, ClearFormatComponent],\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => RichTextInputToolbarComponent),\n\t\t},\n\t],\n})\nexport class RichTextInputToolbarComponent implements RichTextPluginComponent {\n\tpluginComponents = viewChildren(RICH_TEXT_PLUGIN_COMPONENT);\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(editor));\n\t}\n\n\tgetLexicalNodes(): Klass<LexicalNode>[] {\n\t\treturn this.pluginComponents().reduce((acc, plugin) => [...acc, ...(plugin.getLexicalNodes?.() || [])], [] as Klass<LexicalNode>[]);\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setDisabledState(isDisabled));\n\t}\n}\n","<div class=\"richTextField-toolbar-col\">\n\t<lu-rich-text-toolbar-text-style />\n\t<lu-rich-text-plugin-headings />\n\t<lu-rich-text-toolbar-list-style />\n\t<lu-rich-text-plugin-link />\n</div>\n<div class=\"richTextField-toolbar-col\">\n\t<lu-rich-text-plugin-clear-format />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lucca-front-ng-forms-rich-text-input.mjs","sources":["../../../packages/ng/forms/rich-text-input/formatters/rich-text-formatter.ts","../../../packages/ng/forms/rich-text-input/rich-text-input.component.ts","../../../packages/ng/forms/rich-text-input/rich-text-input.component.html","../../../packages/ng/forms/rich-text-input/translations.ts","../../../packages/ng/forms/rich-text-input/rich-text-input.translate.ts","../../../packages/ng/forms/rich-text-input/utils/lexical.utils.ts","../../../packages/ng/forms/rich-text-input/plugins/clear-format/clear-format.command.ts","../../../packages/ng/forms/rich-text-input/plugins/clear-format/clear-format.component.ts","../../../packages/ng/forms/rich-text-input/plugins/clear-format/clear-format.component.html","../../../packages/ng/forms/rich-text-input/plugins/headings/headings.command.ts","../../../packages/ng/forms/rich-text-input/plugins/headings/headings.component.ts","../../../packages/ng/forms/rich-text-input/plugins/headings/headings.component.html","../../../packages/ng/forms/rich-text-input/plugins/link/link-dialog/link-dialog.component.ts","../../../packages/ng/forms/rich-text-input/plugins/link/link-dialog/link-dialog.component.html","../../../packages/ng/forms/rich-text-input/plugins/link/link.command.ts","../../../packages/ng/forms/rich-text-input/plugins/link/link.component.ts","../../../packages/ng/forms/rich-text-input/plugins/link/link.component.html","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-format.command.ts","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-format.component.ts","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-format.component.html","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-style-toolbar.component.ts","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-style-toolbar.component.html","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style.command.ts","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style.component.ts","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style.component.html","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style-toolbar.component.ts","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style-toolbar.component.html","../../../packages/ng/forms/rich-text-input/plugins/toolbar/toolbar.component.ts","../../../packages/ng/forms/rich-text-input/plugins/toolbar/toolbar.component.html","../../../packages/ng/forms/rich-text-input/lucca-front-ng-forms-rich-text-input.ts"],"sourcesContent":["import { LexicalEditor } from 'lexical';\nimport { InjectionToken } from '@angular/core';\n\nexport abstract class RichTextFormatter {\n\tabstract parse(editor: LexicalEditor, text?: string | null): void;\n\tabstract format(editor: LexicalEditor): string;\n}\n\nclass NoopFormatter extends RichTextFormatter {\n\toverride parse(): void {\n\t\tthrow new Error('You must provide a RichTextFormatter');\n\t}\n\n\toverride format(): string {\n\t\tthrow new Error('You must provide a RichTextFormatter');\n\t}\n}\n\nexport const RICH_TEXT_FORMATTER = new InjectionToken<RichTextFormatter>('RICH_TEXT_FORMATTER', {\n\tfactory: () => new NoopFormatter(),\n});\n","import {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChildren,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tInjectionToken,\n\tinput,\n\tOnDestroy,\n\tOnInit,\n\tSignal,\n\tsignal,\n\tviewChild,\n\tViewEncapsulation,\n\tWritableSignal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { createEmptyHistoryState, registerHistory } from '@lexical/history';\nimport { registerRichText } from '@lexical/rich-text';\nimport { mergeRegister } from '@lexical/utils';\n\nimport { $canShowPlaceholderCurry } from '@lexical/text';\nimport { FormFieldComponent, InputDirective } from '@lucca-front/ng/form-field';\nimport { $getRoot, createEditor, Klass, LexicalEditor, LexicalNode } from 'lexical';\nimport { RICH_TEXT_FORMATTER, RichTextFormatter } from './formatters';\n\nconst INITIAL_UPDATE_TAG = 'initial-update';\n\nexport interface RichTextPluginComponent {\n\tsetEditorInstance(editor: LexicalEditor): void;\n\tgetLexicalNodes?(): Klass<LexicalNode>[];\n\tsetDisabledState(isDisabled: boolean): void;\n\n\t//embedded plugins\n\tpluginComponents?: Signal<readonly RichTextPluginComponent[]>;\n\n\t// accessibility\n\ttabindex?: WritableSignal<number>;\n\tfocus?(): void;\n}\n\nexport const RICH_TEXT_PLUGIN_COMPONENT = new InjectionToken<RichTextPluginComponent>('RichTextPlugin');\n\n@Component({\n\tselector: 'lu-rich-text-input',\n\tstandalone: true,\n\timports: [InputDirective],\n\ttemplateUrl: './rich-text-input.component.html',\n\tstyleUrl: './rich-text-input.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => RichTextInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RichTextInputComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\treadonly #richTextFormatter = inject<RichTextFormatter>(RICH_TEXT_FORMATTER);\n\treadonly #formField = inject(FormFieldComponent, { optional: true });\n\n\treadonly placeholder = input<string>('');\n\treadonly disableSpellcheck = input(false, { transform: booleanAttribute });\n\treadonly autoResize = input(false, { transform: booleanAttribute });\n\n\treadonly content = viewChild.required<string, ElementRef<HTMLElement>>('content', {\n\t\tread: ElementRef,\n\t});\n\treadonly pluginComponents = contentChildren(RICH_TEXT_PLUGIN_COMPONENT, { descendants: true });\n\n\treadonly currentCanShowPlaceholder = signal(false);\n\treadonly isDisabled = signal(false);\n\treadonly formFieldId = computed(() => this.#formField?.id());\n\n\treadonly #customNodes = computed(() =>\n\t\tthis.pluginComponents()\n\t\t\t.map((c) => c.getLexicalNodes?.() ?? [])\n\t\t\t.flat(),\n\t);\n\treadonly #allPlugins = computed(() => this.#flattenPlugins(this.pluginComponents()));\n\treadonly #isTouched = signal(false);\n\n\t#onChange?: (markdown: string | null) => void;\n\t#onTouch?: () => void;\n\t#cleanup?: () => void;\n\t#focusedPlugin: number = 0;\n\t#editor?: LexicalEditor;\n\n\tngOnInit(): void {\n\t\tthis.#editor = createEditor({\n\t\t\ttheme: {\n\t\t\t\ttext: {\n\t\t\t\t\tstrikethrough: 'u-textDecorationLineThrough',\n\t\t\t\t\tbold: 'u-fontWeightBold',\n\t\t\t\t\titalic: 'u-fontStyleItalic',\n\t\t\t\t\tunderline: 'u-textDecorationUnderline',\n\t\t\t\t},\n\t\t\t},\n\t\t\tnodes: [...this.#customNodes()],\n\t\t});\n\n\t\tthis.#cleanup = mergeRegister(\n\t\t\tregisterRichText(this.#editor),\n\t\t\tregisterHistory(this.#editor, createEmptyHistoryState(), 300),\n\t\t\tthis.#editor.registerUpdateListener(({ tags, dirtyElements }) => {\n\t\t\t\tif (!tags.has(INITIAL_UPDATE_TAG) && dirtyElements.size) {\n\t\t\t\t\tconst result = this.#richTextFormatter.format(this.#editor);\n\t\t\t\t\tthis.touch();\n\t\t\t\t\tthis.#onChange?.(result);\n\t\t\t\t}\n\t\t\t\tconst currentCanShowPlaceholder = this.#editor.getEditorState().read($canShowPlaceholderCurry(this.#editor.isComposing()));\n\t\t\t\tthis.currentCanShowPlaceholder.set(currentCanShowPlaceholder);\n\t\t\t}),\n\t\t);\n\t\tthis.#editor.setRootElement(this.content().nativeElement);\n\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(this.#editor));\n\n\t\tif (this.#allPlugins().length > 0) {\n\t\t\tthis.#allPlugins()[this.#focusedPlugin].tabindex.set(0);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.#cleanup?.();\n\t}\n\n\twriteValue(markdown: string | null): void {\n\t\tconst updateTags = ['skip-dom-selection', INITIAL_UPDATE_TAG];\n\t\tif (markdown) {\n\t\t\tthis.#editor?.update(\n\t\t\t\t() => {\n\t\t\t\t\tthis.#richTextFormatter.parse(this.#editor, markdown);\n\t\t\t\t},\n\t\t\t\t{ tag: updateTags },\n\t\t\t);\n\t\t} else if (!this.#editor?.getEditorState().isEmpty()) {\n\t\t\tthis.#editor.update(\n\t\t\t\t() => {\n\t\t\t\t\tconst root = $getRoot();\n\t\t\t\t\troot.clear();\n\t\t\t\t},\n\t\t\t\t{ tag: updateTags },\n\t\t\t);\n\t\t}\n\t}\n\n\tregisterOnChange(onChange: (markdown: string | null) => void): void {\n\t\tthis.#onChange = onChange;\n\t}\n\n\tregisterOnTouched(onTouch: () => void): void {\n\t\tthis.#onTouch = onTouch;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.#editor?.setEditable(!isDisabled);\n\t\tthis.isDisabled.set(isDisabled);\n\t\tthis.pluginComponents().forEach((c) => c.setDisabledState(isDisabled));\n\t}\n\n\tfocusSiblingPlugin(direction: -1 | 1) {\n\t\tconst plugins = this.#allPlugins();\n\n\t\tplugins[this.#focusedPlugin].tabindex.set(-1);\n\t\tthis.#focusedPlugin = this.#focusedPlugin + direction < 0 ? plugins.length - 1 : (this.#focusedPlugin + direction) % plugins.length;\n\t\tplugins[this.#focusedPlugin].tabindex.set(0);\n\t\tplugins[this.#focusedPlugin].focus();\n\t}\n\n\ttouch() {\n\t\tthis.#isTouched.set(true);\n\t\tthis.#onTouch?.();\n\t}\n\n\t#flattenPlugins(plugins: readonly RichTextPluginComponent[]): RichTextPluginComponent[] {\n\t\treturn plugins.flatMap((p) => {\n\t\t\tif (p.pluginComponents) {\n\t\t\t\treturn this.#flattenPlugins(p.pluginComponents());\n\t\t\t} else {\n\t\t\t\treturn p;\n\t\t\t}\n\t\t});\n\t}\n}\n","<div class=\"richTextField\" [class.is-disabled]=\"isDisabled()\" [class.mod-autoResize]=\"autoResize()\">\n\t<div\n\t\t#content\n\t\tluInput\n\t\tclass=\"richTextField-content textFlow\"\n\t\trole=\"textbox\"\n\t\t[attr.contenteditable]=\"!isDisabled()\"\n\t\t[attr.aria-disabled]=\"isDisabled()\"\n\t\t[attr.aria-placeholder]=\"currentCanShowPlaceholder() ? placeholder() : null\"\n\t\t[attr.aria-labelledby]=\"formFieldId() + '-label'\"\n\t\t[attr.spellcheck]=\"!disableSpellcheck()\"\n\t\t(blur)=\"touch()\"\n\t></div>\n\t@if (currentCanShowPlaceholder()) {\n\t\t<div aria-hidden=\"true\" class=\"richTextField-content-placeholder\">{{ placeholder() }}</div>\n\t}\n\t<div\n\t\tclass=\"richTextField-toolbar\"\n\t\t(keydown.arrowleft)=\"$event.preventDefault(); focusSiblingPlugin(-1)\"\n\t\t(keydown.arrowRight)=\"$event.preventDefault(); focusSiblingPlugin(1)\"\n\t\trole=\"toolbar\"\n\t\t[attr.aria-labelledby]=\"formFieldId() + '-label'\"\n\t\t[attr.aria-controls]=\"formFieldId()\"\n\t>\n\t\t<ng-content />\n\t</div>\n</div>\n","export const Translations = {\n\ten: {\n\t\tclearFormat: 'Delete formatting',\n\t\tlinksCancel: 'Cancel',\n\t\tlinksDelete: 'Delete link',\n\t\tlinksHref: 'Web address',\n\t\tlinksLabel: 'Link',\n\t\tlinksSubmit: 'Confirm',\n\t\tlistsNumberedLabel: 'Numbered list',\n\t\tlistsBulletLabel: 'Bulleted list',\n\t\theadingsLabel: 'Heading level',\n\t\theadings0: 'Paragraph',\n\t\theadings1: 'Level 1 Title',\n\t\theadings2: 'Level 2 title',\n\t\theadings3: 'Level 3 Title',\n\t\theadings4: 'Level 4 Title',\n\t\theadings5: 'Level 5 Title',\n\t\theadings6: 'Level 6 Title',\n\t\tstylesItalic: 'Italic',\n\t\tstylesBold: 'Bold',\n\t\tstylesUnderline: 'Underline',\n\t\tstylesStrikethrough: 'Strikethrough',\n\t\tlinksPlaceholder: 'https://www.siteName.com',\n\t},\n\tde: {\n\t\tclearFormat: 'Formatierung löschen',\n\t\tlinksCancel: 'Stornieren',\n\t\tlinksDelete: 'Link löschen',\n\t\tlinksHref: 'Webadresse',\n\t\tlinksLabel: 'Einen Link hinzufügen',\n\t\tlinksSubmit: 'Bestätigen',\n\t\tlistsNumberedLabel: 'Nummernliste',\n\t\tlistsBulletLabel: 'Punkteliste',\n\t\theadingsLabel: 'Ebene des Titels',\n\t\theadings0: 'Absatz',\n\t\theadings1: 'Titel der Stufe 1',\n\t\theadings2: 'Titel der Stufe 2',\n\t\theadings3: 'Titel der Stufe 3',\n\t\theadings4: 'Titel der Stufe 4',\n\t\theadings5: 'Titel der Stufe 5',\n\t\theadings6: 'Titel der Stufe 6',\n\t\tstylesItalic: 'Kursiv',\n\t\tstylesBold: 'Fettdruck',\n\t\tstylesUnderline: 'Unterstrichen',\n\t\tstylesStrikethrough: 'Durchgestrichen',\n\t\tlinksPlaceholder: 'https://www.nameDerSeite.com',\n\t},\n\tfr: {\n\t\tclearFormat: 'Effacer la mise en forme',\n\t\tlinksCancel: 'Annuler',\n\t\tlinksDelete: 'Supprimer le lien',\n\t\tlinksHref: 'Adresse web',\n\t\tlinksLabel: 'Lien',\n\t\tlinksSubmit: 'Valider',\n\t\tlistsNumberedLabel: 'Liste numérotée',\n\t\tlistsBulletLabel: 'Liste à puces',\n\t\theadingsLabel: 'Niveau de titre',\n\t\theadings0: 'Paragraphe',\n\t\theadings1: 'Titre de niveau 1',\n\t\theadings2: 'Titre de niveau 2',\n\t\theadings3: 'Titre de niveau 3',\n\t\theadings4: 'Titre de niveau 4',\n\t\theadings5: 'Titre de niveau 5',\n\t\theadings6: 'Titre de niveau 6',\n\t\tstylesItalic: 'Italique',\n\t\tstylesBold: 'Gras',\n\t\tstylesUnderline: 'Souligné',\n\t\tstylesStrikethrough: 'Barré',\n\t\tlinksPlaceholder: 'https://www.nomDuSite.com',\n\t},\n\tit: {\n\t\tclearFormat: 'Eliminare la formattazione',\n\t\tlinksCancel: 'Annullare',\n\t\tlinksDelete: 'Eliminare il link',\n\t\tlinksHref: 'Indirizzo web',\n\t\tlinksLabel: 'Aggiungere un link',\n\t\tlinksSubmit: 'Convalidare',\n\t\tlistsNumberedLabel: 'Elenco numerato',\n\t\tlistsBulletLabel: 'Elenco puntato',\n\t\theadingsLabel: 'Livello del titolo',\n\t\theadings0: 'Paragrafo',\n\t\theadings1: 'Qualifica di livello 1',\n\t\theadings2: 'Qualifica di livello 2',\n\t\theadings3: 'Qualifica di livello 3',\n\t\theadings4: 'Qualifica di livello 4',\n\t\theadings5: 'Qualifica di livello 5',\n\t\theadings6: 'Qualifica di livello 6',\n\t\tstylesItalic: 'Corsivo',\n\t\tstylesBold: 'Grassetto',\n\t\tstylesUnderline: 'Sottolineato',\n\t\tstylesStrikethrough: 'Barrato',\n\t\tlinksPlaceholder: 'https://www.nomeDelSito.com',\n\t},\n\tnl: {\n\t\tclearFormat: 'Opmaak verwijderen',\n\t\tlinksCancel: 'Annuleren',\n\t\tlinksDelete: 'Link verwijderen',\n\t\tlinksHref: 'Webadres',\n\t\tlinksLabel: 'Een link toevoegen',\n\t\tlinksSubmit: 'Valideren',\n\t\tlistsNumberedLabel: 'Genummerde lijst',\n\t\tlistsBulletLabel: 'Lijst met opsommingstekens',\n\t\theadingsLabel: 'Titel niveau',\n\t\theadings0: 'Paragraaf',\n\t\theadings1: 'Kwalificatie op niveau 1',\n\t\theadings2: 'Kwalificatie op niveau 2',\n\t\theadings3: 'Kwalificatie op niveau 3',\n\t\theadings4: 'Kwalificatie op niveau 4',\n\t\theadings5: 'Kwalificatie op niveau 5',\n\t\theadings6: 'Kwalificatie op niveau 6',\n\t\tstylesItalic: 'Cursief',\n\t\tstylesBold: 'Vet',\n\t\tstylesUnderline: 'Onderstreept',\n\t\tstylesStrikethrough: 'Doorgehaald',\n\t\tlinksPlaceholder: 'https://www.siteNaam.com',\n\t},\n\t'nl-BE': {\n\t\tclearFormat: 'Opmaak verwijderen',\n\t\tlinksCancel: 'Annuleren',\n\t\tlinksDelete: 'Link verwijderen',\n\t\tlinksHref: 'Webadres',\n\t\tlinksLabel: 'Een link toevoegen',\n\t\tlinksSubmit: 'Valideren',\n\t\tlistsNumberedLabel: 'Genummerde lijst',\n\t\tlistsBulletLabel: 'Lijst met opsommingstekens',\n\t\theadingsLabel: 'Titel niveau',\n\t\theadings0: 'Paragraaf',\n\t\theadings1: 'Kwalificatie op niveau 1',\n\t\theadings2: 'Kwalificatie op niveau 2',\n\t\theadings3: 'Kwalificatie op niveau 3',\n\t\theadings4: 'Kwalificatie op niveau 4',\n\t\theadings5: 'Kwalificatie op niveau 5',\n\t\theadings6: 'Kwalificatie op niveau 6',\n\t\tstylesItalic: 'Cursief',\n\t\tstylesBold: 'Vet',\n\t\tstylesUnderline: 'Onderstreept',\n\t\tstylesStrikethrough: 'Doorgehaald',\n\t\tlinksPlaceholder: 'https://www.siteNaam.com',\n\t},\n\tes: {\n\t\tclearFormat: 'Borrar formato',\n\t\tlinksCancel: 'Cancelar',\n\t\tlinksDelete: 'Eliminar el enlace',\n\t\tlinksHref: 'Dirección web',\n\t\tlinksLabel: 'Añadir un enlace',\n\t\tlinksSubmit: 'Validar',\n\t\tlistsNumberedLabel: 'Lista numerada',\n\t\tlistsBulletLabel: 'Lista de viñetas',\n\t\theadingsLabel: 'Nivel del título',\n\t\theadings0: 'Apartado',\n\t\theadings1: 'Cualificación de nivel 1',\n\t\theadings2: 'Cualificación de nivel 2',\n\t\theadings3: 'Cualificación de nivel 3',\n\t\theadings4: 'Cualificación de nivel 4',\n\t\theadings5: 'Cualificación de nivel 5',\n\t\theadings6: 'Cualificación de nivel 6',\n\t\tstylesItalic: 'Cursiva',\n\t\tstylesBold: 'Negrita',\n\t\tstylesUnderline: 'Subrayado',\n\t\tstylesStrikethrough: 'Tachado',\n\t\tlinksPlaceholder: 'https://www.nombreDelSitio.com',\n\t},\n\tpt: {\n\t\tclearFormat: 'Eliminar a formatação',\n\t\tlinksCancel: 'Cancelar',\n\t\tlinksDelete: 'Eliminar a ligação',\n\t\tlinksHref: 'Endereço do sítio Web',\n\t\tlinksLabel: 'Ligação',\n\t\tlinksSubmit: 'Confirmar',\n\t\tlistsNumberedLabel: 'Lista numerada',\n\t\tlistsBulletLabel: 'Lista com marcadores',\n\t\theadingsLabel: 'Nível do título',\n\t\theadings0: 'Parágrafo',\n\t\theadings1: 'Qualificação de nível 1',\n\t\theadings2: 'Qualificação de nível 2',\n\t\theadings3: 'Qualificação de nível 3',\n\t\theadings4: 'Qualificação de nível 4',\n\t\theadings5: 'Qualificação de nível 5',\n\t\theadings6: 'Qualificação de nível 6',\n\t\tstylesItalic: 'Itálico',\n\t\tstylesBold: 'Gordura',\n\t\tstylesUnderline: 'Sublinhado',\n\t\tstylesStrikethrough: 'Barré',\n\t\tlinksPlaceholder: 'https://www.nomeDoSitio.com/',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_RICH_TEXT_INPUT_TRANSLATIONS = new InjectionToken('LuRichTextInputTranslations', {\n\tfactory: () => luRichTextInputTranslations,\n});\n\nexport interface ILuRichTextInputLabel {\n\tclearFormat: string;\n\n\tlinksCancel: string;\n\tlinksDelete: string;\n\tlinksHref: string;\n\tlinksLabel: string;\n\tlinksSubmit: string;\n\tlinksPlaceholder: string;\n\n\tlistsNumberedLabel: string;\n\tlistsBulletLabel: string;\n\n\theadingsLabel: string;\n\theadings0: string;\n\theadings1: string;\n\theadings2: string;\n\theadings3: string;\n\theadings4: string;\n\theadings5: string;\n\theadings6: string;\n\n\tstylesItalic: string;\n\tstylesBold: string;\n\tstylesUnderline: string;\n\tstylesStrikethrough: string;\n}\n\nexport const luRichTextInputTranslations: LuTranslation<ILuRichTextInputLabel> = Translations;\n","import { $createTextNode, ElementNode, LexicalNode, RangeSelection, TextNode } from 'lexical';\nimport { $isAtNodeEnd } from '@lexical/selection';\n\n/**\n * Cut a single text node into:\n * - A shorter text node\n * - A new node created by the replacer\n * - The remaining text in a new text node\n *\n * Returns the new node created by the replacer.\n */\nexport function replaceTextNodeContentPartWith<TNode extends LexicalNode>(textNode: TextNode, fromIndex: number, toIndex: number, replacer: (text: string) => TNode): TNode {\n\tconst safeFrom = Math.min(toIndex, fromIndex);\n\tconst safeTo = Math.max(toIndex, fromIndex);\n\tconst text = textNode.getTextContent();\n\tconst beforeText = text.slice(0, safeFrom);\n\tconst betweenText = text.slice(safeFrom, safeTo);\n\tconst afterText = text.slice(safeTo);\n\n\t// 1. Shorten the original text node\n\ttextNode.setTextContent(beforeText);\n\n\t// 2. Create the new node\n\tconst betweenNode = replacer(betweenText);\n\ttextNode.insertAfter(betweenNode);\n\n\t// 3. Add the remaining text\n\tconst afterNode = $createTextNode(afterText);\n\tafterNode.setStyle(textNode.getStyle());\n\tafterNode.setFormat(textNode.getFormat());\n\tbetweenNode.insertAfter(afterNode);\n\n\treturn betweenNode;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nexport function getSelectedNode(selection: RangeSelection): TextNode | ElementNode {\n\tconst anchor = selection.anchor;\n\tconst focus = selection.focus;\n\tconst anchorNode = selection.anchor.getNode();\n\tconst focusNode = selection.focus.getNode();\n\tif (anchorNode === focusNode) {\n\t\treturn anchorNode;\n\t}\n\tconst isBackward = selection.isBackward();\n\tif (isBackward) {\n\t\treturn $isAtNodeEnd(focus) ? anchorNode : focusNode;\n\t} else {\n\t\treturn $isAtNodeEnd(anchor) ? anchorNode : focusNode;\n\t}\n}\n","import { $createParagraphNode, $createTextNode, $getSelection, $isRangeSelection, $isTextNode, COMMAND_PRIORITY_NORMAL, createCommand, LexicalEditor } from 'lexical';\nimport { $setBlocksType } from '@lexical/selection';\nimport { replaceTextNodeContentPartWith } from '../../utils';\n\nexport const CLEAR_FORMAT = createCommand<void>('CLEAR_FORMAT');\n\nexport function registerClearFormat(editor: LexicalEditor) {\n\treturn editor.registerCommand(\n\t\tCLEAR_FORMAT,\n\t\t() => {\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\n\t\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\t\tconst { anchor, focus } = selection;\n\n\t\t\t\t\tselection.getNodes().forEach((node) => {\n\t\t\t\t\t\tif ($isTextNode(node)) {\n\t\t\t\t\t\t\t// use selection offsets if within current node\n\t\t\t\t\t\t\tconst start = node.getKey() === anchor.key ? anchor.offset : 0;\n\t\t\t\t\t\t\tconst end = node.getKey() === focus.key ? focus.offset : node.getTextContent().length;\n\t\t\t\t\t\t\tif (start === end) {\n\t\t\t\t\t\t\t\tnode.setFormat(0);\n\t\t\t\t\t\t\t\tnode.setStyle('');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treplaceTextNodeContentPartWith(node, start, end, (text) => $createTextNode(text));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t$setBlocksType(selection, () => $createParagraphNode());\n\t\t\t});\n\n\t\t\treturn true;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, OnDestroy, signal, viewChild } from '@angular/core';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { LexicalEditor } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { CLEAR_FORMAT, registerClearFormat } from './clear-format.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-clear-format',\n\ttemplateUrl: 'clear-format.component.html',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => ClearFormatComponent),\n\t\t},\n\t],\n})\nexport class ClearFormatComponent implements RichTextPluginComponent, OnDestroy {\n\t#editor?: LexicalEditor;\n\t#registeredCommands: () => void = () => {};\n\n\treadonly intl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\treadonly element = viewChild('element', { read: ElementRef<HTMLButtonElement> });\n\n\treadonly tabindex = signal<number>(-1);\n\treadonly isDisabled = signal(false);\n\n\tsetEditorInstance(editor: LexicalEditor) {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = registerClearFormat(editor);\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor.dispatchCommand(CLEAR_FORMAT, undefined);\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n}\n","<button\n\t#element\n\tluButton=\"text\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[luTooltip]=\"intl.clearFormat\"\n\tluTooltipOnlyForDisplay\n\t[attr.tabindex]=\"tabindex()\"\n\t[disabled]=\"isDisabled()\"\n\tclass=\"richTextField-toolbar-button\"\n>\n\t<lu-icon icon=\"formatClear\" [alt]=\"intl.clearFormat\" />\n</button>\n","import { $createParagraphNode, $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, CommandPayloadType, createCommand, LexicalEditor, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { $setBlocksType } from '@lexical/selection';\nimport { $createHeadingNode, HeadingNode } from '@lexical/rich-text';\nimport { $getNearestNodeOfType } from '@lexical/utils';\nimport { getSelectedNode } from '../../utils';\n\nexport const FORMAT_HEADINGS = createCommand<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'paragraph'>('FORMAT_HEADINGS');\n\nexport function registerHeadings(editor: LexicalEditor) {\n\treturn editor.registerCommand(\n\t\tFORMAT_HEADINGS,\n\t\t(headingSize) => {\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\t$setBlocksType(selection, () => {\n\t\t\t\t\tif (headingSize === 'paragraph') {\n\t\t\t\t\t\treturn $createParagraphNode();\n\t\t\t\t\t}\n\t\t\t\t\treturn $createHeadingNode(headingSize);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn true;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n\nexport function registerHeadingsSelectionChange(editor: LexicalEditor, onselectionchange: (type: CommandPayloadType<typeof FORMAT_HEADINGS>) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst element = $getNearestNodeOfType(node, HeadingNode);\n\t\t\t\tconst type = element ? element.getTag() : 'paragraph';\n\t\t\t\tonselectionchange(type as CommandPayloadType<typeof FORMAT_HEADINGS>);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, forwardRef, inject, input, OnDestroy, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { mergeRegister } from '@lexical/utils';\nimport { LuOptionDirective } from '@lucca-front/ng/core-select';\nimport { FormFieldComponent } from '@lucca-front/ng/form-field';\nimport { LuSimpleSelectInputComponent } from '@lucca-front/ng/simple-select';\nimport { CommandPayloadType, Klass, LexicalEditor, LexicalNode } from 'lexical';\nimport { filter } from 'rxjs';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\n\nimport { HeadingNode } from '@lexical/rich-text';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { FORMAT_HEADINGS, registerHeadings, registerHeadingsSelectionChange } from './headings.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-headings',\n\ttemplateUrl: './headings.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [LuSimpleSelectInputComponent, FormFieldComponent, ReactiveFormsModule, LuOptionDirective],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => HeadingsComponent),\n\t\t},\n\t],\n})\nexport class HeadingsComponent implements OnDestroy, RichTextPluginComponent {\n\treadonly #destroyRef = inject(DestroyRef);\n\n\treadonly element = viewChild<LuSimpleSelectInputComponent<string>>('selectRef');\n\n\treadonly tabindex = signal<number>(-1);\n\treadonly maxHeadingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(6);\n\treadonly headingOptions = computed<CommandPayloadType<typeof FORMAT_HEADINGS>[]>(\n\t\t() => Object.keys(this.headingLabels).slice(0, this.maxHeadingLevel() + 1) as CommandPayloadType<typeof FORMAT_HEADINGS>[],\n\t);\n\n\treadonly intl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\treadonly headingLabels: Record<CommandPayloadType<typeof FORMAT_HEADINGS>, [string, number]> = {\n\t\tparagraph: [this.intl.headings0, 0],\n\t\th1: [this.intl.headings1, 1],\n\t\th2: [this.intl.headings2, 2],\n\t\th3: [this.intl.headings3, 3],\n\t\th4: [this.intl.headings4, 4],\n\t\th5: [this.intl.headings5, 5],\n\t\th6: [this.intl.headings6, 6],\n\t};\n\treadonly formControl = new FormControl<CommandPayloadType<typeof FORMAT_HEADINGS> | null>('paragraph');\n\n\t#registeredCommands: () => void = () => {};\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.#registeredCommands = mergeRegister(\n\t\t\tregisterHeadings(editor),\n\t\t\tregisterHeadingsSelectionChange(editor, (value) => this.formControl.setValue(value, { emitEvent: false })),\n\t\t);\n\t\tthis.formControl.valueChanges.pipe(takeUntilDestroyed(this.#destroyRef), filter(Boolean)).subscribe((heading) => editor.dispatchCommand(FORMAT_HEADINGS, heading));\n\t}\n\n\tgetLexicalNodes(): Klass<LexicalNode>[] {\n\t\treturn [HeadingNode];\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tfocus() {\n\t\tthis.element().focusInput();\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tif (isDisabled) {\n\t\t\tthis.formControl.disable();\n\t\t} else {\n\t\t\tthis.formControl.enable();\n\t\t}\n\t}\n}\n","<lu-form-field [label]=\"intl.headingsLabel\" size=\"S\" hiddenLabel class=\"mod-width20\">\n\t<lu-simple-select [options]=\"headingOptions()\" [formControl]=\"formControl\" #selectRef [inputTabindex]=\"tabindex()\">\n\t\t<ng-container *luOption=\"let heading; select: selectRef\">{{ headingLabels[heading][0] }}</ng-container>\n\t</lu-simple-select>\n</lu-form-field>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { DialogComponent, DialogContentComponent, DialogDismissDirective, DialogFooterComponent, injectDialogData, injectDialogRef } from '@lucca-front/ng/dialog';\nimport { FormFieldComponent } from '@lucca-front/ng/form-field';\nimport { TextInputComponent } from '@lucca-front/ng/forms';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../../rich-text-input.translate';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-link-dialog',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: 'link-dialog.component.html',\n\timports: [DialogComponent, DialogContentComponent, DialogFooterComponent, FormFieldComponent, TextInputComponent, ReactiveFormsModule, ButtonComponent, DialogDismissDirective],\n})\nexport class LinkDialogComponent {\n\tpublic readonly dialogData = injectDialogData<string>();\n\tpublic readonly dialogRef = injectDialogRef<string | undefined>();\n\n\tintl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\tpublic readonly formGroup = new FormGroup({\n\t\thref: new FormControl<string>(this.dialogData, Validators.required),\n\t});\n\n\tpublic save() {\n\t\tif (this.formGroup.invalid) {\n\t\t\tthis.formGroup.markAllAsTouched();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.dialogRef.close(encodeURI(this.formGroup.controls.href.value.trim()));\n\t}\n\n\tpublic deleteLink() {\n\t\tthis.dialogRef.close(undefined);\n\t}\n}\n","<lu-dialog>\n\t<form class=\"dialog-form\" (submit)=\"save()\" [formGroup]=\"formGroup\">\n\t\t<lu-dialog-content>\n\t\t\t<lu-form-field [label]=\"intl.linksHref\">\n\t\t\t\t<lu-text-input formControlName=\"href\" type=\"url\" [placeholder]=\"intl.linksPlaceholder\" />\n\t\t\t</lu-form-field>\n\t\t</lu-dialog-content>\n\t\t<lu-dialog-footer>\n\t\t\t@if (dialogData) {\n\t\t\t\t<div class=\"footer-content\">\n\t\t\t\t\t<button type=\"button\" luButton=\"text\" delete (click)=\"deleteLink()\">{{ intl.linksDelete }}</button>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t<div class=\"footer-actions\">\n\t\t\t\t<button type=\"submit\" luButton>{{ intl.linksSubmit }}</button>\n\t\t\t\t<button type=\"button\" luButton=\"text\" luDialogDismiss>{{ intl.linksCancel }}</button>\n\t\t\t</div>\n\t\t</lu-dialog-footer>\n\t</form>\n</lu-dialog>\n","import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, createCommand, LexicalEditor, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { $createLinkNode, $isLinkNode, $toggleLink, AutoLinkNode, LinkNode } from '@lexical/link';\nimport { $getNearestNodeOfType } from '@lexical/utils';\nimport { getSelectedNode } from '../../utils';\n\nexport const FORMAT_LINK = createCommand<string | undefined>('FORMAT_LINK');\n\nexport function registerLink(editor: LexicalEditor) {\n\treturn editor.registerCommand(\n\t\tFORMAT_LINK,\n\t\t(href) => {\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\t\tconst parent = $getNearestNodeOfType(node, LinkNode) || $getNearestNodeOfType(node, AutoLinkNode);\n\t\t\t\t\tif (parent) {\n\t\t\t\t\t\tif (href) {\n\t\t\t\t\t\t\tconst linkNode = $createLinkNode(href, {\n\t\t\t\t\t\t\t\trel: parent.__rel,\n\t\t\t\t\t\t\t\ttarget: parent.__target,\n\t\t\t\t\t\t\t\ttitle: parent.__title,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tparent.replace(linkNode, true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$toggleLink(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (href) {\n\t\t\t\t\t\t$toggleLink(href);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn true;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n\nexport function registerLinkSelectionChange(editor: LexicalEditor, onselectionchange: (isLink: boolean) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst parent = node.getParent();\n\t\t\t\tonselectionchange($isLinkNode(node) || $isLinkNode(parent));\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, inject, OnDestroy, signal, viewChild } from '@angular/core';\nimport { AutoLinkNode, LinkNode } from '@lexical/link';\nimport { $getNearestNodeOfType, mergeRegister } from '@lexical/utils';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LuDialogService, provideLuDialog } from '@lucca-front/ng/dialog';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { $getSelection, $isRangeSelection, Klass, LexicalEditor, LexicalNode, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { getSelectedNode } from '../../utils';\nimport { LinkDialogComponent } from './link-dialog';\nimport { FORMAT_LINK, registerLink, registerLinkSelectionChange } from './link.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-link',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: './link.component.html',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\tprovideLuDialog(),\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => LinkComponent),\n\t\t},\n\t],\n})\nexport class LinkComponent implements OnDestroy, RichTextPluginComponent {\n\treadonly #luDialogService = inject(LuDialogService);\n\n\treadonly element = viewChild('element', { read: ElementRef<HTMLButtonElement> });\n\n\treadonly tabindex = signal<number>(-1);\n\treadonly active = signal(false);\n\treadonly isDisabled = signal(false);\n\n\t#editor?: LexicalEditor;\n\tintl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\t#registeredCommands: () => void = () => {};\n\n\tsetEditorInstance(editor: LexicalEditor) {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = mergeRegister(\n\t\t\tregisterLink(editor),\n\t\t\tregisterLinkSelectionChange(editor, (isLink) => this.active.set(isLink)),\n\t\t);\n\t}\n\n\tgetLexicalNodes(): Klass<LexicalNode>[] {\n\t\treturn [LinkNode, AutoLinkNode];\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor?.read(() => {\n\t\t\tlet url = '';\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst parent = $getNearestNodeOfType(node, LinkNode);\n\t\t\t\tif (parent) {\n\t\t\t\t\turl = parent.getURL();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.#luDialogService\n\t\t\t\t.open({\n\t\t\t\t\tcontent: LinkDialogComponent,\n\t\t\t\t\tsize: 'S',\n\t\t\t\t\tdata: url,\n\t\t\t\t})\n\t\t\t\t.result$.subscribe((href) => {\n\t\t\t\t\tlet newHref = href;\n\t\t\t\t\tif (href && !href.startsWith('http')) {\n\t\t\t\t\t\tnewHref = `https://${href}`;\n\t\t\t\t\t}\n\t\t\t\t\tthis.#editor.dispatchCommand(FORMAT_LINK, newHref);\n\t\t\t\t\tthis.#editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n\t\t\t\t});\n\t\t});\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n}\n","<button\n\t#element\n\tluButton=\"text\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[luTooltip]=\"intl.linksLabel\"\n\t[attr.aria-pressed]=\"active()\"\n\tluTooltipOnlyForDisplay\n\t[attr.tabindex]=\"tabindex()\"\n\t[disabled]=\"isDisabled()\"\n\tclass=\"richTextField-toolbar-button\"\n>\n\t<lu-icon icon=\"formatLink\" [alt]=\"intl.linksLabel\" />\n</button>\n","import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, createCommand, INSERT_PARAGRAPH_COMMAND, LexicalEditor, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { $handleListInsertParagraph, $insertList, $removeList, ListNode, ListType } from '@lexical/list';\nimport { $getNearestNodeOfType, mergeRegister } from '@lexical/utils';\nimport { getSelectedNode } from '../../utils';\n\nexport const FORMAT_LIST = createCommand<ListType>('FORMAT_LIST');\n\nexport function registerListsGlobal(editor: LexicalEditor) {\n\treturn mergeRegister(\n\t\teditor.registerCommand(\n\t\t\tFORMAT_LIST,\n\t\t\t(type) => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\t\tconst parent = $getNearestNodeOfType(node, ListNode);\n\t\t\t\t\tif (parent && parent.getListType() === type) {\n\t\t\t\t\t\t$removeList();\n\t\t\t\t\t} else if (parent) {\n\t\t\t\t\t\tparent.setListType(type);\n\t\t\t\t\t\teditor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$insertList(type);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tCOMMAND_PRIORITY_NORMAL,\n\t\t),\n\t\t// end list with enter key on an empty list item node\n\t\teditor.registerCommand(INSERT_PARAGRAPH_COMMAND, () => $handleListInsertParagraph(), COMMAND_PRIORITY_NORMAL),\n\t);\n}\n\nexport function registerListsSelectionChange(editor: LexicalEditor, type: ListType, onselectionchange: (isList: boolean) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst parent = $getNearestNodeOfType(node, ListNode);\n\t\t\t\tonselectionchange(Boolean(parent && parent.getListType() === type));\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, input, OnDestroy, signal, viewChild } from '@angular/core';\nimport { ListType } from '@lexical/list';\nimport { mergeRegister } from '@lexical/utils';\nimport { LuccaIcon } from '@lucca-front/icons';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { LexicalEditor } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { FORMAT_LIST, registerListsSelectionChange } from './list-format.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-list',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: 'list-format.component.html',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => ListFormatComponent),\n\t\t},\n\t],\n})\nexport class ListFormatComponent implements OnDestroy, RichTextPluginComponent {\n\tpublic format = input.required<ListType>();\n\tpublic icon = input.required<LuccaIcon>();\n\tpublic tooltip = input.required<string>();\n\n\tpublic element = viewChild('element', { read: ElementRef<HTMLButtonElement> });\n\n\tpublic tabindex = signal<number>(-1);\n\tpublic active = signal(false);\n\tpublic isDisabled = signal(false);\n\n\t#editor?: LexicalEditor;\n\n\t#registeredCommands: () => void = () => {};\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = mergeRegister(registerListsSelectionChange(editor, this.format(), (hasFormat) => this.active.set(hasFormat)));\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor?.dispatchCommand(FORMAT_LIST, this.format());\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n}\n","<button\n\t#element\n\tluButton=\"text\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[luTooltip]=\"tooltip()\"\n\tluTooltipOnlyForDisplay\n\t[attr.aria-pressed]=\"active()\"\n\t[attr.tabindex]=\"tabindex()\"\n\t[disabled]=\"isDisabled()\"\n\tclass=\"richTextField-toolbar-button\"\n>\n\t<lu-icon [icon]=\"icon()\" [alt]=\"tooltip()\" />\n</button>\n","import { ChangeDetectionStrategy, Component, forwardRef, OnDestroy, viewChildren } from '@angular/core';\nimport { mergeRegister } from '@lexical/utils';\nimport { Klass, LexicalEditor, LexicalNode } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { registerListsGlobal } from './list-format.command';\n\nimport { ListItemNode, ListNode } from '@lexical/list';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { ListFormatComponent } from './list-format.component';\n\n@Component({\n\tselector: 'lu-rich-text-toolbar-list-style',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: `list-style-toolbar.component.html`,\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t\trole: 'radiogroup',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => ListStyleToolbarComponent),\n\t\t},\n\t],\n\timports: [ListFormatComponent],\n})\nexport class ListStyleToolbarComponent implements OnDestroy, RichTextPluginComponent {\n\t#registeredCommands: () => void = () => {};\n\n\tpluginComponents = viewChildren(RICH_TEXT_PLUGIN_COMPONENT);\n\n\tintl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(editor));\n\t\tthis.#registeredCommands = mergeRegister(registerListsGlobal(editor));\n\t}\n\tgetLexicalNodes?(): Klass<LexicalNode>[] {\n\t\treturn [ListNode, ListItemNode];\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setDisabledState(isDisabled));\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n}\n","<lu-rich-text-plugin-list format=\"bullet\" [tooltip]=\"intl.listsBulletLabel\" icon=\"formatBulletedList\" />\n<lu-rich-text-plugin-list format=\"number\" [tooltip]=\"intl.listsNumberedLabel\" icon=\"formatNumberedList\" />\n","import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, LexicalEditor, SELECTION_CHANGE_COMMAND, TextFormatType } from 'lexical';\n\nexport function registerFormatSelectionChange(editor: LexicalEditor, format: TextFormatType, onselectionchange: (hasFormat: boolean) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tonselectionchange(selection.hasFormat(format));\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, input, OnDestroy, signal, viewChild } from '@angular/core';\nimport { LuccaIcon } from '@lucca-front/icons';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { FORMAT_TEXT_COMMAND, LexicalEditor, SELECTION_CHANGE_COMMAND, TextFormatType } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { registerFormatSelectionChange } from './text-style.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-text-style',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: './text-style.component.html',\n\tstyleUrl: './text-style.component.scss',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => TextStyleComponent),\n\t\t},\n\t],\n})\nexport class TextStyleComponent implements OnDestroy, RichTextPluginComponent {\n\tpublic format = input.required<TextFormatType>();\n\tpublic icon = input.required<LuccaIcon>();\n\tpublic tooltip = input.required<string>();\n\n\tpublic tabindex = signal<number>(-1);\n\tpublic active = signal(false);\n\tpublic isDisabled = signal(false);\n\n\tpublic element = viewChild('element', { read: ElementRef<HTMLButtonElement> });\n\n\t#editor?: LexicalEditor;\n\n\t#registeredCommands: () => void = () => {};\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = registerFormatSelectionChange(this.#editor, this.format(), (hasFormat) => this.active.set(hasFormat));\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor.dispatchCommand(FORMAT_TEXT_COMMAND, this.format());\n\t\t// force update selection\n\t\tthis.#editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n}\n","<button\n\t#element\n\tluButton=\"text\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[attr.aria-pressed]=\"active()\"\n\t[luTooltip]=\"tooltip()\"\n\tluTooltipOnlyForDisplay\n\t[attr.tabindex]=\"tabindex()\"\n\tclass=\"richTextField-toolbar-button\"\n\t[disabled]=\"isDisabled()\"\n>\n\t<lu-icon [icon]=\"icon()\" [alt]=\"tooltip()\" />\n</button>\n","import { ChangeDetectionStrategy, Component, forwardRef, viewChildren } from '@angular/core';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LexicalEditor } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { TextStyleComponent } from './text-style.component';\n\n@Component({\n\tselector: 'lu-rich-text-toolbar-text-style',\n\tstandalone: true,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: `text-style-toolbar.component.html`,\n\timports: [TextStyleComponent],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => TextStyleToolbarComponent),\n\t\t},\n\t],\n})\nexport class TextStyleToolbarComponent implements RichTextPluginComponent {\n\tpluginComponents = viewChildren(RICH_TEXT_PLUGIN_COMPONENT);\n\n\tintl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(editor));\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setDisabledState(isDisabled));\n\t}\n}\n","<lu-rich-text-plugin-text-style icon=\"formatTextBold\" [tooltip]=\"intl.stylesBold\" format=\"bold\" />\n<lu-rich-text-plugin-text-style icon=\"formatTextItalic\" [tooltip]=\"intl.stylesItalic\" format=\"italic\" />\n<lu-rich-text-plugin-text-style icon=\"formatTextUnderline\" [tooltip]=\"intl.stylesUnderline\" format=\"underline\" />\n<lu-rich-text-plugin-text-style icon=\"formatTextStrikethrough\" [tooltip]=\"intl.stylesStrikethrough\" format=\"strikethrough\" />\n","import { ChangeDetectionStrategy, Component, forwardRef, viewChildren } from '@angular/core';\nimport { Klass, LexicalEditor, LexicalNode } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { ClearFormatComponent } from '../clear-format';\nimport { HeadingsComponent } from '../headings';\nimport { LinkComponent } from '../link';\nimport { ListStyleToolbarComponent } from '../list-format';\nimport { TextStyleToolbarComponent } from '../text-style';\n\n@Component({\n\tselector: 'lu-rich-text-input-toolbar',\n\ttemplateUrl: 'toolbar.component.html',\n\tstyleUrl: 'toolbar.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [TextStyleToolbarComponent, ListStyleToolbarComponent, HeadingsComponent, LinkComponent, ClearFormatComponent],\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => RichTextInputToolbarComponent),\n\t\t},\n\t],\n})\nexport class RichTextInputToolbarComponent implements RichTextPluginComponent {\n\tpluginComponents = viewChildren(RICH_TEXT_PLUGIN_COMPONENT);\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(editor));\n\t}\n\n\tgetLexicalNodes(): Klass<LexicalNode>[] {\n\t\treturn this.pluginComponents().reduce((acc, plugin) => [...acc, ...(plugin.getLexicalNodes?.() || [])], [] as Klass<LexicalNode>[]);\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setDisabledState(isDisabled));\n\t}\n}\n","<div class=\"richTextField-toolbar-col\">\n\t<lu-rich-text-toolbar-text-style />\n\t<lu-rich-text-plugin-headings />\n\t<lu-rich-text-toolbar-list-style />\n\t<lu-rich-text-plugin-link />\n</div>\n<div class=\"richTextField-toolbar-col\">\n\t<lu-rich-text-plugin-clear-format />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -437,6 +437,7 @@ class NumberFormatInputComponent {
|
|
|
437
437
|
this.max = input(undefined);
|
|
438
438
|
this.placeholder = input('');
|
|
439
439
|
this.hasClearer = input(false, { transform: booleanAttribute });
|
|
440
|
+
this.valueAlignRight = input(false, { transform: booleanAttribute });
|
|
440
441
|
this.inputElementRef = viewChild('inputElement');
|
|
441
442
|
this.#suffixPrefixValue = signal(1);
|
|
442
443
|
this.#numberFormat = computed(() => new NumberFormat(this.formatOptions()));
|
|
@@ -490,11 +491,11 @@ class NumberFormatInputComponent {
|
|
|
490
491
|
this.inputElementRef().nativeElement.focus();
|
|
491
492
|
}
|
|
492
493
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: NumberFormatInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
493
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.2", type: NumberFormatInputComponent, isStandalone: true, selector: "lu-number-format-input", inputs: { formatStyle: { classPropertyName: "formatStyle", publicName: "formatStyle", isSignal: true, isRequired: false, transformFunction: null }, useAutoPrefixSuffix: { classPropertyName: "useAutoPrefixSuffix", publicName: "useAutoPrefixSuffix", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, currency: { classPropertyName: "currency", publicName: "currency", isSignal: true, isRequired: false, transformFunction: null }, currencyDisplay: { classPropertyName: "currencyDisplay", publicName: "currencyDisplay", isSignal: true, isRequired: false, transformFunction: null }, unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null }, unitDisplay: { classPropertyName: "unitDisplay", publicName: "unitDisplay", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, hasClearer: { classPropertyName: "hasClearer", publicName: "hasClearer", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], hostDirectives: [{ directive: NoopValueAccessorDirective }], ngImport: i0, template: "<div class=\"textField\">\n\t<ng-template #addon let-addon=\"addon\" let-type=\"type\">\n\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\" *ngIf=\"addon.content\">\n\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\">{{ addon.content }}</span>\n\t\t</span>\n\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\" *ngIf=\"addon.icon\">\n\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\"\n\t\t\t\t><span class=\"lucca-icon icon-{{ addon.icon }}\"></span\n\t\t\t></span>\n\t\t</span>\n\t</ng-template>\n\n\t@if (prefixAddon()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'prefix',\n\t\t\t\t\taddon: prefixAddon(),\n\t\t\t\t}\n\t\t\t\"\n\t\t/>\n\t}\n\t@if (suffixAddon()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'suffix',\n\t\t\t\t\taddon: suffixAddon(),\n\t\t\t\t}\n\t\t\t\"\n\t\t/>\n\t}\n\n\t<div class=\"textField-input\">\n\t\t<input\n\t\t\tluInput\n\t\t\tluNumberFormatInput\n\t\t\t[formatOptions]=\"formatOptions()\"\n\t\t\t[min]=\"min()\"\n\t\t\t[max]=\"max()\"\n\t\t\ttype=\"text\"\n\t\t\tinputmode=\"decimal\"\n\t\t\tclass=\"textField-input-value\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[formControl]=\"ngControl.control\"\n\t\t\t#inputElement\n\t\t/>\n\t\t<div class=\"textField-input-affix\">\n\t\t\t<button class=\"textField-input-affix-clear clear\" type=\"button\" (click)=\"clearValue()\" *ngIf=\"hasClearer() && inputElement.value\">\n\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-signClose\"></span>\n\t\t\t\t<span class=\"u-mask\">{{ intl.clear }}</span>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n</div>\n", dependencies: [{ kind: "directive", type: InputDirective, selector: "[luInput]", inputs: ["luInputStandalone"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: FormFieldIdDirective, selector: "[luFormFieldId]", inputs: ["luFormFieldId", "labelledByStrategy"] }, { kind: "directive", type: NumberFormatDirective, selector: "input[luNumberFormatInput]", inputs: ["formatOptions"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
494
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.2", type: NumberFormatInputComponent, isStandalone: true, selector: "lu-number-format-input", inputs: { formatStyle: { classPropertyName: "formatStyle", publicName: "formatStyle", isSignal: true, isRequired: false, transformFunction: null }, useAutoPrefixSuffix: { classPropertyName: "useAutoPrefixSuffix", publicName: "useAutoPrefixSuffix", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, currency: { classPropertyName: "currency", publicName: "currency", isSignal: true, isRequired: false, transformFunction: null }, currencyDisplay: { classPropertyName: "currencyDisplay", publicName: "currencyDisplay", isSignal: true, isRequired: false, transformFunction: null }, unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null }, unitDisplay: { classPropertyName: "unitDisplay", publicName: "unitDisplay", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, hasClearer: { classPropertyName: "hasClearer", publicName: "hasClearer", isSignal: true, isRequired: false, transformFunction: null }, valueAlignRight: { classPropertyName: "valueAlignRight", publicName: "valueAlignRight", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], hostDirectives: [{ directive: NoopValueAccessorDirective }], ngImport: i0, template: "<div class=\"textField\" [class.mod-valueAlignRight]=\"valueAlignRight()\">\n\t<ng-template #addon let-addon=\"addon\" let-type=\"type\">\n\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\" *ngIf=\"addon.content\">\n\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\">{{ addon.content }}</span>\n\t\t</span>\n\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\" *ngIf=\"addon.icon\">\n\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\"\n\t\t\t\t><span class=\"lucca-icon icon-{{ addon.icon }}\"></span\n\t\t\t></span>\n\t\t</span>\n\t</ng-template>\n\n\t@if (prefixAddon()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'prefix',\n\t\t\t\t\taddon: prefixAddon(),\n\t\t\t\t}\n\t\t\t\"\n\t\t/>\n\t}\n\t@if (suffixAddon()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'suffix',\n\t\t\t\t\taddon: suffixAddon(),\n\t\t\t\t}\n\t\t\t\"\n\t\t/>\n\t}\n\n\t<div class=\"textField-input\">\n\t\t<input\n\t\t\tluInput\n\t\t\tluNumberFormatInput\n\t\t\t[formatOptions]=\"formatOptions()\"\n\t\t\t[min]=\"min()\"\n\t\t\t[max]=\"max()\"\n\t\t\ttype=\"text\"\n\t\t\tinputmode=\"decimal\"\n\t\t\tclass=\"textField-input-value\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[formControl]=\"ngControl.control\"\n\t\t\t#inputElement\n\t\t/>\n\t\t<div class=\"textField-input-affix\">\n\t\t\t<button class=\"textField-input-affix-clear clear\" type=\"button\" (click)=\"clearValue()\" *ngIf=\"hasClearer() && inputElement.value\">\n\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-signClose\"></span>\n\t\t\t\t<span class=\"u-mask\">{{ intl.clear }}</span>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n</div>\n", dependencies: [{ kind: "directive", type: InputDirective, selector: "[luInput]", inputs: ["luInputStandalone"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: FormFieldIdDirective, selector: "[luFormFieldId]", inputs: ["luFormFieldId", "labelledByStrategy"] }, { kind: "directive", type: NumberFormatDirective, selector: "input[luNumberFormatInput]", inputs: ["formatOptions"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
494
495
|
}
|
|
495
496
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: NumberFormatInputComponent, decorators: [{
|
|
496
497
|
type: Component,
|
|
497
|
-
args: [{ selector: 'lu-number-format-input', standalone: true, imports: [FormFieldComponent, InputDirective, NgIf, ReactiveFormsModule, FormFieldIdDirective, NumberFormatDirective, NgTemplateOutlet], hostDirectives: [NoopValueAccessorDirective], encapsulation: ViewEncapsulation.None, template: "<div class=\"textField\">\n\t<ng-template #addon let-addon=\"addon\" let-type=\"type\">\n\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\" *ngIf=\"addon.content\">\n\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\">{{ addon.content }}</span>\n\t\t</span>\n\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\" *ngIf=\"addon.icon\">\n\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\"\n\t\t\t\t><span class=\"lucca-icon icon-{{ addon.icon }}\"></span\n\t\t\t></span>\n\t\t</span>\n\t</ng-template>\n\n\t@if (prefixAddon()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'prefix',\n\t\t\t\t\taddon: prefixAddon(),\n\t\t\t\t}\n\t\t\t\"\n\t\t/>\n\t}\n\t@if (suffixAddon()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'suffix',\n\t\t\t\t\taddon: suffixAddon(),\n\t\t\t\t}\n\t\t\t\"\n\t\t/>\n\t}\n\n\t<div class=\"textField-input\">\n\t\t<input\n\t\t\tluInput\n\t\t\tluNumberFormatInput\n\t\t\t[formatOptions]=\"formatOptions()\"\n\t\t\t[min]=\"min()\"\n\t\t\t[max]=\"max()\"\n\t\t\ttype=\"text\"\n\t\t\tinputmode=\"decimal\"\n\t\t\tclass=\"textField-input-value\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[formControl]=\"ngControl.control\"\n\t\t\t#inputElement\n\t\t/>\n\t\t<div class=\"textField-input-affix\">\n\t\t\t<button class=\"textField-input-affix-clear clear\" type=\"button\" (click)=\"clearValue()\" *ngIf=\"hasClearer() && inputElement.value\">\n\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-signClose\"></span>\n\t\t\t\t<span class=\"u-mask\">{{ intl.clear }}</span>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n</div>\n" }]
|
|
498
|
+
args: [{ selector: 'lu-number-format-input', standalone: true, imports: [FormFieldComponent, InputDirective, NgIf, ReactiveFormsModule, FormFieldIdDirective, NumberFormatDirective, NgTemplateOutlet], hostDirectives: [NoopValueAccessorDirective], encapsulation: ViewEncapsulation.None, template: "<div class=\"textField\" [class.mod-valueAlignRight]=\"valueAlignRight()\">\n\t<ng-template #addon let-addon=\"addon\" let-type=\"type\">\n\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\" *ngIf=\"addon.content\">\n\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\">{{ addon.content }}</span>\n\t\t</span>\n\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\" *ngIf=\"addon.icon\">\n\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\"\n\t\t\t\t><span class=\"lucca-icon icon-{{ addon.icon }}\"></span\n\t\t\t></span>\n\t\t</span>\n\t</ng-template>\n\n\t@if (prefixAddon()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'prefix',\n\t\t\t\t\taddon: prefixAddon(),\n\t\t\t\t}\n\t\t\t\"\n\t\t/>\n\t}\n\t@if (suffixAddon()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'suffix',\n\t\t\t\t\taddon: suffixAddon(),\n\t\t\t\t}\n\t\t\t\"\n\t\t/>\n\t}\n\n\t<div class=\"textField-input\">\n\t\t<input\n\t\t\tluInput\n\t\t\tluNumberFormatInput\n\t\t\t[formatOptions]=\"formatOptions()\"\n\t\t\t[min]=\"min()\"\n\t\t\t[max]=\"max()\"\n\t\t\ttype=\"text\"\n\t\t\tinputmode=\"decimal\"\n\t\t\tclass=\"textField-input-value\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[formControl]=\"ngControl.control\"\n\t\t\t#inputElement\n\t\t/>\n\t\t<div class=\"textField-input-affix\">\n\t\t\t<button class=\"textField-input-affix-clear clear\" type=\"button\" (click)=\"clearValue()\" *ngIf=\"hasClearer() && inputElement.value\">\n\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-signClose\"></span>\n\t\t\t\t<span class=\"u-mask\">{{ intl.clear }}</span>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n</div>\n" }]
|
|
498
499
|
}] });
|
|
499
500
|
|
|
500
501
|
const Translations = {
|
|
@@ -541,6 +542,7 @@ class NumberInputComponent {
|
|
|
541
542
|
this.suffix = input();
|
|
542
543
|
this.min = input();
|
|
543
544
|
this.max = input();
|
|
545
|
+
this.valueAlignRight = input(false, { transform: booleanAttribute });
|
|
544
546
|
this.intl = getIntl(LU_NUMBERFIELD_TRANSLATIONS);
|
|
545
547
|
}
|
|
546
548
|
clearValue() {
|
|
@@ -548,11 +550,11 @@ class NumberInputComponent {
|
|
|
548
550
|
this.inputElementRef().nativeElement.focus();
|
|
549
551
|
}
|
|
550
552
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
551
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.2", type: NumberInputComponent, isStandalone: true, selector: "lu-number-input", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, noSpinButtons: { classPropertyName: "noSpinButtons", publicName: "noSpinButtons", isSignal: true, isRequired: false, transformFunction: null }, hasClearer: { classPropertyName: "hasClearer", publicName: "hasClearer", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], hostDirectives: [{ directive: NoopValueAccessorDirective }], ngImport: i0, template: "<div class=\"textField\">\n\t<ng-template #addon let-addon=\"addon\" let-type=\"type\">\n\t\t@if (addon.content) {\n\t\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\">\n\t\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\">{{ addon.content }}</span>\n\t\t\t</span>\n\t\t}\n\t\t@if (addon.icon) {\n\t\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\">\n\t\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\"\n\t\t\t\t\t><span class=\"lucca-icon icon-{{ addon.icon }}\"></span\n\t\t\t\t></span>\n\t\t\t</span>\n\t\t}\n\t</ng-template>\n\n\t@if (prefix()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'prefix',\n\t\t\t\t\taddon: prefix(),\n\t\t\t\t}\n\t\t\t\"\n\t\t>\n\t\t</ng-container>\n\t}\n\t@if (suffix()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'suffix',\n\t\t\t\t\taddon: suffix(),\n\t\t\t\t}\n\t\t\t\"\n\t\t>\n\t\t</ng-container>\n\t}\n\n\t<div class=\"textField-input\">\n\t\t<input\n\t\t\tluInput\n\t\t\ttype=\"number\"\n\t\t\tclass=\"textField-input-value\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[formControl]=\"ngControl.control\"\n\t\t\t[step]=\"step()\"\n\t\t\t[min]=\"min()\"\n\t\t\t[max]=\"max()\"\n\t\t\t[class.u-noSpinButtons]=\"noSpinButtons()\"\n\t\t\t#inputElement\n\t\t/>\n\t\t<div class=\"textField-input-affix\">\n\t\t\t@if (hasClearer() && inputElement.value) {\n\t\t\t\t<button class=\"textField-input-affix-clear clear\" type=\"button\" (click)=\"clearValue()\">\n\t\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-signClose\"></span>\n\t\t\t\t\t<span class=\"u-mask\">{{ intl.clear }}</span>\n\t\t\t\t</button>\n\t\t\t}\n\t\t</div>\n\t</div>\n</div>\n", dependencies: [{ kind: "directive", type: InputDirective, selector: "[luInput]", inputs: ["luInputStandalone"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: FormFieldIdDirective, selector: "[luFormFieldId]", inputs: ["luFormFieldId", "labelledByStrategy"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
553
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.2", type: NumberInputComponent, isStandalone: true, selector: "lu-number-input", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, noSpinButtons: { classPropertyName: "noSpinButtons", publicName: "noSpinButtons", isSignal: true, isRequired: false, transformFunction: null }, hasClearer: { classPropertyName: "hasClearer", publicName: "hasClearer", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, valueAlignRight: { classPropertyName: "valueAlignRight", publicName: "valueAlignRight", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], hostDirectives: [{ directive: NoopValueAccessorDirective }], ngImport: i0, template: "<div class=\"textField\" [class.mod-valueAlignRight]=\"valueAlignRight()\">\n\t<ng-template #addon let-addon=\"addon\" let-type=\"type\">\n\t\t@if (addon.content) {\n\t\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\">\n\t\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\">{{ addon.content }}</span>\n\t\t\t</span>\n\t\t}\n\t\t@if (addon.icon) {\n\t\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\">\n\t\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\"\n\t\t\t\t\t><span class=\"lucca-icon icon-{{ addon.icon }}\"></span\n\t\t\t\t></span>\n\t\t\t</span>\n\t\t}\n\t</ng-template>\n\n\t@if (prefix()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'prefix',\n\t\t\t\t\taddon: prefix(),\n\t\t\t\t}\n\t\t\t\"\n\t\t>\n\t\t</ng-container>\n\t}\n\t@if (suffix()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'suffix',\n\t\t\t\t\taddon: suffix(),\n\t\t\t\t}\n\t\t\t\"\n\t\t>\n\t\t</ng-container>\n\t}\n\n\t<div class=\"textField-input\">\n\t\t<input\n\t\t\tluInput\n\t\t\ttype=\"number\"\n\t\t\tclass=\"textField-input-value\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[formControl]=\"ngControl.control\"\n\t\t\t[step]=\"step()\"\n\t\t\t[min]=\"min()\"\n\t\t\t[max]=\"max()\"\n\t\t\t[class.u-noSpinButtons]=\"noSpinButtons()\"\n\t\t\t#inputElement\n\t\t/>\n\t\t<div class=\"textField-input-affix\">\n\t\t\t@if (hasClearer() && inputElement.value) {\n\t\t\t\t<button class=\"textField-input-affix-clear clear\" type=\"button\" (click)=\"clearValue()\">\n\t\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-signClose\"></span>\n\t\t\t\t\t<span class=\"u-mask\">{{ intl.clear }}</span>\n\t\t\t\t</button>\n\t\t\t}\n\t\t</div>\n\t</div>\n</div>\n", dependencies: [{ kind: "directive", type: InputDirective, selector: "[luInput]", inputs: ["luInputStandalone"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: FormFieldIdDirective, selector: "[luFormFieldId]", inputs: ["luFormFieldId", "labelledByStrategy"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
552
554
|
}
|
|
553
555
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: NumberInputComponent, decorators: [{
|
|
554
556
|
type: Component,
|
|
555
|
-
args: [{ selector: 'lu-number-input', standalone: true, imports: [InputDirective, ReactiveFormsModule, FormFieldIdDirective, NgTemplateOutlet], hostDirectives: [NoopValueAccessorDirective], encapsulation: ViewEncapsulation.None, template: "<div class=\"textField\">\n\t<ng-template #addon let-addon=\"addon\" let-type=\"type\">\n\t\t@if (addon.content) {\n\t\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\">\n\t\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\">{{ addon.content }}</span>\n\t\t\t</span>\n\t\t}\n\t\t@if (addon.icon) {\n\t\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\">\n\t\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\"\n\t\t\t\t\t><span class=\"lucca-icon icon-{{ addon.icon }}\"></span\n\t\t\t\t></span>\n\t\t\t</span>\n\t\t}\n\t</ng-template>\n\n\t@if (prefix()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'prefix',\n\t\t\t\t\taddon: prefix(),\n\t\t\t\t}\n\t\t\t\"\n\t\t>\n\t\t</ng-container>\n\t}\n\t@if (suffix()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'suffix',\n\t\t\t\t\taddon: suffix(),\n\t\t\t\t}\n\t\t\t\"\n\t\t>\n\t\t</ng-container>\n\t}\n\n\t<div class=\"textField-input\">\n\t\t<input\n\t\t\tluInput\n\t\t\ttype=\"number\"\n\t\t\tclass=\"textField-input-value\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[formControl]=\"ngControl.control\"\n\t\t\t[step]=\"step()\"\n\t\t\t[min]=\"min()\"\n\t\t\t[max]=\"max()\"\n\t\t\t[class.u-noSpinButtons]=\"noSpinButtons()\"\n\t\t\t#inputElement\n\t\t/>\n\t\t<div class=\"textField-input-affix\">\n\t\t\t@if (hasClearer() && inputElement.value) {\n\t\t\t\t<button class=\"textField-input-affix-clear clear\" type=\"button\" (click)=\"clearValue()\">\n\t\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-signClose\"></span>\n\t\t\t\t\t<span class=\"u-mask\">{{ intl.clear }}</span>\n\t\t\t\t</button>\n\t\t\t}\n\t\t</div>\n\t</div>\n</div>\n" }]
|
|
557
|
+
args: [{ selector: 'lu-number-input', standalone: true, imports: [InputDirective, ReactiveFormsModule, FormFieldIdDirective, NgTemplateOutlet], hostDirectives: [NoopValueAccessorDirective], encapsulation: ViewEncapsulation.None, template: "<div class=\"textField\" [class.mod-valueAlignRight]=\"valueAlignRight()\">\n\t<ng-template #addon let-addon=\"addon\" let-type=\"type\">\n\t\t@if (addon.content) {\n\t\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\">\n\t\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\">{{ addon.content }}</span>\n\t\t\t</span>\n\t\t}\n\t\t@if (addon.icon) {\n\t\t\t<span class=\"textField-{{ type }}\" luFormFieldId=\"{{ type }}\">\n\t\t\t\t<span class=\"textField-label-{{ type }}-item\" [attr.aria-label]=\"addon.ariaLabel\"\n\t\t\t\t\t><span class=\"lucca-icon icon-{{ addon.icon }}\"></span\n\t\t\t\t></span>\n\t\t\t</span>\n\t\t}\n\t</ng-template>\n\n\t@if (prefix()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'prefix',\n\t\t\t\t\taddon: prefix(),\n\t\t\t\t}\n\t\t\t\"\n\t\t>\n\t\t</ng-container>\n\t}\n\t@if (suffix()) {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\taddon;\n\t\t\t\tcontext: {\n\t\t\t\t\ttype: 'suffix',\n\t\t\t\t\taddon: suffix(),\n\t\t\t\t}\n\t\t\t\"\n\t\t>\n\t\t</ng-container>\n\t}\n\n\t<div class=\"textField-input\">\n\t\t<input\n\t\t\tluInput\n\t\t\ttype=\"number\"\n\t\t\tclass=\"textField-input-value\"\n\t\t\t[placeholder]=\"placeholder()\"\n\t\t\t[formControl]=\"ngControl.control\"\n\t\t\t[step]=\"step()\"\n\t\t\t[min]=\"min()\"\n\t\t\t[max]=\"max()\"\n\t\t\t[class.u-noSpinButtons]=\"noSpinButtons()\"\n\t\t\t#inputElement\n\t\t/>\n\t\t<div class=\"textField-input-affix\">\n\t\t\t@if (hasClearer() && inputElement.value) {\n\t\t\t\t<button class=\"textField-input-affix-clear clear\" type=\"button\" (click)=\"clearValue()\">\n\t\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-signClose\"></span>\n\t\t\t\t\t<span class=\"u-mask\">{{ intl.clear }}</span>\n\t\t\t\t</button>\n\t\t\t}\n\t\t</div>\n\t</div>\n</div>\n" }]
|
|
556
558
|
}] });
|
|
557
559
|
|
|
558
560
|
const RADIO_GROUP_INSTANCE = new InjectionToken('RADIO_GROUP_INSTANCE');
|