@lucca-front/ng 21.0.0 → 21.0.1
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/fesm2022/lucca-front-ng-box.mjs +4 -2
- package/fesm2022/lucca-front-ng-box.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs +23 -2
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs +57 -10
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +1 -22
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-loading.mjs.map +1 -1
- package/package.json +3 -19
- package/schematics/alignment-utilities/index.js +21 -0
- package/schematics/alignment-utilities/migration.spec.js +50 -0
- package/schematics/alignment-utilities/schema.json +23 -0
- package/schematics/collection.json +10 -0
- package/schematics/component-path/index.js +22 -0
- package/schematics/component-path/migration.spec.js +50 -0
- package/schematics/component-path/schema.json +23 -0
- package/schematics/lib/component-mapper.js +54 -0
- package/schematics/lib/css-mapper.js +9 -32
- package/schematics/lib/html-ast.js +1 -1
- package/schematics/lib/schematic.utils.js +29 -0
- package/schematics/palettes/index.js +4 -2
- package/types/lucca-front-ng-box.d.ts +2 -1
- package/types/lucca-front-ng-forms-rich-text-input-formatters-markdown.d.ts +11 -2
- package/types/lucca-front-ng-forms-rich-text-input-formatters-plain-text.d.ts +18 -6
- package/types/lucca-front-ng-forms-rich-text-input.d.ts +36 -12
- package/types/lucca-front-ng-loading.d.ts +4 -1
- package/fesm2022/lucca-front-ng-scrollBox.mjs +0 -6
- package/fesm2022/lucca-front-ng-scrollBox.mjs.map +0 -1
- package/fesm2022/lucca-front-ng-segmentedControl.mjs +0 -6
- package/fesm2022/lucca-front-ng-segmentedControl.mjs.map +0 -1
- package/fesm2022/lucca-front-ng-segmentedControlTabs.mjs +0 -6
- package/fesm2022/lucca-front-ng-segmentedControlTabs.mjs.map +0 -1
- package/fesm2022/lucca-front-ng-statusBadge.mjs +0 -6
- package/fesm2022/lucca-front-ng-statusBadge.mjs.map +0 -1
- package/types/lucca-front-ng-scrollBox.d.ts +0 -1
- package/types/lucca-front-ng-segmentedControl.d.ts +0 -1
- package/types/lucca-front-ng-segmentedControlTabs.d.ts +0 -1
- package/types/lucca-front-ng-statusBadge.d.ts +0 -1
|
@@ -8,9 +8,10 @@ class BoxComponent {
|
|
|
8
8
|
this.toggle = input(false, { ...(ngDevMode ? { debugName: "toggle" } : {}), transform: booleanAttribute });
|
|
9
9
|
this.neutral = input(false, { ...(ngDevMode ? { debugName: "neutral" } : {}), transform: booleanAttribute });
|
|
10
10
|
this.killable = input(false, { ...(ngDevMode ? { debugName: "killable" } : {}), transform: booleanAttribute });
|
|
11
|
+
this.withArrow = input(false, { ...(ngDevMode ? { debugName: "withArrow" } : {}), transform: booleanAttribute });
|
|
11
12
|
}
|
|
12
13
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: BoxComponent, isStandalone: true, selector: "lu-box", inputs: { toggle: { classPropertyName: "toggle", publicName: "toggle", isSignal: true, isRequired: false, transformFunction: null }, neutral: { classPropertyName: "neutral", publicName: "neutral", isSignal: true, isRequired: false, transformFunction: null }, killable: { classPropertyName: "killable", publicName: "killable", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.mod-toggle": "toggle()", "class.mod-neutral": "neutral()" }, classAttribute: "box" }, ngImport: i0, template: "@if (killable()) {\n\t<div class=\"box-close\">\n\t\t<button luButton=\"ghost\" type=\"button\">\n\t\t\t<lu-icon icon=\"signClose\" alt=\"Close\" />\n\t\t</button>\n\t</div>\n}\n<ng-content />\n", styles: ["@layer components{.box{--components-box-background: var(--pr-t-elevation-surface-raised);--components-box-margin: 0 0 var(--pr-t-spacings-200);--components-box-padding: var(--pr-t-spacings-300);--components-box-borderRadius: var(--pr-t-border-radius-structure);--components-box-toggle-arrow-size: .8rem;--components-box-toggle-arrow-left: 2.5rem;border-radius:var(--components-box-borderRadius);padding:var(--components-box-padding);background-color:var(--components-box-background, var(--pr-t-elevation-surface-raised));display:block;position:relative}.box-close{position:absolute;font-size:var(--pr-t-font-body-M-fontSize);inset-inline-end:var(--pr-t-spacings-50);inset-block-start:var(--pr-t-spacings-50);z-index:1}}@layer mods{.box.mod-neutral,.box.mod-grey{--components-box-background: var(--palettes-neutral-25)}.box.mod-withArrow{--components-box-padding: var(--pr-t-spacings-200);--components-box-borderRadius: var(--pr-t-border-radius-small) var(--pr-t-border-radius-structure) var(--pr-t-border-radius-structure)}.box.mod-withArrow .box-arrow{--components-box-arrow-bottom: 100%;--components-box-arrow-left: var(--pr-t-spacings-75)}.box.mod-toggle{margin-block-start:var(--components-box-toggle-arrow-size)}.box.mod-toggle:before{inset-inline-start:var(--components-box-toggle-arrow-left);border-color:transparent;border-style:solid;border-width:var(--components-box-toggle-arrow-size);border-block-end-color:var(--components-box-background, var(--pr-t-elevation-surface-raised));border-block-start:0;block-size:0;inset-block-end:100%;inline-size:0;position:absolute;content:\"\"}}@layer components{.box-arrow{--components-box-arrow-background: var(--pr-t-elevation-surface-raised);--components-box-arrow-left: 0;--components-box-arrow-bottom: 0;background-color:var(--components-box-arrow-background);margin-block:0;margin-inline:var(--pr-t-spacings-50);inline-size:12px;block-size:8px;clip-path:path(\"M4.66415 0.494638C5.43093 -0.164881 6.56907 -0.164879 7.33586 0.49464L12 8H0L4.66415 0.494638Z\");position:absolute;inset-block-end:var(--components-box-arrow-bottom);inset-inline-start:var(--components-box-arrow-left)}.box-arrow.mod-neutral,.box-arrow.mod-grey{--components-box-arrow-background: var(--palettes-neutral-25)}}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "lu-icon", inputs: ["icon", "alt", "size", "color", "AI"] }, { kind: "component", type: ButtonComponent, selector: "button[luButton],a[luButton]", inputs: ["size", "block", "critical", "delete", "disclosure", "palette", "state", "luButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
14
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: BoxComponent, isStandalone: true, selector: "lu-box", inputs: { toggle: { classPropertyName: "toggle", publicName: "toggle", isSignal: true, isRequired: false, transformFunction: null }, neutral: { classPropertyName: "neutral", publicName: "neutral", isSignal: true, isRequired: false, transformFunction: null }, killable: { classPropertyName: "killable", publicName: "killable", isSignal: true, isRequired: false, transformFunction: null }, withArrow: { classPropertyName: "withArrow", publicName: "withArrow", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.mod-toggle": "toggle()", "class.mod-neutral": "neutral()", "class.mod-withArrow": "withArrow()" }, classAttribute: "box" }, ngImport: i0, template: "@if (killable()) {\n\t<div class=\"box-close\">\n\t\t<button luButton=\"ghost\" type=\"button\">\n\t\t\t<lu-icon icon=\"signClose\" alt=\"Close\" />\n\t\t</button>\n\t</div>\n}\n<ng-content />\n", styles: ["@layer components{.box{--components-box-background: var(--pr-t-elevation-surface-raised);--components-box-margin: 0 0 var(--pr-t-spacings-200);--components-box-padding: var(--pr-t-spacings-300);--components-box-borderRadius: var(--pr-t-border-radius-structure);--components-box-toggle-arrow-size: .8rem;--components-box-toggle-arrow-left: 2.5rem;border-radius:var(--components-box-borderRadius);padding:var(--components-box-padding);background-color:var(--components-box-background, var(--pr-t-elevation-surface-raised));display:block;position:relative}.box-close{position:absolute;font-size:var(--pr-t-font-body-M-fontSize);inset-inline-end:var(--pr-t-spacings-50);inset-block-start:var(--pr-t-spacings-50);z-index:1}}@layer mods{.box.mod-neutral,.box.mod-grey{--components-box-background: var(--palettes-neutral-25)}.box.mod-withArrow{--components-box-padding: var(--pr-t-spacings-200);--components-box-borderRadius: var(--pr-t-border-radius-small) var(--pr-t-border-radius-structure) var(--pr-t-border-radius-structure)}.box.mod-withArrow .box-arrow{--components-box-arrow-bottom: 100%;--components-box-arrow-left: var(--pr-t-spacings-75)}.box.mod-toggle{margin-block-start:var(--components-box-toggle-arrow-size)}.box.mod-toggle:before{inset-inline-start:var(--components-box-toggle-arrow-left);border-color:transparent;border-style:solid;border-width:var(--components-box-toggle-arrow-size);border-block-end-color:var(--components-box-background, var(--pr-t-elevation-surface-raised));border-block-start:0;block-size:0;inset-block-end:100%;inline-size:0;position:absolute;content:\"\"}}@layer components{.box-arrow{--components-box-arrow-background: var(--pr-t-elevation-surface-raised);--components-box-arrow-left: 0;--components-box-arrow-bottom: 0;background-color:var(--components-box-arrow-background);margin-block:0;margin-inline:var(--pr-t-spacings-50);inline-size:12px;block-size:8px;clip-path:path(\"M4.66415 0.494638C5.43093 -0.164881 6.56907 -0.164879 7.33586 0.49464L12 8H0L4.66415 0.494638Z\");position:absolute;inset-block-end:var(--components-box-arrow-bottom);inset-inline-start:var(--components-box-arrow-left)}.box-arrow.mod-neutral,.box-arrow.mod-grey{--components-box-arrow-background: var(--palettes-neutral-25)}}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "lu-icon", inputs: ["icon", "alt", "size", "color", "AI"] }, { kind: "component", type: ButtonComponent, selector: "button[luButton],a[luButton]", inputs: ["size", "block", "critical", "delete", "disclosure", "palette", "state", "luButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
14
15
|
}
|
|
15
16
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BoxComponent, decorators: [{
|
|
16
17
|
type: Component,
|
|
@@ -18,8 +19,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
18
19
|
class: 'box',
|
|
19
20
|
'[class.mod-toggle]': 'toggle()',
|
|
20
21
|
'[class.mod-neutral]': 'neutral()',
|
|
22
|
+
'[class.mod-withArrow]': 'withArrow()',
|
|
21
23
|
}, template: "@if (killable()) {\n\t<div class=\"box-close\">\n\t\t<button luButton=\"ghost\" type=\"button\">\n\t\t\t<lu-icon icon=\"signClose\" alt=\"Close\" />\n\t\t</button>\n\t</div>\n}\n<ng-content />\n", styles: ["@layer components{.box{--components-box-background: var(--pr-t-elevation-surface-raised);--components-box-margin: 0 0 var(--pr-t-spacings-200);--components-box-padding: var(--pr-t-spacings-300);--components-box-borderRadius: var(--pr-t-border-radius-structure);--components-box-toggle-arrow-size: .8rem;--components-box-toggle-arrow-left: 2.5rem;border-radius:var(--components-box-borderRadius);padding:var(--components-box-padding);background-color:var(--components-box-background, var(--pr-t-elevation-surface-raised));display:block;position:relative}.box-close{position:absolute;font-size:var(--pr-t-font-body-M-fontSize);inset-inline-end:var(--pr-t-spacings-50);inset-block-start:var(--pr-t-spacings-50);z-index:1}}@layer mods{.box.mod-neutral,.box.mod-grey{--components-box-background: var(--palettes-neutral-25)}.box.mod-withArrow{--components-box-padding: var(--pr-t-spacings-200);--components-box-borderRadius: var(--pr-t-border-radius-small) var(--pr-t-border-radius-structure) var(--pr-t-border-radius-structure)}.box.mod-withArrow .box-arrow{--components-box-arrow-bottom: 100%;--components-box-arrow-left: var(--pr-t-spacings-75)}.box.mod-toggle{margin-block-start:var(--components-box-toggle-arrow-size)}.box.mod-toggle:before{inset-inline-start:var(--components-box-toggle-arrow-left);border-color:transparent;border-style:solid;border-width:var(--components-box-toggle-arrow-size);border-block-end-color:var(--components-box-background, var(--pr-t-elevation-surface-raised));border-block-start:0;block-size:0;inset-block-end:100%;inline-size:0;position:absolute;content:\"\"}}@layer components{.box-arrow{--components-box-arrow-background: var(--pr-t-elevation-surface-raised);--components-box-arrow-left: 0;--components-box-arrow-bottom: 0;background-color:var(--components-box-arrow-background);margin-block:0;margin-inline:var(--pr-t-spacings-50);inline-size:12px;block-size:8px;clip-path:path(\"M4.66415 0.494638C5.43093 -0.164881 6.56907 -0.164879 7.33586 0.49464L12 8H0L4.66415 0.494638Z\");position:absolute;inset-block-end:var(--components-box-arrow-bottom);inset-inline-start:var(--components-box-arrow-left)}.box-arrow.mod-neutral,.box-arrow.mod-grey{--components-box-arrow-background: var(--palettes-neutral-25)}}\n"] }]
|
|
22
|
-
}], propDecorators: { toggle: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggle", required: false }] }], neutral: [{ type: i0.Input, args: [{ isSignal: true, alias: "neutral", required: false }] }], killable: [{ type: i0.Input, args: [{ isSignal: true, alias: "killable", required: false }] }] } });
|
|
24
|
+
}], propDecorators: { toggle: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggle", required: false }] }], neutral: [{ type: i0.Input, args: [{ isSignal: true, alias: "neutral", required: false }] }], killable: [{ type: i0.Input, args: [{ isSignal: true, alias: "killable", required: false }] }], withArrow: [{ type: i0.Input, args: [{ isSignal: true, alias: "withArrow", required: false }] }] } });
|
|
23
25
|
|
|
24
26
|
/**
|
|
25
27
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucca-front-ng-box.mjs","sources":["../../../packages/ng/box/box.component.ts","../../../packages/ng/box/box.component.html","../../../packages/ng/box/lucca-front-ng-box.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { IconComponent } from '@lucca-front/ng/icon';\n\n@Component({\n\tselector: 'lu-box',\n\ttemplateUrl: './box.component.html',\n\tstyleUrl: './box.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\timports: [IconComponent, ButtonComponent],\n\thost: {\n\t\tclass: 'box',\n\t\t'[class.mod-toggle]': 'toggle()',\n\t\t'[class.mod-neutral]': 'neutral()',\n\t},\n})\nexport class BoxComponent {\n\treadonly toggle = input(false, { transform: booleanAttribute });\n\treadonly neutral = input(false, { transform: booleanAttribute });\n\treadonly killable = input(false, { transform: booleanAttribute });\n}\n","@if (killable()) {\n\t<div class=\"box-close\">\n\t\t<button luButton=\"ghost\" type=\"button\">\n\t\t\t<lu-icon icon=\"signClose\" alt=\"Close\" />\n\t\t</button>\n\t</div>\n}\n<ng-content />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"lucca-front-ng-box.mjs","sources":["../../../packages/ng/box/box.component.ts","../../../packages/ng/box/box.component.html","../../../packages/ng/box/lucca-front-ng-box.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { IconComponent } from '@lucca-front/ng/icon';\n\n@Component({\n\tselector: 'lu-box',\n\ttemplateUrl: './box.component.html',\n\tstyleUrl: './box.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\timports: [IconComponent, ButtonComponent],\n\thost: {\n\t\tclass: 'box',\n\t\t'[class.mod-toggle]': 'toggle()',\n\t\t'[class.mod-neutral]': 'neutral()',\n\t\t'[class.mod-withArrow]': 'withArrow()',\n\t},\n})\nexport class BoxComponent {\n\treadonly toggle = input(false, { transform: booleanAttribute });\n\treadonly neutral = input(false, { transform: booleanAttribute });\n\treadonly killable = input(false, { transform: booleanAttribute });\n\treadonly withArrow = input(false, { transform: booleanAttribute });\n}\n","@if (killable()) {\n\t<div class=\"box-close\">\n\t\t<button luButton=\"ghost\" type=\"button\">\n\t\t\t<lu-icon icon=\"signClose\" alt=\"Close\" />\n\t\t</button>\n\t</div>\n}\n<ng-content />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAkBa,YAAY,CAAA;AAdzB,IAAA,WAAA,GAAA;QAeU,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,KAAK,mDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QACtD,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,oDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QACvD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QACxD,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,sDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAClE,IAAA;8GALY,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,KAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBzB,oMAQA,EAAA,MAAA,EAAA,CAAA,msEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEW,aAAa,oGAAE,eAAe,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAQ5B,YAAY,EAAA,UAAA,EAAA,CAAA;kBAdxB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAQ,EAAA,eAAA,EAGD,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,CAAC,aAAa,EAAE,eAAe,CAAC,EAAA,IAAA,EACnC;AACL,wBAAA,KAAK,EAAE,KAAK;AACZ,wBAAA,oBAAoB,EAAE,UAAU;AAChC,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,uBAAuB,EAAE,aAAa;AACtC,qBAAA,EAAA,QAAA,EAAA,oMAAA,EAAA,MAAA,EAAA,CAAA,msEAAA,CAAA,EAAA;;;AEhBF;;AAEG;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { UNORDERED_LIST, HEADING, ORDERED_LIST, BOLD_ITALIC_STAR, BOLD_ITALIC_UNDERSCORE, BOLD_STAR, BOLD_UNDERSCORE, INLINE_CODE, ITALIC_STAR, ITALIC_UNDERSCORE, STRIKETHROUGH, LINK, registerMarkdownShortcuts, $convertFromMarkdownString, $convertToMarkdownString } from '@lexical/markdown';
|
|
2
2
|
import { registerRichText } from '@lexical/rich-text';
|
|
3
3
|
import { mergeRegister } from '@lexical/utils';
|
|
4
|
-
import { RichTextFormatter, RICH_TEXT_FORMATTER } from '@lucca-front/ng/forms/rich-text-input';
|
|
4
|
+
import { RichTextFormatter, RICH_TEXT_FORMATTER, $createTagNode, TagNode } from '@lucca-front/ng/forms/rich-text-input';
|
|
5
5
|
import DOMPurify from 'isomorphic-dompurify';
|
|
6
6
|
|
|
7
7
|
const DEFAULT_MARKDOWN_TRANSFORMERS = [
|
|
@@ -47,9 +47,30 @@ function provideLuRichTextMarkdownFormatter(transformers) {
|
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Transformer for tag nodes
|
|
52
|
+
* It will match the following pattern `{{Tag}}` and create a TagNode (using `replace` function).
|
|
53
|
+
* It will export the tag node to markdown (as `{{Tag}}`) using the `export` function.
|
|
54
|
+
*
|
|
55
|
+
* @docs https://github.com/facebook/lexical/tree/main/packages/lexical-markdown#transformers
|
|
56
|
+
*/
|
|
57
|
+
const TAGS = {
|
|
58
|
+
dependencies: [TagNode],
|
|
59
|
+
export: (node) => (node instanceof TagNode ? `{{${node.getTagKey()}}}` : null),
|
|
60
|
+
importRegExp: /{{(\w+)}}/,
|
|
61
|
+
regExp: /{{(\w+)}}/,
|
|
62
|
+
replace: (textNode, match) => {
|
|
63
|
+
if (match[1]) {
|
|
64
|
+
textNode.replace($createTagNode(match[1].trim()));
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
type: 'text-match',
|
|
68
|
+
trigger: '{{',
|
|
69
|
+
};
|
|
70
|
+
|
|
50
71
|
/**
|
|
51
72
|
* Generated bundle index. Do not edit.
|
|
52
73
|
*/
|
|
53
74
|
|
|
54
|
-
export { DEFAULT_MARKDOWN_TRANSFORMERS, MarkdownFormatter, provideLuRichTextMarkdownFormatter };
|
|
75
|
+
export { DEFAULT_MARKDOWN_TRANSFORMERS, MarkdownFormatter, TAGS, provideLuRichTextMarkdownFormatter };
|
|
55
76
|
//# sourceMappingURL=lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs","sources":["../../../packages/ng/forms/rich-text-input/formatters/markdown/markdown-formatter.ts","../../../packages/ng/forms/rich-text-input/formatters/markdown/lucca-front-ng-forms-rich-text-input-formatters-markdown.ts"],"sourcesContent":["import { Provider } from '@angular/core';\nimport {\n\t$convertFromMarkdownString,\n\t$convertToMarkdownString,\n\tBOLD_ITALIC_STAR,\n\tBOLD_ITALIC_UNDERSCORE,\n\tBOLD_STAR,\n\tBOLD_UNDERSCORE,\n\tHEADING,\n\tINLINE_CODE,\n\tITALIC_STAR,\n\tITALIC_UNDERSCORE,\n\tLINK,\n\tORDERED_LIST,\n\tregisterMarkdownShortcuts,\n\tSTRIKETHROUGH,\n\tTransformer,\n\tUNORDERED_LIST,\n} from '@lexical/markdown';\nimport { registerRichText } from '@lexical/rich-text';\nimport { mergeRegister } from '@lexical/utils';\nimport { RICH_TEXT_FORMATTER, RichTextFormatter } from '@lucca-front/ng/forms/rich-text-input';\nimport DOMPurify from 'isomorphic-dompurify';\nimport { LexicalEditor } from 'lexical';\n\nexport const DEFAULT_MARKDOWN_TRANSFORMERS: Transformer[] = [\n\tUNORDERED_LIST,\n\tHEADING,\n\tORDERED_LIST,\n\tBOLD_ITALIC_STAR,\n\tBOLD_ITALIC_UNDERSCORE,\n\tBOLD_STAR,\n\tBOLD_UNDERSCORE,\n\tINLINE_CODE,\n\tITALIC_STAR,\n\tITALIC_UNDERSCORE,\n\tSTRIKETHROUGH,\n\tLINK,\n];\n\nexport class MarkdownFormatter extends RichTextFormatter {\n\t#transformers: Transformer[] = DEFAULT_MARKDOWN_TRANSFORMERS;\n\n\tconstructor(transformers?: Transformer[]) {\n\t\tsuper();\n\t\tif (transformers) {\n\t\t\tthis.#transformers = transformers;\n\t\t}\n\t}\n\n\toverride registerTextPlugin(editor: LexicalEditor): () => void {\n\t\treturn mergeRegister(registerMarkdownShortcuts(editor, this.#transformers), registerRichText(editor));\n\t}\n\n\toverride parse(editor: LexicalEditor, markdown?: string | null): void {\n\t\teditor.update(() => {\n\t\t\t$convertFromMarkdownString(DOMPurify.sanitize(markdown ?? ''), this.#transformers, null, true);\n\t\t});\n\t}\n\n\toverride format(editor: LexicalEditor): string {\n\t\tlet result = '';\n\t\teditor.getEditorState().read(() => (result = $convertToMarkdownString(this.#transformers, null, true)));\n\t\treturn DOMPurify.sanitize(result);\n\t}\n}\n\nexport function provideLuRichTextMarkdownFormatter(transformers?: Transformer[]): Provider {\n\treturn {\n\t\tprovide: RICH_TEXT_FORMATTER,\n\t\tuseFactory: () => new MarkdownFormatter(transformers),\n\t};\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAyBO,MAAM,6BAA6B,GAAkB;IAC3D,cAAc;IACd,OAAO;IACP,YAAY;IACZ,gBAAgB;IAChB,sBAAsB;IACtB,SAAS;IACT,eAAe;IACf,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,aAAa;IACb,IAAI;;AAGC,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;IACvD,aAAa,GAAkB,6BAA6B;AAE5D,IAAA,WAAA,CAAY,YAA4B,EAAA;AACvC,QAAA,KAAK,EAAE;QACP,IAAI,YAAY,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,GAAG,YAAY;QAClC;IACD;AAES,IAAA,kBAAkB,CAAC,MAAqB,EAAA;AAChD,QAAA,OAAO,aAAa,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtG;IAES,KAAK,CAAC,MAAqB,EAAE,QAAwB,EAAA;AAC7D,QAAA,MAAM,CAAC,MAAM,CAAC,MAAK;AAClB,YAAA,0BAA0B,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC;AAC/F,QAAA,CAAC,CAAC;IACH;AAES,IAAA,MAAM,CAAC,MAAqB,EAAA;QACpC,IAAI,MAAM,GAAG,EAAE;QACf,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,OAAO,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACvG,QAAA,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IAClC;AACA;AAEK,SAAU,kCAAkC,CAAC,YAA4B,EAAA;IAC9E,OAAO;AACN,QAAA,OAAO,EAAE,mBAAmB;QAC5B,UAAU,EAAE,MAAM,IAAI,iBAAiB,CAAC,YAAY,CAAC;KACrD;AACF;;
|
|
1
|
+
{"version":3,"file":"lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs","sources":["../../../packages/ng/forms/rich-text-input/formatters/markdown/markdown-formatter.ts","../../../packages/ng/forms/rich-text-input/formatters/markdown/transformers/tag.transformers.ts","../../../packages/ng/forms/rich-text-input/formatters/markdown/lucca-front-ng-forms-rich-text-input-formatters-markdown.ts"],"sourcesContent":["import { Provider } from '@angular/core';\nimport {\n\t$convertFromMarkdownString,\n\t$convertToMarkdownString,\n\tBOLD_ITALIC_STAR,\n\tBOLD_ITALIC_UNDERSCORE,\n\tBOLD_STAR,\n\tBOLD_UNDERSCORE,\n\tHEADING,\n\tINLINE_CODE,\n\tITALIC_STAR,\n\tITALIC_UNDERSCORE,\n\tLINK,\n\tORDERED_LIST,\n\tregisterMarkdownShortcuts,\n\tSTRIKETHROUGH,\n\tTransformer,\n\tUNORDERED_LIST,\n} from '@lexical/markdown';\nimport { registerRichText } from '@lexical/rich-text';\nimport { mergeRegister } from '@lexical/utils';\nimport { RICH_TEXT_FORMATTER, RichTextFormatter } from '@lucca-front/ng/forms/rich-text-input';\nimport DOMPurify from 'isomorphic-dompurify';\nimport { LexicalEditor } from 'lexical';\n\nexport const DEFAULT_MARKDOWN_TRANSFORMERS: Transformer[] = [\n\tUNORDERED_LIST,\n\tHEADING,\n\tORDERED_LIST,\n\tBOLD_ITALIC_STAR,\n\tBOLD_ITALIC_UNDERSCORE,\n\tBOLD_STAR,\n\tBOLD_UNDERSCORE,\n\tINLINE_CODE,\n\tITALIC_STAR,\n\tITALIC_UNDERSCORE,\n\tSTRIKETHROUGH,\n\tLINK,\n];\n\nexport class MarkdownFormatter extends RichTextFormatter {\n\t#transformers: Transformer[] = DEFAULT_MARKDOWN_TRANSFORMERS;\n\n\tconstructor(transformers?: Transformer[]) {\n\t\tsuper();\n\t\tif (transformers) {\n\t\t\tthis.#transformers = transformers;\n\t\t}\n\t}\n\n\toverride registerTextPlugin(editor: LexicalEditor): () => void {\n\t\treturn mergeRegister(registerMarkdownShortcuts(editor, this.#transformers), registerRichText(editor));\n\t}\n\n\toverride parse(editor: LexicalEditor, markdown?: string | null): void {\n\t\teditor.update(() => {\n\t\t\t$convertFromMarkdownString(DOMPurify.sanitize(markdown ?? ''), this.#transformers, null, true);\n\t\t});\n\t}\n\n\toverride format(editor: LexicalEditor): string {\n\t\tlet result = '';\n\t\teditor.getEditorState().read(() => (result = $convertToMarkdownString(this.#transformers, null, true)));\n\t\treturn DOMPurify.sanitize(result);\n\t}\n}\n\nexport function provideLuRichTextMarkdownFormatter(transformers?: Transformer[]): Provider {\n\treturn {\n\t\tprovide: RICH_TEXT_FORMATTER,\n\t\tuseFactory: () => new MarkdownFormatter(transformers),\n\t};\n}\n","import { TextMatchTransformer } from '@lexical/markdown';\nimport { $createTagNode, TagNode } from '@lucca-front/ng/forms/rich-text-input';\n\n/**\n * Transformer for tag nodes\n * It will match the following pattern `{{Tag}}` and create a TagNode (using `replace` function).\n * It will export the tag node to markdown (as `{{Tag}}`) using the `export` function.\n *\n * @docs https://github.com/facebook/lexical/tree/main/packages/lexical-markdown#transformers\n */\nexport const TAGS: TextMatchTransformer = {\n\tdependencies: [TagNode],\n\texport: (node) => (node instanceof TagNode ? `{{${node.getTagKey()}}}` : null),\n\timportRegExp: /{{(\\w+)}}/,\n\tregExp: /{{(\\w+)}}/,\n\treplace: (textNode, match) => {\n\t\tif (match[1]) {\n\t\t\ttextNode.replace($createTagNode(match[1].trim()));\n\t\t}\n\t},\n\ttype: 'text-match',\n\ttrigger: '{{',\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAyBO,MAAM,6BAA6B,GAAkB;IAC3D,cAAc;IACd,OAAO;IACP,YAAY;IACZ,gBAAgB;IAChB,sBAAsB;IACtB,SAAS;IACT,eAAe;IACf,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,aAAa;IACb,IAAI;;AAGC,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;IACvD,aAAa,GAAkB,6BAA6B;AAE5D,IAAA,WAAA,CAAY,YAA4B,EAAA;AACvC,QAAA,KAAK,EAAE;QACP,IAAI,YAAY,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,GAAG,YAAY;QAClC;IACD;AAES,IAAA,kBAAkB,CAAC,MAAqB,EAAA;AAChD,QAAA,OAAO,aAAa,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtG;IAES,KAAK,CAAC,MAAqB,EAAE,QAAwB,EAAA;AAC7D,QAAA,MAAM,CAAC,MAAM,CAAC,MAAK;AAClB,YAAA,0BAA0B,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC;AAC/F,QAAA,CAAC,CAAC;IACH;AAES,IAAA,MAAM,CAAC,MAAqB,EAAA;QACpC,IAAI,MAAM,GAAG,EAAE;QACf,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,OAAO,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACvG,QAAA,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IAClC;AACA;AAEK,SAAU,kCAAkC,CAAC,YAA4B,EAAA;IAC9E,OAAO;AACN,QAAA,OAAO,EAAE,mBAAmB;QAC5B,UAAU,EAAE,MAAM,IAAI,iBAAiB,CAAC,YAAY,CAAC;KACrD;AACF;;ACrEA;;;;;;AAMG;AACI,MAAM,IAAI,GAAyB;IACzC,YAAY,EAAE,CAAC,OAAO,CAAC;IACvB,MAAM,EAAE,CAAC,IAAI,MAAM,IAAI,YAAY,OAAO,GAAG,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;AAC9E,IAAA,YAAY,EAAE,WAAW;AACzB,IAAA,MAAM,EAAE,WAAW;AACnB,IAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAI;AAC5B,QAAA,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;AACb,YAAA,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAClD;IACD,CAAC;AACD,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,OAAO,EAAE,IAAI;;;ACrBd;;AAEG;;;;"}
|
|
@@ -1,11 +1,24 @@
|
|
|
1
|
-
import { $
|
|
1
|
+
import { $createTagNode, RichTextFormatter, RICH_TEXT_FORMATTER } from '@lucca-front/ng/forms/rich-text-input';
|
|
2
|
+
import { $getRoot, $createParagraphNode, $createTextNode } from 'lexical';
|
|
3
|
+
import { $rootTextContent } from '@lexical/text';
|
|
2
4
|
import { registerPlainText } from '@lexical/plain-text';
|
|
3
|
-
import { RichTextFormatter, RICH_TEXT_FORMATTER } from '@lucca-front/ng/forms/rich-text-input';
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Transformer for tag nodes
|
|
8
|
+
* It will match the following pattern `{{Tag}}` and create a TagNode (using `replace` function).
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
const PLAINTEXT_TAGS = {
|
|
12
|
+
regExp: /{{(\w+)}}/,
|
|
13
|
+
replace: (textNode, match) => {
|
|
14
|
+
if (match[1]) {
|
|
15
|
+
textNode.replace($createTagNode(match[1].trim()));
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
|
|
6
20
|
class PlainTextFormatter extends RichTextFormatter {
|
|
7
|
-
#transformers =
|
|
8
|
-
#shouldPreserveNewLinesInMarkdown = true;
|
|
21
|
+
#transformers = [PLAINTEXT_TAGS];
|
|
9
22
|
constructor(transformers) {
|
|
10
23
|
super();
|
|
11
24
|
if (transformers) {
|
|
@@ -15,17 +28,51 @@ class PlainTextFormatter extends RichTextFormatter {
|
|
|
15
28
|
registerTextPlugin(editor) {
|
|
16
29
|
return registerPlainText(editor);
|
|
17
30
|
}
|
|
18
|
-
parse(editor,
|
|
31
|
+
parse(editor, text) {
|
|
19
32
|
editor.update(() => {
|
|
20
|
-
|
|
33
|
+
const rootNode = $getRoot();
|
|
34
|
+
rootNode.clear();
|
|
35
|
+
if (text) {
|
|
36
|
+
const paragraphNode = $createParagraphNode();
|
|
37
|
+
const textNode = $createTextNode(text);
|
|
38
|
+
paragraphNode.append(textNode);
|
|
39
|
+
rootNode.append(paragraphNode);
|
|
40
|
+
this.#applyTransformers(textNode);
|
|
41
|
+
}
|
|
21
42
|
});
|
|
22
|
-
$convertFromMarkdownString(markdown ?? '', this.#transformers, undefined, this.#shouldPreserveNewLinesInMarkdown);
|
|
23
43
|
}
|
|
24
44
|
format(editor) {
|
|
25
45
|
let result = '';
|
|
26
|
-
editor.getEditorState().read(() => (result = $
|
|
46
|
+
editor.getEditorState().read(() => (result = $rootTextContent()));
|
|
27
47
|
return result;
|
|
28
48
|
}
|
|
49
|
+
#applyTransformers(textNode) {
|
|
50
|
+
for (const t of this.#transformers) {
|
|
51
|
+
const match = textNode.getTextContent().match(t.regExp);
|
|
52
|
+
if (!match) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const startIndex = match.index || 0;
|
|
56
|
+
const endIndex = startIndex + match[0].length;
|
|
57
|
+
let transformedNode, nodeAfter, nodeBefore;
|
|
58
|
+
if (startIndex === 0) {
|
|
59
|
+
[transformedNode, nodeAfter] = textNode.splitText(endIndex);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
[nodeBefore, transformedNode, nodeAfter] = textNode.splitText(startIndex, endIndex);
|
|
63
|
+
}
|
|
64
|
+
if (transformedNode) {
|
|
65
|
+
t.replace(transformedNode, match);
|
|
66
|
+
}
|
|
67
|
+
if (nodeAfter) {
|
|
68
|
+
this.#applyTransformers(nodeAfter);
|
|
69
|
+
}
|
|
70
|
+
if (nodeBefore) {
|
|
71
|
+
this.#applyTransformers(nodeBefore);
|
|
72
|
+
}
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
29
76
|
}
|
|
30
77
|
function provideLuRichTextPlainTextFormatter(transformers) {
|
|
31
78
|
return {
|
|
@@ -38,5 +85,5 @@ function provideLuRichTextPlainTextFormatter(transformers) {
|
|
|
38
85
|
* Generated bundle index. Do not edit.
|
|
39
86
|
*/
|
|
40
87
|
|
|
41
|
-
export { PlainTextFormatter, provideLuRichTextPlainTextFormatter };
|
|
88
|
+
export { PLAINTEXT_TAGS, PlainTextFormatter, provideLuRichTextPlainTextFormatter };
|
|
42
89
|
//# sourceMappingURL=lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs","sources":["../../../packages/ng/forms/rich-text-input/formatters/plain-text/plain-text-formatter.ts","../../../packages/ng/forms/rich-text-input/formatters/plain-text/lucca-front-ng-forms-rich-text-input-formatters-plain-text.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs","sources":["../../../packages/ng/forms/rich-text-input/formatters/plain-text/transformers/tag.transformers.ts","../../../packages/ng/forms/rich-text-input/formatters/plain-text/plain-text-formatter.ts","../../../packages/ng/forms/rich-text-input/formatters/plain-text/lucca-front-ng-forms-rich-text-input-formatters-plain-text.ts"],"sourcesContent":["import { $createTagNode } from '@lucca-front/ng/forms/rich-text-input';\nimport { PlainTextTransformer } from './plain-text-transformer';\n\n/**\n * Transformer for tag nodes\n * It will match the following pattern `{{Tag}}` and create a TagNode (using `replace` function).\n *\n */\nexport const PLAINTEXT_TAGS: PlainTextTransformer = {\n\tregExp: /{{(\\w+)}}/,\n\treplace: (textNode, match) => {\n\t\tif (match[1]) {\n\t\t\ttextNode.replace($createTagNode(match[1].trim()));\n\t\t}\n\t},\n};\n","import { Provider } from '@angular/core';\nimport { RICH_TEXT_FORMATTER, RichTextFormatter } from '@lucca-front/ng/forms/rich-text-input';\nimport { $createParagraphNode, $createTextNode, $getRoot, LexicalEditor, TextNode } from 'lexical';\nimport { $rootTextContent } from '@lexical/text';\nimport { PLAINTEXT_TAGS, PlainTextTransformer } from './transformers';\nimport { registerPlainText } from '@lexical/plain-text';\n\nexport class PlainTextFormatter extends RichTextFormatter {\n\t#transformers: PlainTextTransformer[] = [PLAINTEXT_TAGS];\n\n\tconstructor(transformers?: PlainTextTransformer[]) {\n\t\tsuper();\n\t\tif (transformers) {\n\t\t\tthis.#transformers = transformers;\n\t\t}\n\t}\n\n\toverride registerTextPlugin(editor: LexicalEditor) {\n\t\treturn registerPlainText(editor);\n\t}\n\n\toverride parse(editor: LexicalEditor, text?: string | null): void {\n\t\teditor.update(() => {\n\t\t\tconst rootNode = $getRoot();\n\t\t\trootNode.clear();\n\t\t\tif (text) {\n\t\t\t\tconst paragraphNode = $createParagraphNode();\n\t\t\t\tconst textNode = $createTextNode(text);\n\t\t\t\tparagraphNode.append(textNode);\n\t\t\t\trootNode.append(paragraphNode);\n\t\t\t\tthis.#applyTransformers(textNode);\n\t\t\t}\n\t\t});\n\t}\n\n\toverride format(editor: LexicalEditor): string {\n\t\tlet result = '';\n\t\teditor.getEditorState().read(() => (result = $rootTextContent()));\n\t\treturn result;\n\t}\n\n\t#applyTransformers(textNode: TextNode): void {\n\t\tfor (const t of this.#transformers) {\n\t\t\tconst match = textNode.getTextContent().match(t.regExp);\n\n\t\t\tif (!match) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst startIndex = match.index || 0;\n\t\t\tconst endIndex = startIndex + match[0].length;\n\n\t\t\tlet transformedNode: TextNode, nodeAfter: TextNode, nodeBefore: TextNode;\n\t\t\tif (startIndex === 0) {\n\t\t\t\t[transformedNode, nodeAfter] = textNode.splitText(endIndex);\n\t\t\t} else {\n\t\t\t\t[nodeBefore, transformedNode, nodeAfter] = textNode.splitText(startIndex, endIndex);\n\t\t\t}\n\t\t\tif (transformedNode) {\n\t\t\t\tt.replace(transformedNode, match);\n\t\t\t}\n\t\t\tif (nodeAfter) {\n\t\t\t\tthis.#applyTransformers(nodeAfter);\n\t\t\t}\n\t\t\tif (nodeBefore) {\n\t\t\t\tthis.#applyTransformers(nodeBefore);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport function provideLuRichTextPlainTextFormatter(transformers?: PlainTextTransformer[]): Provider {\n\treturn {\n\t\tprovide: RICH_TEXT_FORMATTER,\n\t\tuseFactory: () => new PlainTextFormatter(transformers),\n\t};\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1247,27 +1247,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
1247
1247
|
], template: "<div class=\"richTextField-toolbar-chips\" (keydown.arrowleft)=\"focusTag($event, -1)\" (keydown.arrowRight)=\"focusTag($event, 1)\">\n\t<span aria-hidden=\"true\">{{ intl.insertTag }}</span>\n\t@for (tag of tags(); track tag) {\n\t\t<lu-chip\n\t\t\t[attr.tabindex]=\"isDisabled() ? null : $first ? 0 : -1\"\n\t\t\t[disabled]=\"isDisabled()\"\n\t\t\t(click)=\"!isDisabled() ? insertTag(tag) : null\"\n\t\t\t(keyup.space)=\"!isDisabled() ? insertTag(tag) : null\"\n\t\t\t(keyup.enter)=\"!isDisabled() ? insertTag(tag) : null\"\n\t\t\tclass=\"richTextField-toolbar-chips-chip\"\n\t\t\tpalette=\"product\"\n\t\t\t#tagButton\n\t\t\tunkillable\n\t\t>\n\t\t\t<span class=\"pr-u-mask\">{{ intl.insertTag }}</span>\n\t\t\t{{ tag.description }}\n\t\t</lu-chip>\n\t}\n</div>\n", styles: ["@layer components{.chip{--components-chip-font: var(--pr-t-font-body-S);--components-chip-backgroundColor: var(--palettes-100, var(--palettes-neutral-100));--components-chip-color: var(--palettes-800, var(--pr-t-color-text));--components-chip-borderRadius: var(--pr-t-border-radius-default);--components-chip-kill-size: .75rem;--components-chip-kill-disk-color: var(--palettes-800, var(--palettes-neutral-800));--components-chip-kill-cross-color: var(--palettes-text, var(--palettes-neutral-text));--components-chip-kill-background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16' fill='none'%3E%3Cpath d='M5.80473 4.86192C5.54438 4.60157 5.12227 4.60157 4.86192 4.86192C4.60157 5.12227 4.60157 5.54438 4.86192 5.80473L7.05718 7.99999L4.86192 10.1953C4.60157 10.4556 4.60157 10.8777 4.86192 11.1381C5.12227 11.3984 5.54438 11.3984 5.80473 11.1381L7.99999 8.9428L10.1953 11.1381C10.4556 11.3984 10.8777 11.3984 11.1381 11.1381C11.3984 10.8777 11.3984 10.4556 11.1381 10.1953L8.9428 7.99999L11.1381 5.80473C11.3984 5.54438 11.3984 5.12227 11.1381 4.86192C10.8777 4.60157 10.4556 4.60157 10.1953 4.86192L7.99999 7.05718L5.80473 4.86192Z' fill='currentColor'/%3E%3C/svg%3E\");--components-chip-fontSize: var(--pr-t-font-body-S-fontSize);--components-chip-lineHeight: var(--pr-t-font-body-S-lineHeight);background-color:var(--components-chip-backgroundColor);border:none;border-radius:var(--components-chip-borderRadius);color:var(--components-chip-color);display:inline-flex;align-items:center;position:relative;vertical-align:middle;padding-block:calc(var(--pr-t-spacings-50) / 2);padding-inline:var(--pr-t-spacings-100);font:var(--components-chip-font);max-inline-size:100%}.chip .lucca-icon{--icon-size: 1rem;margin-inline-end:var(--pr-t-spacings-50)}.chip-content{outline:none}.chip-kill{padding:0;border:0;inline-size:100%;background-color:transparent;color:inherit;text-align:start;display:block;font:inherit;display:grid;grid-template-columns:1fr;grid-template-rows:1fr;grid-template-areas:\"main\";place-items:center;inline-size:var(--pr-t-spacings-300);block-size:var(--pr-t-spacings-300);margin:calc(var(--pr-t-spacings-75) * -1);margin-inline-start:var(--pr-t-spacings-25);flex-shrink:0;cursor:pointer}.chip-kill:before,.chip-kill:after{content:\"\";grid-area:main;inline-size:var(--components-chip-kill-size);block-size:var(--components-chip-kill-size)}.chip-kill:before{border-radius:var(--pr-t-border-radius-full);background-color:var(--components-chip-kill-disk-color)}.chip-kill:after{-webkit-mask-image:var(--components-chip-kill-background-image);mask-image:var(--components-chip-kill-background-image);-webkit-mask-size:var(--components-chip-kill-size);mask-size:var(--components-chip-kill-size);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:var(--components-chip-kill-cross-color)}.chip-kill:hover{--components-chip-kill-disk-color: var(--palettes-700, var(--palettes-neutral-700))}.chip-kill:focus-visible{outline:2px solid var(--palettes-product-700);outline-offset:-4px;border-radius:var(--pr-t-border-radius-full)}.chip-kill:active{--components-chip-kill-disk-color: var(--palettes-900, var(--palettes-neutral-900))}}@layer mods{.chip.mod-S{--components-chip-font: var(--pr-t-font-body-XS);--components-chip-borderRadius: var(--pr-t-border-radius-small)}.chip.mod-S .lucca-icon{--icon-size: .75rem}.chip.mod-unkillable .chip-kill{display:none}.chip.mod-clickable{cursor:pointer;text-decoration:none}.chip.is-disabled{--components-chip-backgroundColor: var(--palettes-neutral-200);--components-chip-color: var(--pr-t-color-text-subtle)}.chip.is-disabled .chip-kill{display:none}.chip:has(.chip-content:focus-visible){outline:2px solid var(--palettes-product-700);outline-offset:2px}}\n"] }]
|
|
1248
1248
|
}], ctorParameters: () => [], propDecorators: { tags: [{ type: i0.Input, args: [{ isSignal: true, alias: "tags", required: true }] }], focusableElements: [{ type: i0.ViewChildren, args: ['tagButton', { ...{ read: ElementRef }, isSignal: true }] }] } });
|
|
1249
1249
|
|
|
1250
|
-
/**
|
|
1251
|
-
* Transformer for tag nodes
|
|
1252
|
-
* It will match the following pattern `{{Tag}}` and create a TagNode (using `replace` function).
|
|
1253
|
-
* It will export the tag node to markdown (as `{{Tag}}`) using the `export` function.
|
|
1254
|
-
*
|
|
1255
|
-
* @docs https://github.com/facebook/lexical/tree/main/packages/lexical-markdown#transformers
|
|
1256
|
-
*/
|
|
1257
|
-
const TAGS = {
|
|
1258
|
-
dependencies: [TagNode],
|
|
1259
|
-
export: (node) => (node instanceof TagNode ? `{{${node.getTagKey()}}}` : null),
|
|
1260
|
-
importRegExp: /{{(\w+)}}/,
|
|
1261
|
-
regExp: /{{(\w+)}}/,
|
|
1262
|
-
replace: (textNode, match) => {
|
|
1263
|
-
if (match[1]) {
|
|
1264
|
-
textNode.replace($createTagNode(match[1].trim()));
|
|
1265
|
-
}
|
|
1266
|
-
},
|
|
1267
|
-
type: 'text-match',
|
|
1268
|
-
trigger: '{{',
|
|
1269
|
-
};
|
|
1270
|
-
|
|
1271
1250
|
function registerFormatSelectionChange(editor, format, onselectionchange) {
|
|
1272
1251
|
return editor.registerCommand(SELECTION_CHANGE_COMMAND, () => {
|
|
1273
1252
|
const selection = $getSelection();
|
|
@@ -1397,5 +1376,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
1397
1376
|
* Generated bundle index. Do not edit.
|
|
1398
1377
|
*/
|
|
1399
1378
|
|
|
1400
|
-
export { ClearFormatComponent, HeadingsComponent, INITIAL_UPDATE_TAG, LinkComponent, ListStyleToolbarComponent, RICH_TEXT_FORMATTER, RICH_TEXT_PLUGIN_COMPONENT, RichTextFormatter, RichTextInputComponent, RichTextInputToolbarComponent, RichTextPluginTagComponent, SKIP_DOM_SELECTION_TAG,
|
|
1379
|
+
export { $createTagNode, $isTagNode, ClearFormatComponent, HeadingsComponent, INITIAL_UPDATE_TAG, LinkComponent, ListStyleToolbarComponent, RICH_TEXT_FORMATTER, RICH_TEXT_PLUGIN_COMPONENT, RichTextFormatter, RichTextInputComponent, RichTextInputToolbarComponent, RichTextPluginTagComponent, SKIP_DOM_SELECTION_TAG, TagNode, TextStyleComponent, TextStyleToolbarComponent };
|
|
1401
1380
|
//# sourceMappingURL=lucca-front-ng-forms-rich-text-input.mjs.map
|