@tailng-ui/components 0.11.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -5
- package/package.json +2 -2
- package/src/lib/feedback/empty/tng-empty.component.d.ts.map +1 -1
- package/src/lib/feedback/empty/tng-empty.component.js +5 -0
- package/src/lib/feedback/empty/tng-empty.component.js.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.component.d.ts.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.component.js +1 -0
- package/src/lib/feedback/progress-bar/tng-progress-bar.component.js.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.d.ts.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js +1 -0
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.component.js +1 -0
- package/src/lib/feedback/skeleton/tng-skeleton.component.js.map +1 -1
- package/src/lib/feedback/toast/tng-toast.component.d.ts.map +1 -1
- package/src/lib/feedback/toast/tng-toast.component.js +1 -0
- package/src/lib/feedback/toast/tng-toast.component.js.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle-group.component.js +1 -0
- package/src/lib/form/button-toggle/tng-button-toggle-group.component.js.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle.component.d.ts.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle.component.js +1 -0
- package/src/lib/form/button-toggle/tng-button-toggle.component.js.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.component.d.ts.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.component.js +1 -0
- package/src/lib/form/checkbox/tng-checkbox.component.js.map +1 -1
- package/src/lib/form/chips/tng-chips.component.d.ts.map +1 -1
- package/src/lib/form/chips/tng-chips.component.js +1 -0
- package/src/lib/form/chips/tng-chips.component.js.map +1 -1
- package/src/lib/form/combobox/tng-combobox.component.d.ts.map +1 -1
- package/src/lib/form/combobox/tng-combobox.component.js +1 -0
- package/src/lib/form/combobox/tng-combobox.component.js.map +1 -1
- package/src/lib/form/label/tng-label.component.d.ts.map +1 -1
- package/src/lib/form/label/tng-label.component.js +1 -0
- package/src/lib/form/label/tng-label.component.js.map +1 -1
- package/src/lib/form/radio/tng-radio.component.d.ts.map +1 -1
- package/src/lib/form/radio/tng-radio.component.js +1 -0
- package/src/lib/form/radio/tng-radio.component.js.map +1 -1
- package/src/lib/form/slider/tng-slider.component.d.ts.map +1 -1
- package/src/lib/form/slider/tng-slider.component.js +1 -0
- package/src/lib/form/slider/tng-slider.component.js.map +1 -1
- package/src/lib/form/switch/tng-switch.component.d.ts.map +1 -1
- package/src/lib/form/switch/tng-switch.component.js +1 -0
- package/src/lib/form/switch/tng-switch.component.js.map +1 -1
- package/src/lib/form/textarea/tng-textarea.component.d.ts.map +1 -1
- package/src/lib/form/textarea/tng-textarea.component.js +1 -0
- package/src/lib/form/textarea/tng-textarea.component.js.map +1 -1
- package/src/lib/form/toggle/tng-toggle.component.d.ts.map +1 -1
- package/src/lib/form/toggle/tng-toggle.component.js +1 -0
- package/src/lib/form/toggle/tng-toggle.component.js.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.component.d.ts.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.component.js +1 -0
- package/src/lib/form/toggle-group/tng-toggle-group.component.js.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.d.ts.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js +1 -0
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js.map +1 -1
- package/src/lib/layout/card/tng-card.component.d.ts.map +1 -1
- package/src/lib/layout/card/tng-card.component.js +10 -0
- package/src/lib/layout/card/tng-card.component.js.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.component.d.ts.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.component.js +1 -0
- package/src/lib/layout/collapsible/tng-collapsible.component.js.map +1 -1
- package/src/lib/layout/grid/tng-grid.component.d.ts.map +1 -1
- package/src/lib/layout/grid/tng-grid.component.js +1 -0
- package/src/lib/layout/grid/tng-grid.component.js.map +1 -1
- package/src/lib/layout/separator/tng-separator.component.d.ts.map +1 -1
- package/src/lib/layout/separator/tng-separator.component.js +1 -0
- package/src/lib/layout/separator/tng-separator.component.js.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.component.d.ts.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.component.js +1 -0
- package/src/lib/layout/stepper/tng-stepper.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js +1 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.component.js +1 -0
- package/src/lib/navigation/context-menu/tng-context-menu.component.js.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.d.ts.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js +1 -0
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.d.ts.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js +1 -0
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.component.js +1 -0
- package/src/lib/navigation/toolbar/tng-toolbar.component.js.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.component.d.ts.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.component.js +1 -0
- package/src/lib/overlay/dialog/tng-dialog.component.js.map +1 -1
- package/src/lib/overlay/popover/tng-popover.component.d.ts.map +1 -1
- package/src/lib/overlay/popover/tng-popover.component.js +1 -0
- package/src/lib/overlay/popover/tng-popover.component.js.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.component.js +1 -0
- package/src/lib/overlay/tooltip/tng-tooltip.component.js.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.component.d.ts.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.component.js +1 -0
- package/src/lib/utility/avatar/tng-avatar.component.js.map +1 -1
- package/src/lib/utility/badge/tng-badge.component.d.ts.map +1 -1
- package/src/lib/utility/badge/tng-badge.component.js +1 -0
- package/src/lib/utility/badge/tng-badge.component.js.map +1 -1
- package/src/lib/utility/button/tng-button.component.d.ts.map +1 -1
- package/src/lib/utility/button/tng-button.component.js +1 -0
- package/src/lib/utility/button/tng-button.component.js.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.component.d.ts.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.component.js +1 -0
- package/src/lib/utility/code-block/tng-code-block.component.js.map +1 -1
- package/src/lib/utility/copy-button/tng-copy-button.component.d.ts.map +1 -1
- package/src/lib/utility/copy-button/tng-copy-button.component.js +1 -0
- package/src/lib/utility/copy-button/tng-copy-button.component.js.map +1 -1
- package/src/lib/utility/tag/tng-tag.component.d.ts.map +1 -1
- package/src/lib/utility/tag/tng-tag.component.js +1 -0
- package/src/lib/utility/tag/tng-tag.component.js.map +1 -1
- package/src/lib/utility/tree/tng-tree.component.d.ts.map +1 -1
- package/src/lib/utility/tree/tng-tree.component.js +1 -0
- package/src/lib/utility/tree/tng-tree.component.js.map +1 -1
|
@@ -42,6 +42,7 @@ let TngPopoverComponent = class TngPopoverComponent {
|
|
|
42
42
|
};
|
|
43
43
|
TngPopoverComponent = __decorate([
|
|
44
44
|
Component({
|
|
45
|
+
standalone: true,
|
|
45
46
|
selector: 'tng-popover',
|
|
46
47
|
imports: [TngPopoverPrimitive, TngPopoverTrigger, TngPopoverPanel],
|
|
47
48
|
templateUrl: './tng-popover.component.html',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-popover.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/popover/tng-popover.component.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,KAAK,EACL,MAAM,EACN,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,IAAI,mBAAmB,EACjC,eAAe,EACf,iBAAiB,GAOlB,MAAM,uBAAuB,CAAC;AAY/B,SAAS,6BAA6B,CAAC,KAA2B;IAChE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;
|
|
1
|
+
{"version":3,"file":"tng-popover.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/popover/tng-popover.component.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,KAAK,EACL,MAAM,EACN,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,IAAI,mBAAmB,EACjC,eAAe,EACf,iBAAiB,GAOlB,MAAM,uBAAuB,CAAC;AAY/B,SAAS,6BAA6B,CAAC,KAA2B;IAChE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AASM,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACd,SAAS,GAAG,KAAK,CAAS,SAAS,CAAC,CAAC;IACrC,YAAY,GAAG,KAAK,CAAyB,QAAQ,CAAC,CAAC;IACvD,SAAS,GAAG,KAAK,CAAsB,iBAAiB,CAAC,CAAC;IAC1D,KAAK,GAAG,KAAK,CAAkB,OAAO,CAAC,CAAC;IACxC,aAAa,GAAG,KAAK,CAA4B,IAAI,EAAE;QACrE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,qBAAqB,GAAG,KAAK,CAA4B,IAAI,EAAE;QAC7E,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,WAAW,GAAG,KAAK,CAA4B,KAAK,EAAE;QACpE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,IAAI,GAAG,KAAK,CAA4C,SAAS,EAAE;QACjF,SAAS,EAAE,6BAA6B;KACzC,CAAC,CAAC;IACa,SAAS,GAAG,KAAK,CAAsB,QAAQ,CAAC,CAAC;IACjD,YAAY,GAAG,KAAK,CAA4B,IAAI,EAAE;QACpE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,IAAI,GAAG,KAAK,CAAiB,QAAQ,CAAC,CAAC;IACvC,YAAY,GAAG,KAAK,CAAS,gBAAgB,CAAC,CAAC;IAE/C,MAAM,GAAG,MAAM,EAAyB,CAAC;IACzC,UAAU,GAAG,MAAM,EAAW,CAAC;IAE5B,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAsB,YAAY,CAAC,CAAC;IAE/E,KAAK;QACV,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;CACF,CAAA;AAnCY,mBAAmB;IAP/B,SAAS,CAAC;QACT,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,CAAC;QAClE,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,6BAA6B;KACxC,CAAC;GACW,mBAAmB,CAmC/B","sourcesContent":["import {\n booleanAttribute,\n Component,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport {\n TngPopover as TngPopoverPrimitive,\n TngPopoverPanel,\n TngPopoverTrigger,\n type TngPopoverAlign,\n type TngPopoverAriaHasPopup,\n type TngPopoverAutoFocus,\n type TngPopoverCloseReason,\n type TngPopoverPanelRole,\n type TngPopoverSide,\n} from '@tailng-ui/primitives';\nexport type {\n TngPopoverAlign,\n TngPopoverAriaHasPopup,\n TngPopoverAutoFocus,\n TngPopoverCloseReason,\n TngPopoverPanelRole,\n TngPopoverSide,\n} from '@tailng-ui/primitives';\n\ntype OptionalBooleanInput = boolean | null | string | undefined;\n\nfunction normalizeOptionalBooleanInput(value: OptionalBooleanInput): boolean | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n return booleanAttribute(value);\n}\n\n@Component({\n standalone: true,\n selector: 'tng-popover',\n imports: [TngPopoverPrimitive, TngPopoverTrigger, TngPopoverPanel],\n templateUrl: './tng-popover.component.html',\n styleUrl: './tng-popover.component.css',\n})\nexport class TngPopoverComponent {\n public readonly ariaLabel = input<string>('Popover');\n public readonly ariaHasPopup = input<TngPopoverAriaHasPopup>('dialog');\n public readonly autoFocus = input<TngPopoverAutoFocus>('first-focusable');\n public readonly align = input<TngPopoverAlign>('start');\n public readonly closeOnEscape = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly closeOnOutsidePointer = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly defaultOpen = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly open = input<boolean | undefined, OptionalBooleanInput>(undefined, {\n transform: normalizeOptionalBooleanInput,\n });\n public readonly panelRole = input<TngPopoverPanelRole>('dialog');\n public readonly restoreFocus = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly side = input<TngPopoverSide>('bottom');\n public readonly triggerLabel = input<string>('Toggle Popover');\n\n public readonly closed = output<TngPopoverCloseReason>();\n public readonly openChange = output<boolean>();\n\n protected readonly popoverRef = viewChild.required<TngPopoverPrimitive>('popoverRef');\n\n public close(): void {\n this.popoverRef().closePopover('programmatic');\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tooltip.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/tooltip/tng-tooltip.component.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EAGpB,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,
|
|
1
|
+
{"version":3,"file":"tng-tooltip.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/tooltip/tng-tooltip.component.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EAGpB,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,qBAOa,mBAAmB;IAC9B,SAAgB,SAAS,qDAA8B;IACvD,SAAgB,UAAU,8CAAqB;IAC/C,SAAgB,QAAQ,8EAErB;IACH,SAAgB,SAAS,8CAAsB;IAC/C,SAAgB,IAAI,sDAAgC;IACpD,SAAgB,IAAI,8CAAqC;IACzD,SAAgB,YAAY,8CAAyB;IAErD,SAAgB,UAAU,oDAAqB;CAChD"}
|
|
@@ -21,6 +21,7 @@ let TngTooltipComponent = class TngTooltipComponent {
|
|
|
21
21
|
};
|
|
22
22
|
TngTooltipComponent = __decorate([
|
|
23
23
|
Component({
|
|
24
|
+
standalone: true,
|
|
24
25
|
selector: 'tng-tooltip',
|
|
25
26
|
imports: [TngTooltipPrimitive, TngTooltipTriggerPrimitive, TngTooltipContentPrimitive],
|
|
26
27
|
templateUrl: './tng-tooltip.component.html',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tooltip.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/tooltip/tng-tooltip.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,UAAU,IAAI,mBAAmB,EACjC,iBAAiB,IAAI,0BAA0B,EAC/C,iBAAiB,IAAI,0BAA0B,EAE/C,wBAAwB,IAAI,iCAAiC,EAC7D,2BAA2B,IAAI,oCAAoC,GACpE,MAAM,uBAAuB,CAAC;AAE/B,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,OAAO,iCAAiC,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,OAAO,oCAAoC,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;
|
|
1
|
+
{"version":3,"file":"tng-tooltip.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/overlay/tooltip/tng-tooltip.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,UAAU,IAAI,mBAAmB,EACjC,iBAAiB,IAAI,0BAA0B,EAC/C,iBAAiB,IAAI,0BAA0B,EAE/C,wBAAwB,IAAI,iCAAiC,EAC7D,2BAA2B,IAAI,oCAAoC,GACpE,MAAM,uBAAuB,CAAC;AAE/B,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,OAAO,iCAAiC,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,OAAO,oCAAoC,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;AASM,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACd,SAAS,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACvC,UAAU,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;IAC/B,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,SAAS,GAAG,KAAK,CAAS,GAAG,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAiB,KAAK,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,CAAS,kBAAkB,CAAC,CAAC;IACzC,YAAY,GAAG,KAAK,CAAS,MAAM,CAAC,CAAC;IAErC,UAAU,GAAG,MAAM,EAAW,CAAC;CAChD,CAAA;AAZY,mBAAmB;IAP/B,SAAS,CAAC;QACT,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,0BAA0B,CAAC;QACtF,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,6BAA6B;KACxC,CAAC;GACW,mBAAmB,CAY/B","sourcesContent":["import { booleanAttribute, Component, input, output } from '@angular/core';\nimport {\n TngTooltip as TngTooltipPrimitive,\n TngTooltipContent as TngTooltipContentPrimitive,\n TngTooltipTrigger as TngTooltipTriggerPrimitive,\n type TngTooltipSide,\n normalizeTngTooltipDelay as normalizeTngTooltipDelayPrimitive,\n shouldCloseTngTooltipForKey as shouldCloseTngTooltipForKeyPrimitive,\n} from '@tailng-ui/primitives';\n\nexport function normalizeTngTooltipDelay(value: number): number {\n return normalizeTngTooltipDelayPrimitive(value);\n}\n\nexport function shouldCloseTngTooltipForKey(key: string): boolean {\n return shouldCloseTngTooltipForKeyPrimitive(key);\n}\n\n@Component({\n standalone: true,\n selector: 'tng-tooltip',\n imports: [TngTooltipPrimitive, TngTooltipTriggerPrimitive, TngTooltipContentPrimitive],\n templateUrl: './tng-tooltip.component.html',\n styleUrl: './tng-tooltip.component.css',\n})\nexport class TngTooltipComponent {\n public readonly ariaLabel = input<string | null>(null);\n public readonly closeDelay = input<number>(60);\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly openDelay = input<number>(120);\n public readonly side = input<TngTooltipSide>('top');\n public readonly text = input<string>('More information');\n public readonly triggerLabel = input<string>('Info');\n\n public readonly openChange = output<boolean>();\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-avatar.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/avatar/tng-avatar.component.ts"],"names":[],"mappings":"AAOA,KAAK,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC1C,KAAK,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AA2CxC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAWhF;AAED,
|
|
1
|
+
{"version":3,"file":"tng-avatar.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/avatar/tng-avatar.component.ts"],"names":[],"mappings":"AAOA,KAAK,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC1C,KAAK,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AA2CxC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAWhF;AAED,qBAOa,kBAAkB;IAC7B,SAAgB,GAAG,qDAAkC;IACrD,SAAgB,QAAQ,qDAA8B;IACtD,SAAgB,KAAK,sDAAmC;IACxD,SAAgB,IAAI,qDAA8B;IAClD,SAAgB,GAAG,qDAA8B;IAEjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,SAAS,CAAC,QAAQ,CAAC,YAAY,yCAE7B;IACF,SAAS,CAAC,QAAQ,CAAC,WAAW,gDAE5B;IACF,SAAS,CAAC,QAAQ,CAAC,WAAW,gDAE5B;IACF,SAAS,CAAC,QAAQ,CAAC,YAAY,0CAE7B;IAEK,YAAY,IAAI,IAAI;IAIpB,WAAW,IAAI,IAAI;CAG3B"}
|
|
@@ -63,6 +63,7 @@ let TngAvatarComponent = class TngAvatarComponent {
|
|
|
63
63
|
};
|
|
64
64
|
TngAvatarComponent = __decorate([
|
|
65
65
|
Component({
|
|
66
|
+
standalone: true,
|
|
66
67
|
selector: 'tng-avatar',
|
|
67
68
|
imports: [TngAvatarPrimitive, TngAvatarImagePrimitive, TngAvatarFallbackPrimitive],
|
|
68
69
|
templateUrl: './tng-avatar.component.html',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-avatar.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/avatar/tng-avatar.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,SAAS,IAAI,kBAAkB,EAC/B,iBAAiB,IAAI,0BAA0B,EAC/C,cAAc,IAAI,uBAAuB,GAC1C,MAAM,uBAAuB,CAAC;AAK/B,SAAS,uBAAuB,CAAC,KAAgC;IAC/D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAgC;IAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AACxC,CAAC;AAED,SAAS,OAAO,CAAC,KAAgC;IAC/C,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,aAAa,CAAC,KAAwB;IAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,qBAAqB,CAAC,GAAG,YAAY,GAAG,aAAa,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAgC;IACtE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;
|
|
1
|
+
{"version":3,"file":"tng-avatar.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/avatar/tng-avatar.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, computed, input, signal } from '@angular/core';\nimport {\n TngAvatar as TngAvatarPrimitive,\n TngAvatarFallback as TngAvatarFallbackPrimitive,\n TngAvatarImage as TngAvatarImagePrimitive,\n} from '@tailng-ui/primitives';\n\ntype TngAvatarShape = 'circle' | 'square';\ntype TngAvatarSize = 'lg' | 'md' | 'sm';\n\nfunction normalizeOptionalString(value: string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction normalizeAvatarAlt(value: string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : '';\n}\n\nfunction normalizeFallbackText(value: string): string {\n return value.length > 0 ? value : '?';\n}\n\nfunction toWords(value: string | null | undefined): readonly string[] {\n const normalized = normalizeOptionalString(value);\n if (normalized === null) {\n return [];\n }\n\n return normalized.split(/\\s+/).filter((part) => part.length > 0);\n}\n\nfunction toTwoLetterCode(word: string): string {\n return normalizeFallbackText(word.slice(0, 2).toUpperCase());\n}\n\nfunction toInitialCode(words: readonly string[]): string {\n const firstInitial = words[0]?.charAt(0) ?? '';\n const secondInitial = words[1]?.charAt(0) ?? '';\n return normalizeFallbackText(`${firstInitial}${secondInitial}`.toUpperCase());\n}\n\nexport function toTngAvatarFallbackText(value: string | null | undefined): string {\n const words = toWords(value);\n if (words.length === 0) {\n return '?';\n }\n\n if (words.length === 1) {\n return toTwoLetterCode(words[0] ?? '');\n }\n\n return toInitialCode(words);\n}\n\n@Component({\n standalone: true,\n selector: 'tng-avatar',\n imports: [TngAvatarPrimitive, TngAvatarImagePrimitive, TngAvatarFallbackPrimitive],\n templateUrl: './tng-avatar.component.html',\n styleUrl: './tng-avatar.component.css',\n})\nexport class TngAvatarComponent {\n public readonly alt = input<string | null>('Avatar');\n public readonly fallback = input<string | null>(null);\n public readonly shape = input<TngAvatarShape>('circle');\n public readonly size = input<TngAvatarSize>('md');\n public readonly src = input<string | null>(null);\n\n private readonly imageLoadFailed = signal(false);\n protected readonly fallbackText = computed<string>(() =>\n toTngAvatarFallbackText(this.fallback()),\n );\n protected readonly resolvedAlt = computed<string | null>(() =>\n normalizeAvatarAlt(this.alt()),\n );\n protected readonly resolvedSrc = computed<string | null>(() =>\n normalizeOptionalString(this.src()),\n );\n protected readonly showFallback = computed<boolean>(\n () => this.resolvedSrc() === null || this.imageLoadFailed(),\n );\n\n public onImageError(): void {\n this.imageLoadFailed.set(true);\n }\n\n public onImageLoad(): void {\n this.imageLoadFailed.set(false);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-badge.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/badge/tng-badge.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,
|
|
1
|
+
{"version":3,"file":"tng-badge.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/badge/tng-badge.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,qBAKa,iBAAkB,SAAQ,iBAAiB;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-badge.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/badge/tng-badge.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"tng-badge.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/badge/tng-badge.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO/D,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,iBAAiB;CAAG,CAAA;AAA9C,iBAAiB;IAL7B,SAAS,CAAC;QACT,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,UAAU;KACrB,CAAC;GACW,iBAAiB,CAA6B","sourcesContent":["import { Directive } from '@angular/core';\nimport { TngBadge as TngBadgePrimitive } from '@tailng-ui/primitives';\n\n@Directive({\n standalone: true,\n selector: '[tngBadge]',\n exportAs: 'tngBadge',\n})\nexport class TngBadgeComponent extends TngBadgePrimitive {}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-button.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/button/tng-button.component.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEhF,KAAK,oBAAoB,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAChE,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/C,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzE,
|
|
1
|
+
{"version":3,"file":"tng-button.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/button/tng-button.component.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEhF,KAAK,oBAAoB,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAChE,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/C,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzE,qBAOa,kBAAkB;IAC7B,SAAgB,UAAU,2DAAuC;IACjE,SAAgB,YAAY,qDAA8B;IAC1D,SAAgB,YAAY,yFAEzB;IACH,SAAgB,YAAY,qHAKzB;IACH,SAAgB,WAAW,yFAExB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,IAAI,qDAA8B;IAClD,SAAgB,IAAI,qDAAmC;IACvD,SAAgB,IAAI,oDAAiC;CACtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-button.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/button/tng-button.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,QAAQ,IAAI,iBAAiB,GAC9B,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"tng-button.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/button/tng-button.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,QAAQ,IAAI,iBAAiB,GAC9B,MAAM,uBAAuB,CAAC;AAexB,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACb,UAAU,GAAG,KAAK,CAAsB,OAAO,CAAC,CAAC;IACjD,YAAY,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAC1C,YAAY,GAAG,KAAK,CAAuC,IAAI,EAAE;QAC/E,SAAS,EAAE,6BAA6B;KACzC,CAAC,CAAC;IACa,YAAY,GAAG,KAAK,CAGlC,IAAI,EAAE;QACN,SAAS,EAAE,0BAA0B;KACtC,CAAC,CAAC;IACa,WAAW,GAAG,KAAK,CAAuC,IAAI,EAAE;QAC9E,SAAS,EAAE,6BAA6B;KACzC,CAAC,CAAC;IACa,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,IAAI,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAClC,IAAI,GAAG,KAAK,CAAgB,SAAS,CAAC,CAAC;IACvC,IAAI,GAAG,KAAK,CAAe,QAAQ,CAAC,CAAC;CACtD,CAAA;AArBY,kBAAkB;IAP9B,SAAS,CAAC;QACT,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,CAAC,iBAAiB,CAAC;QAC5B,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE,4BAA4B;KACvC,CAAC;GACW,kBAAkB,CAqB9B","sourcesContent":["import { booleanAttribute, Component, input } from '@angular/core';\nimport {\n coerceTngPressAriaHasPopup,\n coerceTngPressNullableBoolean,\n TngPress as TngPressPrimitive,\n} from '@tailng-ui/primitives';\nimport type { TngPressAriaHasPopup, TngPressType } from '@tailng-ui/primitives';\n\ntype NullableBooleanInput = boolean | null | string | undefined;\nexport type TngButtonAppearance = 'ghost' | 'outline' | 'solid';\nexport type TngButtonSize = 'lg' | 'md' | 'sm';\nexport type TngButtonTone = 'danger' | 'neutral' | 'primary' | 'success';\n\n@Component({\n standalone: true,\n selector: 'tng-button',\n imports: [TngPressPrimitive],\n templateUrl: './tng-button.component.html',\n styleUrl: './tng-button.component.css',\n})\nexport class TngButtonComponent {\n public readonly appearance = input<TngButtonAppearance>('solid');\n public readonly ariaControls = input<string | null>(null);\n public readonly ariaExpanded = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngPressNullableBoolean,\n });\n public readonly ariaHasPopup = input<\n TngPressAriaHasPopup | null,\n boolean | null | string | undefined\n >(null, {\n transform: coerceTngPressAriaHasPopup,\n });\n public readonly ariaPressed = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngPressNullableBoolean,\n });\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly size = input<TngButtonSize>('md');\n public readonly tone = input<TngButtonTone>('primary');\n public readonly type = input<TngPressType>('button');\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-code-block.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/code-block/tng-code-block.component.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,SAAS,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AASxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAalG,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,MAAM,CAAC;AACpD,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAChF,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;AAC9D,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG,MAAM,CAAC;AAC3D,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,aAAa,GAAG,cAAc,GAAG,MAAM,CAAC;AACxF,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,MAAM,CAAC;AACxD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAElE,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,uBAAuB,CAAC;CAChC;AAkPD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,yBAAyB,CAMxF;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAOlF;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEnF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAMlF;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,kBAAkB,SAAI,GACrB,SAAS,MAAM,EAAE,CAGnB;AAED,
|
|
1
|
+
{"version":3,"file":"tng-code-block.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/code-block/tng-code-block.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-code-block.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/code-block/tng-code-block.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n booleanAttribute,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n type OnDestroy,\n} from '@angular/core';\nimport { DomSanitizer, type SafeHtml } from '@angular/platform-browser';\nimport {\n TngCodeBlock as TngCodeBlockPrimitive,\n TngCodeBlockBody as TngCodeBlockBodyPrimitive,\n TngCodeBlockCode as TngCodeBlockCodePrimitive,\n TngCodeBlockGutter as TngCodeBlockGutterPrimitive,\n TngCodeBlockHeader as TngCodeBlockHeaderPrimitive,\n TngCopy,\n} from '@tailng-ui/primitives';\nimport type { TngCopyErrorEvent, TngCopyEvent, TngCopySuccessEvent } from '@tailng-ui/primitives';\nimport {\n escapeTngCodeHtml,\n normalizeTngCodeLanguage,\n resolveTngCodeHighlightResult,\n TNG_CODE_HIGHLIGHTING_CONFIG,\n type TngCodeHighlightToken,\n type TngCodeHighlightTokenLine,\n type TngCodeHighlightRequest,\n type TngNormalizedCodeHighlightResult,\n type TngResolvedCodeHighlightingConfig,\n} from './highlighting';\n\nexport type TngCodeBlockCopyMode = boolean | 'auto';\nexport type TngCodeBlockHighlightLineInput = number | readonly [number, number];\nexport type TngCodeBlockHighlightMode = 'auto' | 'off' | 'on';\nexport type TngCodeBlockLineNumbersMode = boolean | 'auto';\nexport type TngCodeBlockRenderState = 'error' | 'highlighted' | 'highlighting' | 'idle';\nexport type TngCodeBlockSanitizeHtml = boolean | 'auto';\nexport type TngCodeBlockVariant = 'compact' | 'default' | 'ghost';\n\nexport interface TngCodeBlockCopyContext {\n code: string;\n language: string | null;\n theme: string | null;\n}\n\nexport interface TngCodeBlockRenderStateChange {\n error?: unknown;\n state: TngCodeBlockRenderState;\n}\n\ntype TngCodeBlockCopyState = 'copied' | 'error' | 'idle';\n\ntype TngCodeBlockRenderRequest = Readonly<{\n adapter: string | null;\n code: string;\n includeLineWrappers: boolean;\n language: string | null;\n theme: string | null;\n}>;\n\ntype TngCodeBlockRenderedLine = Readonly<{\n dimmed: boolean;\n highlighted: boolean;\n html: SafeHtml | string;\n lineNumber: number;\n}>;\n\nconst defaultCopyResetDuration = 1500;\nconst highlightModeSet = new Set<TngCodeBlockHighlightMode>(['auto', 'off', 'on']);\n\nfunction normalizeOptionalString(value: string | null | undefined): string | null {\n if (value === null || value === undefined) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction toRoundedPositiveNumber(value: number): number {\n return Math.max(0, Math.round(value));\n}\n\nfunction coerceOptionalBoolean(value: boolean | string | null | undefined): boolean | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return booleanAttribute(value);\n}\n\nfunction coercePositiveInteger(value: number | string, fallback: number): number {\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return fallback;\n }\n\n return Math.max(1, Math.round(numericValue));\n}\n\nfunction coerceOptionalPositiveNumber(value: number | string | undefined): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return undefined;\n }\n\n return toRoundedPositiveNumber(numericValue);\n}\n\nfunction coerceTngCodeBlockCopyMode(\n value: TngCodeBlockCopyMode | boolean | string | null | undefined,\n): TngCodeBlockCopyMode {\n if (value === 'auto' || value === undefined || value === null) {\n return 'auto';\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return 'auto';\n}\n\nfunction coerceTngCodeBlockLineNumbersMode(\n value: TngCodeBlockLineNumbersMode | boolean | string | null | undefined,\n): TngCodeBlockLineNumbersMode {\n if (value === 'auto') {\n return 'auto';\n }\n\n if (value === undefined || value === null) {\n return false;\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return false;\n}\n\nfunction coerceTngCodeBlockSanitizeHtml(\n value: TngCodeBlockSanitizeHtml | string | null | undefined,\n): TngCodeBlockSanitizeHtml {\n if (value === undefined || value === null || value === 'auto') {\n return 'auto';\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return 'auto';\n}\n\nfunction normalizeHighlightLineNumber(value: number): number | null {\n if (!Number.isFinite(value)) {\n return null;\n }\n\n const normalized = Math.round(value);\n return normalized > 0 ? normalized : null;\n}\n\nfunction toNormalizedHighlightLineSet(\n value: readonly TngCodeBlockHighlightLineInput[] | null | undefined,\n): ReadonlySet<number> {\n if (value === undefined || value === null || value.length === 0) {\n return new Set<number>();\n }\n\n const normalizedValues = new Set<number>();\n\n for (const entry of value) {\n if (typeof entry === 'number') {\n const normalized = normalizeHighlightLineNumber(entry);\n if (normalized !== null) {\n normalizedValues.add(normalized);\n }\n continue;\n }\n\n const [start, end] = entry;\n const normalizedStart = normalizeHighlightLineNumber(start);\n const normalizedEnd = normalizeHighlightLineNumber(end);\n if (normalizedStart === null || normalizedEnd === null) {\n continue;\n }\n\n const from = Math.min(normalizedStart, normalizedEnd);\n const to = Math.max(normalizedStart, normalizedEnd);\n for (let current = from; current <= to; current += 1) {\n normalizedValues.add(current);\n }\n }\n\n return normalizedValues;\n}\n\nfunction tokenClassNameToAttributeValue(className: string | null | undefined): string {\n if (className === null || className === undefined) {\n return '';\n }\n\n return className\n .trim()\n .split(/\\s+/)\n .filter((token) => token.length > 0)\n .join(' ');\n}\n\nfunction renderToken(token: TngCodeHighlightToken): string {\n const escapedContent = escapeTngCodeHtml(token.content);\n const normalizedClassName = tokenClassNameToAttributeValue(token.className);\n if (normalizedClassName.length === 0) {\n return escapedContent;\n }\n\n return `<span class=\"${escapeTngCodeHtml(normalizedClassName)}\">${escapedContent}</span>`;\n}\n\nfunction renderTokenLine(line: TngCodeHighlightTokenLine): string {\n return line.map((token) => renderToken(token)).join('');\n}\n\nfunction splitCodeLines(code: string): readonly string[] {\n if (code.length === 0) {\n return [''];\n }\n\n const lines = code.split('\\n');\n if (lines.length > 1 && lines[lines.length - 1] === '') {\n lines.pop();\n }\n\n return lines;\n}\n\nfunction toNormalizedCopyError(value: unknown): Error {\n if (value instanceof Error) {\n return value;\n }\n\n if (typeof value === 'object' && value !== null && 'error' in value) {\n const nestedError = (value as { error: unknown }).error;\n if (nestedError instanceof Error) {\n return nestedError;\n }\n }\n\n return new Error('Copy failed.');\n}\n\nfunction toCssSizeValue(value: number | string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) {\n return null;\n }\n\n return `${Math.max(0, value)}px`;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction shouldHighlight(mode: TngCodeBlockHighlightMode): boolean {\n return mode === 'auto' || mode === 'on';\n}\n\nexport function coerceTngCodeBlockHighlightMode(value: string): TngCodeBlockHighlightMode {\n if (highlightModeSet.has(value as TngCodeBlockHighlightMode)) {\n return value as TngCodeBlockHighlightMode;\n }\n\n return 'auto';\n}\n\nexport function coerceTngCodeBlockCopyResetDuration(value: number | string): number {\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return defaultCopyResetDuration;\n }\n\n return toRoundedPositiveNumber(numericValue);\n}\n\nexport function coerceTngCodeBlockStartingLineNumber(value: number | string): number {\n return coercePositiveInteger(value, 1);\n}\n\nexport function normalizeTngCodeBlockCode(value: string | null | undefined): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n return value.replace(/\\r\\n?/g, '\\n');\n}\n\nexport function toTngCodeBlockLineNumbers(\n code: string,\n startingLineNumber = 1,\n): readonly number[] {\n const normalizedStart = Math.max(1, Math.round(startingLineNumber));\n return splitCodeLines(code).map((_, index) => normalizedStart + index);\n}\n\n@Component({\n selector: 'tng-code-block',\n imports: [\n TngCodeBlockPrimitive,\n TngCodeBlockHeaderPrimitive,\n TngCodeBlockBodyPrimitive,\n TngCodeBlockGutterPrimitive,\n TngCodeBlockCodePrimitive,\n TngCopy,\n ],\n templateUrl: './tng-code-block.component.html',\n styleUrl: './tng-code-block.component.css',\n})\nexport class TngCodeBlockComponent implements OnDestroy {\n public readonly adapter = input<string | null>(null);\n public readonly caption = input<string | null>(null);\n public readonly code = input<string>('');\n public readonly copyMode = input<TngCodeBlockCopyMode, TngCodeBlockCopyMode | boolean | string | null | undefined>(\n 'auto',\n {\n alias: 'copy',\n transform: coerceTngCodeBlockCopyMode,\n },\n );\n public readonly copyLabel = input<string>('Copy code');\n public readonly copiedLabel = input<string>('Copied');\n public readonly copyResetDuration = input<number, number | string>(defaultCopyResetDuration, {\n transform: coerceTngCodeBlockCopyResetDuration,\n });\n public readonly copySuccessDurationMs = input<number | undefined, number | string | undefined>(\n undefined,\n {\n transform: coerceOptionalPositiveNumber,\n },\n );\n public readonly copyText = input<string | ((ctx: TngCodeBlockCopyContext) => string) | null>(null);\n public readonly errorLabel = input<string>('Copy failed');\n public readonly focusLines = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly highlight = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly highlightDebounceMs = input<number, number | string>(0, {\n transform: coerceTngCodeBlockCopyResetDuration,\n });\n public readonly highlightLines = input<readonly TngCodeBlockHighlightLineInput[] | null>(null);\n public readonly highlightMode = input<TngCodeBlockHighlightMode, string>('auto', {\n transform: coerceTngCodeBlockHighlightMode,\n });\n public readonly language = input<string | null>(null);\n public readonly lineNumbersMode = input<\n TngCodeBlockLineNumbersMode,\n TngCodeBlockLineNumbersMode | boolean | string | null | undefined\n >(false, {\n alias: 'lineNumbers',\n transform: coerceTngCodeBlockLineNumbersMode,\n });\n public readonly maxHeight = input<string | number | null>(null);\n public readonly sanitizeHtml = input<\n TngCodeBlockSanitizeHtml,\n TngCodeBlockSanitizeHtml | string | null | undefined\n >('auto', {\n transform: coerceTngCodeBlockSanitizeHtml,\n });\n public readonly showHeader = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly showLanguageBadge = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly showLineNumbers = input<boolean | undefined, boolean | string | null | undefined>(\n undefined,\n {\n transform: coerceOptionalBoolean,\n },\n );\n public readonly startingLineNumber = input<number, number | string>(1, {\n transform: coerceTngCodeBlockStartingLineNumber,\n });\n public readonly theme = input<string | null>(null);\n public readonly title = input<string | null>(null);\n public readonly variant = input<TngCodeBlockVariant>('default');\n public readonly wrap = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n public readonly copy = output<TngCopyEvent>();\n public readonly copyError = output<TngCopyErrorEvent>();\n public readonly copySuccess = output<TngCopySuccessEvent>();\n public readonly renderStateChange = output<TngCodeBlockRenderStateChange>();\n\n public readonly tngCopied = output<string>();\n public readonly tngCopyError = output<Error>();\n\n protected readonly copyButtonLabel = computed((): string => {\n const state = this.copyState();\n if (state === 'copied') {\n return this.copiedLabel();\n }\n\n if (state === 'error') {\n return this.errorLabel();\n }\n\n return this.copyLabel();\n });\n\n protected readonly copyPayload = computed((): string => {\n const value = this.copyText();\n if (typeof value === 'function') {\n try {\n return value({\n code: this.normalizedCode(),\n language: this.languageForBadge(),\n theme: normalizeTngCodeLanguage(this.theme()),\n });\n } catch {\n return this.normalizedCode();\n }\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n return this.normalizedCode();\n });\n\n protected readonly dataHasCopy = computed((): 'false' | 'true' =>\n this.shouldShowCopyAction() ? 'true' : 'false',\n );\n\n protected readonly dataHasTitle = computed((): 'false' | 'true' =>\n this.titleText() === null ? 'false' : 'true',\n );\n\n protected readonly dataHighlighted = computed((): 'false' | 'true' =>\n this.renderState() === 'highlighted' ? 'true' : 'false',\n );\n\n protected readonly dataWrap = computed((): 'false' | 'true' => (this.wrap() ? 'true' : 'false'));\n\n protected readonly effectiveCopyResetDuration = computed((): number => {\n return this.copySuccessDurationMs() ?? this.copyResetDuration();\n });\n\n protected readonly effectiveLineNumbers = computed((): boolean => {\n const legacyValue = this.showLineNumbers();\n if (legacyValue !== undefined) {\n return legacyValue;\n }\n\n const mode = this.lineNumbersMode();\n if (mode === 'auto') {\n return splitCodeLines(this.normalizedCode()).length > 1;\n }\n\n return mode;\n });\n\n protected readonly hasHeaderContent = computed((): boolean => {\n return this.titleText() !== null || this.hasLanguageBadge() || this.shouldShowCopyAction();\n });\n\n protected readonly hasLanguageBadge = computed((): boolean => {\n return this.showLanguageBadge() && this.languageForBadge() !== null;\n });\n\n protected readonly highlightLineSet = computed((): ReadonlySet<number> =>\n toNormalizedHighlightLineSet(this.highlightLines()),\n );\n\n protected readonly isHighlighting = computed((): boolean => this.renderState() === 'highlighting');\n\n protected readonly languageForBadge = computed((): string | null => {\n return this.resolvedLanguage() ?? this.normalizedLanguage();\n });\n\n protected readonly languageLabel = computed((): string => {\n return this.languageForBadge() ?? 'text';\n });\n\n protected readonly lineNumbers = computed((): readonly number[] => {\n return this.renderedLines().map((line) => line.lineNumber);\n });\n\n protected readonly maxHeightCssValue = computed((): string | null => toCssSizeValue(this.maxHeight()));\n\n protected readonly normalizedCode = computed((): string => normalizeTngCodeBlockCode(this.code()));\n\n protected readonly renderState = signal<TngCodeBlockRenderState>('idle');\n\n protected readonly renderedLines = computed((): readonly TngCodeBlockRenderedLine[] => {\n const baseLines = this.baseLineHtml();\n const start = this.startingLineNumber();\n const highlightSet = this.highlightLineSet();\n const shouldDim = this.focusLines() && highlightSet.size > 0;\n\n return baseLines.map((html, index) => {\n const lineNumber = start + index;\n const highlighted = highlightSet.has(lineNumber);\n\n return {\n dimmed: shouldDim && !highlighted,\n highlighted,\n html,\n lineNumber,\n };\n });\n });\n\n protected readonly shouldRenderBodyLineNumbers = computed((): boolean => this.effectiveLineNumbers());\n\n protected readonly shouldRenderHeader = computed((): boolean => {\n return this.showHeader() && this.hasHeaderContent();\n });\n\n protected readonly shouldShowCopyAction = computed((): boolean => {\n const mode = this.copyMode();\n if (mode === 'auto') {\n return this.normalizedCode().length > 0;\n }\n\n return mode;\n });\n\n protected readonly titleText = computed((): string | null => normalizeOptionalString(this.title()));\n\n private readonly baseLineHtml = signal<readonly (SafeHtml | string)[]>(['']);\n private readonly copyState = signal<TngCodeBlockCopyState>('idle');\n private readonly domSanitizer = inject(DomSanitizer);\n private readonly highlightingConfig = inject<TngResolvedCodeHighlightingConfig>(\n TNG_CODE_HIGHLIGHTING_CONFIG,\n );\n private readonly normalizedLanguage = computed((): string | null => normalizeTngCodeLanguage(this.language()));\n private readonly resolvedLanguage = signal<string | null>(null);\n\n private copyResetTimer: ReturnType<typeof setTimeout> | null = null;\n private destroyed = false;\n private highlightDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n private highlightRequestId = 0;\n private lastEmittedRenderState: TngCodeBlockRenderState = 'idle';\n private readonly renderCache = new Map<string, TngNormalizedCodeHighlightResult | null>();\n\n public constructor() {\n effect((): void => {\n const request: TngCodeBlockRenderRequest = {\n adapter: normalizeTngCodeLanguage(this.adapter()),\n code: this.normalizedCode(),\n includeLineWrappers: this.shouldIncludeLineWrappers(),\n language: this.normalizedLanguage(),\n theme: normalizeTngCodeLanguage(this.theme()),\n };\n\n this.enqueueRenderRequest({\n request,\n shouldHighlight: this.shouldHighlightCode(),\n });\n });\n }\n\n public ngOnDestroy(): void {\n this.destroyed = true;\n this.highlightRequestId += 1;\n this.clearCopyResetTimer();\n this.clearHighlightDebounceTimer();\n }\n\n protected onPrimitiveCopy(...args: readonly unknown[]): void {\n const [event] = args;\n if (\n typeof event === 'object' &&\n event !== null &&\n 'text' in event &&\n 'trigger' in event &&\n typeof (event as { text: unknown }).text === 'string' &&\n typeof (event as { trigger: unknown }).trigger === 'string'\n ) {\n this.copy.emit(event as TngCopyEvent);\n }\n }\n\n protected onPrimitiveCopyError(...args: readonly unknown[]): void {\n const [event] = args;\n const normalizedError = toNormalizedCopyError(event);\n\n this.copyState.set('error');\n this.tngCopyError.emit(normalizedError);\n\n if (typeof event === 'object' && event !== null && 'error' in event) {\n this.copyError.emit(event as TngCopyErrorEvent);\n } else {\n this.copyError.emit({ error: normalizedError });\n }\n\n this.scheduleCopyStateReset();\n }\n\n protected onPrimitiveCopySuccess(...args: readonly unknown[]): void {\n const [event] = args;\n if (\n typeof event !== 'object' ||\n event === null ||\n !('text' in event) ||\n !('method' in event) ||\n typeof (event as { text: unknown }).text !== 'string' ||\n typeof (event as { method: unknown }).method !== 'string'\n ) {\n return;\n }\n\n const payload = event as TngCopySuccessEvent;\n this.copyState.set('copied');\n this.copySuccess.emit(payload);\n this.tngCopied.emit(payload.text);\n this.scheduleCopyStateReset();\n }\n\n private applyPlainText(code: string, language: string | null): void {\n this.resolvedLanguage.set(language);\n this.baseLineHtml.set(splitCodeLines(code).map((line) => escapeTngCodeHtml(line)));\n }\n\n private applyResolvedHighlightResult(\n result: TngNormalizedCodeHighlightResult,\n request: TngCodeBlockRenderRequest,\n ): boolean {\n this.resolvedLanguage.set(result.language ?? request.language);\n\n if (result.kind === 'tokens') {\n if (result.tokens.length === 0) {\n return false;\n }\n\n this.baseLineHtml.set(result.tokens.map((line) => renderTokenLine(line)));\n return true;\n }\n\n const htmlLines = result.html.split('\\n');\n if (htmlLines.length === 0 || (htmlLines.length === 1 && htmlLines[0].length === 0)) {\n return false;\n }\n\n const shouldBypassSanitization = this.sanitizeHtml() === false && result.trustedHtml;\n if (shouldBypassSanitization) {\n this.baseLineHtml.set(\n htmlLines.map((line) => this.domSanitizer.bypassSecurityTrustHtml(line)),\n );\n return true;\n }\n\n this.baseLineHtml.set(htmlLines);\n return true;\n }\n\n private buildCacheKey(request: TngCodeBlockRenderRequest): string {\n return [\n request.adapter ?? '',\n request.language ?? '',\n request.theme ?? '',\n request.includeLineWrappers ? '1' : '0',\n request.code,\n ].join('\\u241f');\n }\n\n private clearCopyResetTimer(): void {\n if (this.copyResetTimer === null) {\n return;\n }\n\n clearTimeout(this.copyResetTimer);\n this.copyResetTimer = null;\n }\n\n private clearHighlightDebounceTimer(): void {\n if (this.highlightDebounceTimer === null) {\n return;\n }\n\n clearTimeout(this.highlightDebounceTimer);\n this.highlightDebounceTimer = null;\n }\n\n private enqueueRenderRequest(input: Readonly<{ request: TngCodeBlockRenderRequest; shouldHighlight: boolean }>): void {\n this.clearHighlightDebounceTimer();\n\n const debounceMs = this.highlightDebounceMs();\n if (debounceMs <= 0) {\n void this.renderRequest(input);\n return;\n }\n\n this.highlightDebounceTimer = setTimeout((): void => {\n this.highlightDebounceTimer = null;\n void this.renderRequest(input);\n }, debounceMs);\n }\n\n private isStaleRequest(requestId: number): boolean {\n return this.destroyed || requestId !== this.highlightRequestId;\n }\n\n private scheduleCopyStateReset(): void {\n this.clearCopyResetTimer();\n this.copyResetTimer = setTimeout((): void => {\n this.copyState.set('idle');\n this.copyResetTimer = null;\n }, this.effectiveCopyResetDuration());\n }\n\n private setRenderState(state: TngCodeBlockRenderState, error?: unknown): void {\n this.renderState.set(state);\n\n if (this.lastEmittedRenderState === state) {\n return;\n }\n\n this.lastEmittedRenderState = state;\n if (state === 'error') {\n this.renderStateChange.emit({ error, state });\n return;\n }\n\n this.renderStateChange.emit({ state });\n }\n\n private shouldHighlightCode(): boolean {\n if (!this.highlight()) {\n return false;\n }\n\n return shouldHighlight(this.highlightMode());\n }\n\n private shouldIncludeLineWrappers(): boolean {\n return this.effectiveLineNumbers() || this.highlightLineSet().size > 0 || this.focusLines();\n }\n\n private toHighlightRequest(request: TngCodeBlockRenderRequest): TngCodeHighlightRequest {\n return {\n adapter: request.adapter,\n code: request.code,\n includeLineWrappers: request.includeLineWrappers,\n language: request.language,\n theme: request.theme,\n };\n }\n\n private async renderRequest(input: Readonly<{ request: TngCodeBlockRenderRequest; shouldHighlight: boolean }>): Promise<void> {\n const requestId = this.highlightRequestId + 1;\n this.highlightRequestId = requestId;\n\n if (!input.shouldHighlight) {\n this.applyPlainText(input.request.code, input.request.language);\n this.setRenderState('idle');\n return;\n }\n\n this.setRenderState('highlighting');\n\n try {\n const cacheKey = this.buildCacheKey(input.request);\n let resolvedResult = this.renderCache.get(cacheKey);\n if (resolvedResult === undefined) {\n resolvedResult = await resolveTngCodeHighlightResult(\n this.toHighlightRequest(input.request),\n this.highlightingConfig,\n );\n this.renderCache.set(cacheKey, resolvedResult);\n }\n\n if (this.isStaleRequest(requestId)) {\n return;\n }\n\n if (resolvedResult === null) {\n this.applyPlainText(input.request.code, input.request.language);\n this.setRenderState('highlighted');\n return;\n }\n\n const didRenderHighlight = this.applyResolvedHighlightResult(resolvedResult, input.request);\n if (!didRenderHighlight) {\n this.applyPlainText(input.request.code, input.request.language);\n }\n\n this.setRenderState('highlighted');\n } catch (error) {\n if (this.isStaleRequest(requestId)) {\n return;\n }\n\n this.applyPlainText(input.request.code, input.request.language);\n this.setRenderState('error', error);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tng-code-block.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/code-block/tng-code-block.component.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,MAAM,EACN,MAAM,EACN,KAAK,EACL,MAAM,EACN,MAAM,GAEP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAiB,MAAM,2BAA2B,CAAC;AACxE,OAAO,EACL,YAAY,IAAI,qBAAqB,EACrC,gBAAgB,IAAI,yBAAyB,EAC7C,gBAAgB,IAAI,yBAAyB,EAC7C,kBAAkB,IAAI,2BAA2B,EACjD,kBAAkB,IAAI,2BAA2B,EACjD,OAAO,GACR,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,GAM7B,MAAM,gBAAgB,CAAC;AAsCxB,MAAM,wBAAwB,GAAG,IAAI,CAAC;AACtC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAA4B,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAEnF,SAAS,uBAAuB,CAAC,KAAgC;IAC/D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,qBAAqB,CAAC,KAA0C;IACvE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAsB,EAAE,QAAgB;IACrE,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAkC;IACtE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,uBAAuB,CAAC,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,0BAA0B,CACjC,KAAiE;IAEjE,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iCAAiC,CACxC,KAAwE;IAExE,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,8BAA8B,CACrC,KAA2D;IAE3D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QAC9D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAa;IACjD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAmE;IAEnE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,GAAG,EAAU,CAAC;IAC3B,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE3C,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACnC,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;QAC3B,MAAM,eAAe,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,4BAA4B,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,eAAe,KAAK,IAAI,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YACvD,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QACpD,KAAK,IAAI,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YACrD,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,8BAA8B,CAAC,SAAoC;IAC1E,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAClD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,SAAS;SACb,IAAI,EAAE;SACN,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SACnC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,KAA4B;IAC/C,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,mBAAmB,GAAG,8BAA8B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5E,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,gBAAgB,iBAAiB,CAAC,mBAAmB,CAAC,KAAK,cAAc,SAAS,CAAC;AAC5F,CAAC;AAED,SAAS,eAAe,CAAC,IAA+B;IACtD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACvD,KAAK,CAAC,GAAG,EAAE,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QACpE,MAAM,WAAW,GAAI,KAA4B,CAAC,KAAK,CAAC;QACxD,IAAI,WAAW,YAAY,KAAK,EAAE,CAAC;YACjC,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,cAAc,CAAC,KAAyC;IAC/D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC;IACnC,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,SAAS,eAAe,CAAC,IAA+B;IACtD,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAAa;IAC3D,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAkC,CAAC,EAAE,CAAC;QAC7D,OAAO,KAAkC,CAAC;IAC5C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,KAAsB;IACxE,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED,OAAO,uBAAuB,CAAC,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,KAAsB;IACzE,OAAO,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAgC;IACxE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,IAAY,EACZ,kBAAkB,GAAG,CAAC;IAEtB,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACpE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC;AACzE,CAAC;AAgBM,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChB,OAAO,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACrC,OAAO,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACrC,IAAI,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;IACzB,QAAQ,GAAG,KAAK,CAC9B,MAAM,EACN;QACE,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,0BAA0B;KACtC,CACF,CAAC;IACc,SAAS,GAAG,KAAK,CAAS,WAAW,CAAC,CAAC;IACvC,WAAW,GAAG,KAAK,CAAS,QAAQ,CAAC,CAAC;IACtC,iBAAiB,GAAG,KAAK,CAA0B,wBAAwB,EAAE;QAC3F,SAAS,EAAE,mCAAmC;KAC/C,CAAC,CAAC;IACa,qBAAqB,GAAG,KAAK,CAC3C,SAAS,EACT;QACE,SAAS,EAAE,4BAA4B;KACxC,CACF,CAAC;IACc,QAAQ,GAAG,KAAK,CAA6D,IAAI,CAAC,CAAC;IACnF,UAAU,GAAG,KAAK,CAAS,aAAa,CAAC,CAAC;IAC1C,UAAU,GAAG,KAAK,CAA4B,KAAK,EAAE;QACnE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,SAAS,GAAG,KAAK,CAA4B,IAAI,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,mBAAmB,GAAG,KAAK,CAA0B,CAAC,EAAE;QACtE,SAAS,EAAE,mCAAmC;KAC/C,CAAC,CAAC;IACa,cAAc,GAAG,KAAK,CAAmD,IAAI,CAAC,CAAC;IAC/E,aAAa,GAAG,KAAK,CAAoC,MAAM,EAAE;QAC/E,SAAS,EAAE,+BAA+B;KAC3C,CAAC,CAAC;IACa,QAAQ,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACtC,eAAe,GAAG,KAAK,CAGrC,KAAK,EAAE;QACP,KAAK,EAAE,aAAa;QACpB,SAAS,EAAE,iCAAiC;KAC7C,CAAC,CAAC;IACa,SAAS,GAAG,KAAK,CAAyB,IAAI,CAAC,CAAC;IAChD,YAAY,GAAG,KAAK,CAGlC,MAAM,EAAE;QACR,SAAS,EAAE,8BAA8B;KAC1C,CAAC,CAAC;IACa,UAAU,GAAG,KAAK,CAA4B,IAAI,EAAE;QAClE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,iBAAiB,GAAG,KAAK,CAA4B,IAAI,EAAE;QACzE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,eAAe,GAAG,KAAK,CACrC,SAAS,EACT;QACE,SAAS,EAAE,qBAAqB;KACjC,CACF,CAAC;IACc,kBAAkB,GAAG,KAAK,CAA0B,CAAC,EAAE;QACrE,SAAS,EAAE,oCAAoC;KAChD,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACnC,KAAK,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACnC,OAAO,GAAG,KAAK,CAAsB,SAAS,CAAC,CAAC;IAChD,IAAI,GAAG,KAAK,CAA4B,KAAK,EAAE;QAC7D,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IAEa,IAAI,GAAG,MAAM,EAAgB,CAAC;IAC9B,SAAS,GAAG,MAAM,EAAqB,CAAC;IACxC,WAAW,GAAG,MAAM,EAAuB,CAAC;IAC5C,iBAAiB,GAAG,MAAM,EAAiC,CAAC;IAE5D,SAAS,GAAG,MAAM,EAAU,CAAC;IAC7B,YAAY,GAAG,MAAM,EAAS,CAAC;IAE5B,eAAe,GAAG,QAAQ,CAAC,GAAW,EAAE;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEgB,WAAW,GAAG,QAAQ,CAAC,GAAW,EAAE;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,OAAO,KAAK,CAAC;oBACX,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE;oBAC3B,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE;oBACjC,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;iBAC9C,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEgB,WAAW,GAAG,QAAQ,CAAC,GAAqB,EAAE,CAC/D,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAC/C,CAAC;IAEiB,YAAY,GAAG,QAAQ,CAAC,GAAqB,EAAE,CAChE,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAC7C,CAAC;IAEiB,eAAe,GAAG,QAAQ,CAAC,GAAqB,EAAE,CACnE,IAAI,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CACxD,CAAC;IAEiB,QAAQ,GAAG,QAAQ,CAAC,GAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAE9E,0BAA0B,GAAG,QAAQ,CAAC,GAAW,EAAE;QACpE,OAAO,IAAI,CAAC,qBAAqB,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAClE,CAAC,CAAC,CAAC;IAEgB,oBAAoB,GAAG,QAAQ,CAAC,GAAY,EAAE;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACpC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEgB,gBAAgB,GAAG,QAAQ,CAAC,GAAY,EAAE;QAC3D,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEgB,gBAAgB,GAAG,QAAQ,CAAC,GAAY,EAAE;QAC3D,OAAO,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,CAAC;IACtE,CAAC,CAAC,CAAC;IAEgB,gBAAgB,GAAG,QAAQ,CAAC,GAAwB,EAAE,CACvE,4BAA4B,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CACpD,CAAC;IAEiB,cAAc,GAAG,QAAQ,CAAC,GAAY,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,CAAC;IAEhF,gBAAgB,GAAG,QAAQ,CAAC,GAAkB,EAAE;QACjE,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEgB,aAAa,GAAG,QAAQ,CAAC,GAAW,EAAE;QACvD,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,MAAM,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEgB,WAAW,GAAG,QAAQ,CAAC,GAAsB,EAAE;QAChE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEgB,iBAAiB,GAAG,QAAQ,CAAC,GAAkB,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAEpF,cAAc,GAAG,QAAQ,CAAC,GAAW,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEhF,WAAW,GAAG,MAAM,CAA0B,MAAM,CAAC,CAAC;IAEtD,aAAa,GAAG,QAAQ,CAAC,GAAwC,EAAE;QACpF,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;QAE7D,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACnC,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;YACjC,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAEjD,OAAO;gBACL,MAAM,EAAE,SAAS,IAAI,CAAC,WAAW;gBACjC,WAAW;gBACX,IAAI;gBACJ,UAAU;aACX,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEgB,2BAA2B,GAAG,QAAQ,CAAC,GAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAEnF,kBAAkB,GAAG,QAAQ,CAAC,GAAY,EAAE;QAC7D,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEgB,oBAAoB,GAAG,QAAQ,CAAC,GAAY,EAAE;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEgB,SAAS,GAAG,QAAQ,CAAC,GAAkB,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAEnF,YAAY,GAAG,MAAM,CAAiC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,SAAS,GAAG,MAAM,CAAwB,MAAM,CAAC,CAAC;IAClD,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IACpC,kBAAkB,GAAG,MAAM,CAC1C,4BAA4B,CAC7B,CAAC;IACe,kBAAkB,GAAG,QAAQ,CAAC,GAAkB,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC9F,gBAAgB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAExD,cAAc,GAAyC,IAAI,CAAC;IAC5D,SAAS,GAAG,KAAK,CAAC;IAClB,sBAAsB,GAAyC,IAAI,CAAC;IACpE,kBAAkB,GAAG,CAAC,CAAC;IACvB,sBAAsB,GAA4B,MAAM,CAAC;IAChD,WAAW,GAAG,IAAI,GAAG,EAAmD,CAAC;IAE1F;QACE,MAAM,CAAC,GAAS,EAAE;YAChB,MAAM,OAAO,GAA8B;gBACzC,OAAO,EAAE,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjD,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE;gBAC3B,mBAAmB,EAAE,IAAI,CAAC,yBAAyB,EAAE;gBACrD,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE;gBACnC,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;aAC9C,CAAC;YAEF,IAAI,CAAC,oBAAoB,CAAC;gBACxB,OAAO;gBACP,eAAe,EAAE,IAAI,CAAC,mBAAmB,EAAE;aAC5C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAES,eAAe,CAAC,GAAG,IAAwB;QACnD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACrB,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI;YACd,MAAM,IAAI,KAAK;YACf,SAAS,IAAI,KAAK;YAClB,OAAQ,KAA2B,CAAC,IAAI,KAAK,QAAQ;YACrD,OAAQ,KAA8B,CAAC,OAAO,KAAK,QAAQ,EAC3D,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAqB,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAES,oBAAoB,CAAC,GAAG,IAAwB;QACxD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACrB,MAAM,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAErD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAExC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;YACpE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAA0B,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAES,sBAAsB,CAAC,GAAG,IAAwB;QAC1D,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACrB,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI;YACd,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;YAClB,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC;YACpB,OAAQ,KAA2B,CAAC,IAAI,KAAK,QAAQ;YACrD,OAAQ,KAA6B,CAAC,MAAM,KAAK,QAAQ,EACzD,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,KAA4B,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEO,cAAc,CAAC,IAAY,EAAE,QAAuB;QAC1D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;IAEO,4BAA4B,CAClC,MAAwC,EACxC,OAAkC;QAElC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE/D,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YACpF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,wBAAwB,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,IAAI,MAAM,CAAC,WAAW,CAAC;QACrF,IAAI,wBAAwB,EAAE,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CACzE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,aAAa,CAAC,OAAkC;QACtD,OAAO;YACL,OAAO,CAAC,OAAO,IAAI,EAAE;YACrB,OAAO,CAAC,QAAQ,IAAI,EAAE;YACtB,OAAO,CAAC,KAAK,IAAI,EAAE;YACnB,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;YACvC,OAAO,CAAC,IAAI;SACb,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;IAEO,2BAA2B;QACjC,IAAI,IAAI,CAAC,sBAAsB,KAAK,IAAI,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC1C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAEO,oBAAoB,CAAC,KAAiF;QAC5G,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAEnC,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC9C,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,sBAAsB,GAAG,UAAU,CAAC,GAAS,EAAE;YAClD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACnC,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,EAAE,UAAU,CAAC,CAAC;IACjB,CAAC;IAEO,cAAc,CAAC,SAAiB;QACtC,OAAO,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,kBAAkB,CAAC;IACjE,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAS,EAAE;YAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACxC,CAAC;IAEO,cAAc,CAAC,KAA8B,EAAE,KAAe;QACpE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,sBAAsB,KAAK,KAAK,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACzC,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEO,yBAAyB;QAC/B,OAAO,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9F,CAAC;IAEO,kBAAkB,CAAC,OAAkC;QAC3D,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,KAAiF;QAC3G,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QAEpC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAEpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,cAAc,GAAG,MAAM,6BAA6B,CAClD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,EACtC,IAAI,CAAC,kBAAkB,CACxB,CAAC;gBACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAChE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,4BAA4B,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5F,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClE,CAAC;YAED,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF,CAAA;AApeY,qBAAqB;IAdjC,SAAS,CAAC;QACT,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE;YACP,qBAAqB;YACrB,2BAA2B;YAC3B,yBAAyB;YACzB,2BAA2B;YAC3B,yBAAyB;YACzB,OAAO;SACR;QACD,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,EAAE,gCAAgC;KAC3C,CAAC;GACW,qBAAqB,CAoejC","sourcesContent":["import {\n booleanAttribute,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n type OnDestroy,\n} from '@angular/core';\nimport { DomSanitizer, type SafeHtml } from '@angular/platform-browser';\nimport {\n TngCodeBlock as TngCodeBlockPrimitive,\n TngCodeBlockBody as TngCodeBlockBodyPrimitive,\n TngCodeBlockCode as TngCodeBlockCodePrimitive,\n TngCodeBlockGutter as TngCodeBlockGutterPrimitive,\n TngCodeBlockHeader as TngCodeBlockHeaderPrimitive,\n TngCopy,\n} from '@tailng-ui/primitives';\nimport type { TngCopyErrorEvent, TngCopyEvent, TngCopySuccessEvent } from '@tailng-ui/primitives';\nimport {\n escapeTngCodeHtml,\n normalizeTngCodeLanguage,\n resolveTngCodeHighlightResult,\n TNG_CODE_HIGHLIGHTING_CONFIG,\n type TngCodeHighlightToken,\n type TngCodeHighlightTokenLine,\n type TngCodeHighlightRequest,\n type TngNormalizedCodeHighlightResult,\n type TngResolvedCodeHighlightingConfig,\n} from './highlighting';\n\nexport type TngCodeBlockCopyMode = boolean | 'auto';\nexport type TngCodeBlockHighlightLineInput = number | readonly [number, number];\nexport type TngCodeBlockHighlightMode = 'auto' | 'off' | 'on';\nexport type TngCodeBlockLineNumbersMode = boolean | 'auto';\nexport type TngCodeBlockRenderState = 'error' | 'highlighted' | 'highlighting' | 'idle';\nexport type TngCodeBlockSanitizeHtml = boolean | 'auto';\nexport type TngCodeBlockVariant = 'compact' | 'default' | 'ghost';\n\nexport interface TngCodeBlockCopyContext {\n code: string;\n language: string | null;\n theme: string | null;\n}\n\nexport interface TngCodeBlockRenderStateChange {\n error?: unknown;\n state: TngCodeBlockRenderState;\n}\n\ntype TngCodeBlockCopyState = 'copied' | 'error' | 'idle';\n\ntype TngCodeBlockRenderRequest = Readonly<{\n adapter: string | null;\n code: string;\n includeLineWrappers: boolean;\n language: string | null;\n theme: string | null;\n}>;\n\ntype TngCodeBlockRenderedLine = Readonly<{\n dimmed: boolean;\n highlighted: boolean;\n html: SafeHtml | string;\n lineNumber: number;\n}>;\n\nconst defaultCopyResetDuration = 1500;\nconst highlightModeSet = new Set<TngCodeBlockHighlightMode>(['auto', 'off', 'on']);\n\nfunction normalizeOptionalString(value: string | null | undefined): string | null {\n if (value === null || value === undefined) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction toRoundedPositiveNumber(value: number): number {\n return Math.max(0, Math.round(value));\n}\n\nfunction coerceOptionalBoolean(value: boolean | string | null | undefined): boolean | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return booleanAttribute(value);\n}\n\nfunction coercePositiveInteger(value: number | string, fallback: number): number {\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return fallback;\n }\n\n return Math.max(1, Math.round(numericValue));\n}\n\nfunction coerceOptionalPositiveNumber(value: number | string | undefined): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return undefined;\n }\n\n return toRoundedPositiveNumber(numericValue);\n}\n\nfunction coerceTngCodeBlockCopyMode(\n value: TngCodeBlockCopyMode | boolean | string | null | undefined,\n): TngCodeBlockCopyMode {\n if (value === 'auto' || value === undefined || value === null) {\n return 'auto';\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return 'auto';\n}\n\nfunction coerceTngCodeBlockLineNumbersMode(\n value: TngCodeBlockLineNumbersMode | boolean | string | null | undefined,\n): TngCodeBlockLineNumbersMode {\n if (value === 'auto') {\n return 'auto';\n }\n\n if (value === undefined || value === null) {\n return false;\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return false;\n}\n\nfunction coerceTngCodeBlockSanitizeHtml(\n value: TngCodeBlockSanitizeHtml | string | null | undefined,\n): TngCodeBlockSanitizeHtml {\n if (value === undefined || value === null || value === 'auto') {\n return 'auto';\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return 'auto';\n}\n\nfunction normalizeHighlightLineNumber(value: number): number | null {\n if (!Number.isFinite(value)) {\n return null;\n }\n\n const normalized = Math.round(value);\n return normalized > 0 ? normalized : null;\n}\n\nfunction toNormalizedHighlightLineSet(\n value: readonly TngCodeBlockHighlightLineInput[] | null | undefined,\n): ReadonlySet<number> {\n if (value === undefined || value === null || value.length === 0) {\n return new Set<number>();\n }\n\n const normalizedValues = new Set<number>();\n\n for (const entry of value) {\n if (typeof entry === 'number') {\n const normalized = normalizeHighlightLineNumber(entry);\n if (normalized !== null) {\n normalizedValues.add(normalized);\n }\n continue;\n }\n\n const [start, end] = entry;\n const normalizedStart = normalizeHighlightLineNumber(start);\n const normalizedEnd = normalizeHighlightLineNumber(end);\n if (normalizedStart === null || normalizedEnd === null) {\n continue;\n }\n\n const from = Math.min(normalizedStart, normalizedEnd);\n const to = Math.max(normalizedStart, normalizedEnd);\n for (let current = from; current <= to; current += 1) {\n normalizedValues.add(current);\n }\n }\n\n return normalizedValues;\n}\n\nfunction tokenClassNameToAttributeValue(className: string | null | undefined): string {\n if (className === null || className === undefined) {\n return '';\n }\n\n return className\n .trim()\n .split(/\\s+/)\n .filter((token) => token.length > 0)\n .join(' ');\n}\n\nfunction renderToken(token: TngCodeHighlightToken): string {\n const escapedContent = escapeTngCodeHtml(token.content);\n const normalizedClassName = tokenClassNameToAttributeValue(token.className);\n if (normalizedClassName.length === 0) {\n return escapedContent;\n }\n\n return `<span class=\"${escapeTngCodeHtml(normalizedClassName)}\">${escapedContent}</span>`;\n}\n\nfunction renderTokenLine(line: TngCodeHighlightTokenLine): string {\n return line.map((token) => renderToken(token)).join('');\n}\n\nfunction splitCodeLines(code: string): readonly string[] {\n if (code.length === 0) {\n return [''];\n }\n\n const lines = code.split('\\n');\n if (lines.length > 1 && lines[lines.length - 1] === '') {\n lines.pop();\n }\n\n return lines;\n}\n\nfunction toNormalizedCopyError(value: unknown): Error {\n if (value instanceof Error) {\n return value;\n }\n\n if (typeof value === 'object' && value !== null && 'error' in value) {\n const nestedError = (value as { error: unknown }).error;\n if (nestedError instanceof Error) {\n return nestedError;\n }\n }\n\n return new Error('Copy failed.');\n}\n\nfunction toCssSizeValue(value: number | string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) {\n return null;\n }\n\n return `${Math.max(0, value)}px`;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction shouldHighlight(mode: TngCodeBlockHighlightMode): boolean {\n return mode === 'auto' || mode === 'on';\n}\n\nexport function coerceTngCodeBlockHighlightMode(value: string): TngCodeBlockHighlightMode {\n if (highlightModeSet.has(value as TngCodeBlockHighlightMode)) {\n return value as TngCodeBlockHighlightMode;\n }\n\n return 'auto';\n}\n\nexport function coerceTngCodeBlockCopyResetDuration(value: number | string): number {\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return defaultCopyResetDuration;\n }\n\n return toRoundedPositiveNumber(numericValue);\n}\n\nexport function coerceTngCodeBlockStartingLineNumber(value: number | string): number {\n return coercePositiveInteger(value, 1);\n}\n\nexport function normalizeTngCodeBlockCode(value: string | null | undefined): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n return value.replace(/\\r\\n?/g, '\\n');\n}\n\nexport function toTngCodeBlockLineNumbers(\n code: string,\n startingLineNumber = 1,\n): readonly number[] {\n const normalizedStart = Math.max(1, Math.round(startingLineNumber));\n return splitCodeLines(code).map((_, index) => normalizedStart + index);\n}\n\n@Component({\n standalone: true,\n selector: 'tng-code-block',\n imports: [\n TngCodeBlockPrimitive,\n TngCodeBlockHeaderPrimitive,\n TngCodeBlockBodyPrimitive,\n TngCodeBlockGutterPrimitive,\n TngCodeBlockCodePrimitive,\n TngCopy,\n ],\n templateUrl: './tng-code-block.component.html',\n styleUrl: './tng-code-block.component.css',\n})\nexport class TngCodeBlockComponent implements OnDestroy {\n public readonly adapter = input<string | null>(null);\n public readonly caption = input<string | null>(null);\n public readonly code = input<string>('');\n public readonly copyMode = input<TngCodeBlockCopyMode, TngCodeBlockCopyMode | boolean | string | null | undefined>(\n 'auto',\n {\n alias: 'copy',\n transform: coerceTngCodeBlockCopyMode,\n },\n );\n public readonly copyLabel = input<string>('Copy code');\n public readonly copiedLabel = input<string>('Copied');\n public readonly copyResetDuration = input<number, number | string>(defaultCopyResetDuration, {\n transform: coerceTngCodeBlockCopyResetDuration,\n });\n public readonly copySuccessDurationMs = input<number | undefined, number | string | undefined>(\n undefined,\n {\n transform: coerceOptionalPositiveNumber,\n },\n );\n public readonly copyText = input<string | ((ctx: TngCodeBlockCopyContext) => string) | null>(null);\n public readonly errorLabel = input<string>('Copy failed');\n public readonly focusLines = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly highlight = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly highlightDebounceMs = input<number, number | string>(0, {\n transform: coerceTngCodeBlockCopyResetDuration,\n });\n public readonly highlightLines = input<readonly TngCodeBlockHighlightLineInput[] | null>(null);\n public readonly highlightMode = input<TngCodeBlockHighlightMode, string>('auto', {\n transform: coerceTngCodeBlockHighlightMode,\n });\n public readonly language = input<string | null>(null);\n public readonly lineNumbersMode = input<\n TngCodeBlockLineNumbersMode,\n TngCodeBlockLineNumbersMode | boolean | string | null | undefined\n >(false, {\n alias: 'lineNumbers',\n transform: coerceTngCodeBlockLineNumbersMode,\n });\n public readonly maxHeight = input<string | number | null>(null);\n public readonly sanitizeHtml = input<\n TngCodeBlockSanitizeHtml,\n TngCodeBlockSanitizeHtml | string | null | undefined\n >('auto', {\n transform: coerceTngCodeBlockSanitizeHtml,\n });\n public readonly showHeader = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly showLanguageBadge = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly showLineNumbers = input<boolean | undefined, boolean | string | null | undefined>(\n undefined,\n {\n transform: coerceOptionalBoolean,\n },\n );\n public readonly startingLineNumber = input<number, number | string>(1, {\n transform: coerceTngCodeBlockStartingLineNumber,\n });\n public readonly theme = input<string | null>(null);\n public readonly title = input<string | null>(null);\n public readonly variant = input<TngCodeBlockVariant>('default');\n public readonly wrap = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n public readonly copy = output<TngCopyEvent>();\n public readonly copyError = output<TngCopyErrorEvent>();\n public readonly copySuccess = output<TngCopySuccessEvent>();\n public readonly renderStateChange = output<TngCodeBlockRenderStateChange>();\n\n public readonly tngCopied = output<string>();\n public readonly tngCopyError = output<Error>();\n\n protected readonly copyButtonLabel = computed((): string => {\n const state = this.copyState();\n if (state === 'copied') {\n return this.copiedLabel();\n }\n\n if (state === 'error') {\n return this.errorLabel();\n }\n\n return this.copyLabel();\n });\n\n protected readonly copyPayload = computed((): string => {\n const value = this.copyText();\n if (typeof value === 'function') {\n try {\n return value({\n code: this.normalizedCode(),\n language: this.languageForBadge(),\n theme: normalizeTngCodeLanguage(this.theme()),\n });\n } catch {\n return this.normalizedCode();\n }\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n return this.normalizedCode();\n });\n\n protected readonly dataHasCopy = computed((): 'false' | 'true' =>\n this.shouldShowCopyAction() ? 'true' : 'false',\n );\n\n protected readonly dataHasTitle = computed((): 'false' | 'true' =>\n this.titleText() === null ? 'false' : 'true',\n );\n\n protected readonly dataHighlighted = computed((): 'false' | 'true' =>\n this.renderState() === 'highlighted' ? 'true' : 'false',\n );\n\n protected readonly dataWrap = computed((): 'false' | 'true' => (this.wrap() ? 'true' : 'false'));\n\n protected readonly effectiveCopyResetDuration = computed((): number => {\n return this.copySuccessDurationMs() ?? this.copyResetDuration();\n });\n\n protected readonly effectiveLineNumbers = computed((): boolean => {\n const legacyValue = this.showLineNumbers();\n if (legacyValue !== undefined) {\n return legacyValue;\n }\n\n const mode = this.lineNumbersMode();\n if (mode === 'auto') {\n return splitCodeLines(this.normalizedCode()).length > 1;\n }\n\n return mode;\n });\n\n protected readonly hasHeaderContent = computed((): boolean => {\n return this.titleText() !== null || this.hasLanguageBadge() || this.shouldShowCopyAction();\n });\n\n protected readonly hasLanguageBadge = computed((): boolean => {\n return this.showLanguageBadge() && this.languageForBadge() !== null;\n });\n\n protected readonly highlightLineSet = computed((): ReadonlySet<number> =>\n toNormalizedHighlightLineSet(this.highlightLines()),\n );\n\n protected readonly isHighlighting = computed((): boolean => this.renderState() === 'highlighting');\n\n protected readonly languageForBadge = computed((): string | null => {\n return this.resolvedLanguage() ?? this.normalizedLanguage();\n });\n\n protected readonly languageLabel = computed((): string => {\n return this.languageForBadge() ?? 'text';\n });\n\n protected readonly lineNumbers = computed((): readonly number[] => {\n return this.renderedLines().map((line) => line.lineNumber);\n });\n\n protected readonly maxHeightCssValue = computed((): string | null => toCssSizeValue(this.maxHeight()));\n\n protected readonly normalizedCode = computed((): string => normalizeTngCodeBlockCode(this.code()));\n\n protected readonly renderState = signal<TngCodeBlockRenderState>('idle');\n\n protected readonly renderedLines = computed((): readonly TngCodeBlockRenderedLine[] => {\n const baseLines = this.baseLineHtml();\n const start = this.startingLineNumber();\n const highlightSet = this.highlightLineSet();\n const shouldDim = this.focusLines() && highlightSet.size > 0;\n\n return baseLines.map((html, index) => {\n const lineNumber = start + index;\n const highlighted = highlightSet.has(lineNumber);\n\n return {\n dimmed: shouldDim && !highlighted,\n highlighted,\n html,\n lineNumber,\n };\n });\n });\n\n protected readonly shouldRenderBodyLineNumbers = computed((): boolean => this.effectiveLineNumbers());\n\n protected readonly shouldRenderHeader = computed((): boolean => {\n return this.showHeader() && this.hasHeaderContent();\n });\n\n protected readonly shouldShowCopyAction = computed((): boolean => {\n const mode = this.copyMode();\n if (mode === 'auto') {\n return this.normalizedCode().length > 0;\n }\n\n return mode;\n });\n\n protected readonly titleText = computed((): string | null => normalizeOptionalString(this.title()));\n\n private readonly baseLineHtml = signal<readonly (SafeHtml | string)[]>(['']);\n private readonly copyState = signal<TngCodeBlockCopyState>('idle');\n private readonly domSanitizer = inject(DomSanitizer);\n private readonly highlightingConfig = inject<TngResolvedCodeHighlightingConfig>(\n TNG_CODE_HIGHLIGHTING_CONFIG,\n );\n private readonly normalizedLanguage = computed((): string | null => normalizeTngCodeLanguage(this.language()));\n private readonly resolvedLanguage = signal<string | null>(null);\n\n private copyResetTimer: ReturnType<typeof setTimeout> | null = null;\n private destroyed = false;\n private highlightDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n private highlightRequestId = 0;\n private lastEmittedRenderState: TngCodeBlockRenderState = 'idle';\n private readonly renderCache = new Map<string, TngNormalizedCodeHighlightResult | null>();\n\n public constructor() {\n effect((): void => {\n const request: TngCodeBlockRenderRequest = {\n adapter: normalizeTngCodeLanguage(this.adapter()),\n code: this.normalizedCode(),\n includeLineWrappers: this.shouldIncludeLineWrappers(),\n language: this.normalizedLanguage(),\n theme: normalizeTngCodeLanguage(this.theme()),\n };\n\n this.enqueueRenderRequest({\n request,\n shouldHighlight: this.shouldHighlightCode(),\n });\n });\n }\n\n public ngOnDestroy(): void {\n this.destroyed = true;\n this.highlightRequestId += 1;\n this.clearCopyResetTimer();\n this.clearHighlightDebounceTimer();\n }\n\n protected onPrimitiveCopy(...args: readonly unknown[]): void {\n const [event] = args;\n if (\n typeof event === 'object' &&\n event !== null &&\n 'text' in event &&\n 'trigger' in event &&\n typeof (event as { text: unknown }).text === 'string' &&\n typeof (event as { trigger: unknown }).trigger === 'string'\n ) {\n this.copy.emit(event as TngCopyEvent);\n }\n }\n\n protected onPrimitiveCopyError(...args: readonly unknown[]): void {\n const [event] = args;\n const normalizedError = toNormalizedCopyError(event);\n\n this.copyState.set('error');\n this.tngCopyError.emit(normalizedError);\n\n if (typeof event === 'object' && event !== null && 'error' in event) {\n this.copyError.emit(event as TngCopyErrorEvent);\n } else {\n this.copyError.emit({ error: normalizedError });\n }\n\n this.scheduleCopyStateReset();\n }\n\n protected onPrimitiveCopySuccess(...args: readonly unknown[]): void {\n const [event] = args;\n if (\n typeof event !== 'object' ||\n event === null ||\n !('text' in event) ||\n !('method' in event) ||\n typeof (event as { text: unknown }).text !== 'string' ||\n typeof (event as { method: unknown }).method !== 'string'\n ) {\n return;\n }\n\n const payload = event as TngCopySuccessEvent;\n this.copyState.set('copied');\n this.copySuccess.emit(payload);\n this.tngCopied.emit(payload.text);\n this.scheduleCopyStateReset();\n }\n\n private applyPlainText(code: string, language: string | null): void {\n this.resolvedLanguage.set(language);\n this.baseLineHtml.set(splitCodeLines(code).map((line) => escapeTngCodeHtml(line)));\n }\n\n private applyResolvedHighlightResult(\n result: TngNormalizedCodeHighlightResult,\n request: TngCodeBlockRenderRequest,\n ): boolean {\n this.resolvedLanguage.set(result.language ?? request.language);\n\n if (result.kind === 'tokens') {\n if (result.tokens.length === 0) {\n return false;\n }\n\n this.baseLineHtml.set(result.tokens.map((line) => renderTokenLine(line)));\n return true;\n }\n\n const htmlLines = result.html.split('\\n');\n if (htmlLines.length === 0 || (htmlLines.length === 1 && htmlLines[0].length === 0)) {\n return false;\n }\n\n const shouldBypassSanitization = this.sanitizeHtml() === false && result.trustedHtml;\n if (shouldBypassSanitization) {\n this.baseLineHtml.set(\n htmlLines.map((line) => this.domSanitizer.bypassSecurityTrustHtml(line)),\n );\n return true;\n }\n\n this.baseLineHtml.set(htmlLines);\n return true;\n }\n\n private buildCacheKey(request: TngCodeBlockRenderRequest): string {\n return [\n request.adapter ?? '',\n request.language ?? '',\n request.theme ?? '',\n request.includeLineWrappers ? '1' : '0',\n request.code,\n ].join('\\u241f');\n }\n\n private clearCopyResetTimer(): void {\n if (this.copyResetTimer === null) {\n return;\n }\n\n clearTimeout(this.copyResetTimer);\n this.copyResetTimer = null;\n }\n\n private clearHighlightDebounceTimer(): void {\n if (this.highlightDebounceTimer === null) {\n return;\n }\n\n clearTimeout(this.highlightDebounceTimer);\n this.highlightDebounceTimer = null;\n }\n\n private enqueueRenderRequest(input: Readonly<{ request: TngCodeBlockRenderRequest; shouldHighlight: boolean }>): void {\n this.clearHighlightDebounceTimer();\n\n const debounceMs = this.highlightDebounceMs();\n if (debounceMs <= 0) {\n void this.renderRequest(input);\n return;\n }\n\n this.highlightDebounceTimer = setTimeout((): void => {\n this.highlightDebounceTimer = null;\n void this.renderRequest(input);\n }, debounceMs);\n }\n\n private isStaleRequest(requestId: number): boolean {\n return this.destroyed || requestId !== this.highlightRequestId;\n }\n\n private scheduleCopyStateReset(): void {\n this.clearCopyResetTimer();\n this.copyResetTimer = setTimeout((): void => {\n this.copyState.set('idle');\n this.copyResetTimer = null;\n }, this.effectiveCopyResetDuration());\n }\n\n private setRenderState(state: TngCodeBlockRenderState, error?: unknown): void {\n this.renderState.set(state);\n\n if (this.lastEmittedRenderState === state) {\n return;\n }\n\n this.lastEmittedRenderState = state;\n if (state === 'error') {\n this.renderStateChange.emit({ error, state });\n return;\n }\n\n this.renderStateChange.emit({ state });\n }\n\n private shouldHighlightCode(): boolean {\n if (!this.highlight()) {\n return false;\n }\n\n return shouldHighlight(this.highlightMode());\n }\n\n private shouldIncludeLineWrappers(): boolean {\n return this.effectiveLineNumbers() || this.highlightLineSet().size > 0 || this.focusLines();\n }\n\n private toHighlightRequest(request: TngCodeBlockRenderRequest): TngCodeHighlightRequest {\n return {\n adapter: request.adapter,\n code: request.code,\n includeLineWrappers: request.includeLineWrappers,\n language: request.language,\n theme: request.theme,\n };\n }\n\n private async renderRequest(input: Readonly<{ request: TngCodeBlockRenderRequest; shouldHighlight: boolean }>): Promise<void> {\n const requestId = this.highlightRequestId + 1;\n this.highlightRequestId = requestId;\n\n if (!input.shouldHighlight) {\n this.applyPlainText(input.request.code, input.request.language);\n this.setRenderState('idle');\n return;\n }\n\n this.setRenderState('highlighting');\n\n try {\n const cacheKey = this.buildCacheKey(input.request);\n let resolvedResult = this.renderCache.get(cacheKey);\n if (resolvedResult === undefined) {\n resolvedResult = await resolveTngCodeHighlightResult(\n this.toHighlightRequest(input.request),\n this.highlightingConfig,\n );\n this.renderCache.set(cacheKey, resolvedResult);\n }\n\n if (this.isStaleRequest(requestId)) {\n return;\n }\n\n if (resolvedResult === null) {\n this.applyPlainText(input.request.code, input.request.language);\n this.setRenderState('highlighted');\n return;\n }\n\n const didRenderHighlight = this.applyResolvedHighlightResult(resolvedResult, input.request);\n if (!didRenderHighlight) {\n this.applyPlainText(input.request.code, input.request.language);\n }\n\n this.setRenderState('highlighted');\n } catch (error) {\n if (this.isStaleRequest(requestId)) {\n return;\n }\n\n this.applyPlainText(input.request.code, input.request.language);\n this.setRenderState('error', error);\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-copy-button.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/copy-button/tng-copy-button.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAI5F,KAAK,kBAAkB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAClE,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AACpE,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5C,KAAK,sBAAsB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAqBhD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAO5E;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,kBAAkB,GAAG,sBAAsB,CAM/F;AAED,
|
|
1
|
+
{"version":3,"file":"tng-copy-button.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/copy-button/tng-copy-button.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAI5F,KAAK,kBAAkB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAClE,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AACpE,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5C,KAAK,sBAAsB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAqBhD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAO5E;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,kBAAkB,GAAG,sBAAsB,CAM/F;AAED,qBAOa,sBAAuB,YAAW,SAAS;IACtD,SAAgB,UAAU,+DAA6C;IACvE,SAAgB,cAAc,8CAAsB;IACpD,SAAgB,SAAS,8CAAyB;IAClD,SAAgB,YAAY,8CAAsB;IAClD,SAAgB,WAAW,8CAA2B;IACtD,SAAgB,YAAY,8CAA+B;IAC3D,SAAgB,QAAQ,8EAErB;IACH,SAAgB,UAAU,8CAAgC;IAC1D,SAAgB,IAAI,yDAAkC;IACtD,SAAgB,eAAe,mEAA4C;IAC3E,SAAgB,UAAU,4EAEvB;IACH,SAAgB,IAAI,yDAAkC;IACtD,SAAgB,QAAQ,8EAErB;IACH,SAAgB,IAAI,iEAA+C;IAEnE,SAAgB,SAAS,mDAAoB;IAC7C,SAAgB,YAAY,kDAAmB;IAE/C,SAAS,CAAC,QAAQ,CAAC,WAAW,yCAW3B;IAEH,SAAS,CAAC,QAAQ,CAAC,KAAK,yCAerB;IAEH,SAAS,CAAC,QAAQ,CAAC,SAAS,yDAE1B;IAEF,SAAS,CAAC,QAAQ,CAAC,KAAK,6DAAsC;IAE9D,OAAO,CAAC,UAAU,CAA8C;IAEzD,WAAW,IAAI,IAAI;IAI1B,SAAS,CAAC,WAAW,IAAI,IAAI;IAQ7B,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMlD,SAAS,CAAC,oBAAoB,CAAC,GAAG,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAQjE,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,aAAa;CAOtB"}
|
|
@@ -117,6 +117,7 @@ let TngCopyButtonComponent = class TngCopyButtonComponent {
|
|
|
117
117
|
};
|
|
118
118
|
TngCopyButtonComponent = __decorate([
|
|
119
119
|
Component({
|
|
120
|
+
standalone: true,
|
|
120
121
|
selector: 'tng-copy-button',
|
|
121
122
|
imports: [TngCopy],
|
|
122
123
|
templateUrl: './tng-copy-button.component.html',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-copy-button.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/copy-button/tng-copy-button.component.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,KAAK,EACL,MAAM,EACN,MAAM,GAEP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGhD,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAO/B,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QACpE,MAAM,MAAM,GAAI,KAA4B,CAAC,KAAK,CAAC;QACnD,IAAI,MAAM,YAAY,KAAK,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAsB;IAClE,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,OAAO,uBAAuB,CAAC,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAyB;IACrE,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"tng-copy-button.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/copy-button/tng-copy-button.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n booleanAttribute,\n Component,\n computed,\n input,\n output,\n signal,\n type OnDestroy,\n} from '@angular/core';\nimport { TngCopy } from '@tailng-ui/primitives';\nimport type { TngCopyFromTarget, TngCopyIgnoreSelectorsInput } from '@tailng-ui/primitives';\n\nconst defaultResetDelay = 1500;\n\ntype TngCopyButtonState = 'copied' | 'copying' | 'error' | 'idle';\nexport type TngCopyButtonAppearance = 'ghost' | 'outline' | 'solid';\nexport type TngCopyButtonSize = 'md' | 'sm';\ntype TngCopyButtonIconState = 'copied' | 'copy';\n\nfunction toNormalizedCopyError(value: unknown): Error {\n if (value instanceof Error) {\n return value;\n }\n\n if (typeof value === 'object' && value !== null && 'error' in value) {\n const nested = (value as { error: unknown }).error;\n if (nested instanceof Error) {\n return nested;\n }\n }\n\n return new Error('Copy failed.');\n}\n\nfunction toRoundedPositiveNumber(value: number): number {\n return Math.max(0, Math.round(value));\n}\n\nexport function coerceTngCopyButtonResetDelay(value: number | string): number {\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return defaultResetDelay;\n }\n\n return toRoundedPositiveNumber(numericValue);\n}\n\nexport function resolveTngCopyButtonIconState(state: TngCopyButtonState): TngCopyButtonIconState {\n if (state === 'copied') {\n return 'copied';\n }\n\n return 'copy';\n}\n\n@Component({\n standalone: true,\n selector: 'tng-copy-button',\n imports: [TngCopy],\n templateUrl: './tng-copy-button.component.html',\n styleUrl: './tng-copy-button.component.css',\n})\nexport class TngCopyButtonComponent implements OnDestroy {\n public readonly appearance = input<TngCopyButtonAppearance>('outline');\n public readonly copiedIconText = input<string>('✓');\n public readonly copyLabel = input<string>('Copy');\n public readonly copyIconText = input<string>('⧉');\n public readonly copiedLabel = input<string>('Copied');\n public readonly copyingLabel = input<string>('Copying...');\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly errorLabel = input<string>('Copy failed');\n public readonly from = input<TngCopyFromTarget>(null);\n public readonly ignoreSelectors = input<TngCopyIgnoreSelectorsInput>(null);\n public readonly resetDelay = input<number, number | string>(defaultResetDelay, {\n transform: coerceTngCopyButtonResetDelay,\n });\n public readonly size = input<TngCopyButtonSize>('md');\n public readonly showIcon = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly text = input<string | null | undefined>(undefined);\n\n public readonly tngCopied = output<string>();\n public readonly tngCopyError = output<Error>();\n\n protected readonly liveMessage = computed((): string => {\n const state = this.state();\n if (state === 'copied') {\n return this.copiedLabel();\n }\n\n if (state === 'error') {\n return this.errorLabel();\n }\n\n return '';\n });\n\n protected readonly label = computed((): string => {\n const state = this.state();\n if (state === 'copying') {\n return this.copyingLabel();\n }\n\n if (state === 'copied') {\n return this.copiedLabel();\n }\n\n if (state === 'error') {\n return this.errorLabel();\n }\n\n return this.copyLabel();\n });\n\n protected readonly iconState = computed<TngCopyButtonIconState>(() =>\n resolveTngCopyButtonIconState(this.state()),\n );\n\n protected readonly state = signal<TngCopyButtonState>('idle');\n\n private resetTimer: ReturnType<typeof setTimeout> | null = null;\n\n public ngOnDestroy(): void {\n this.clearResetTimer();\n }\n\n protected onHostClick(): void {\n if (this.disabled()) {\n return;\n }\n\n this.state.set('copying');\n }\n\n protected onPrimitiveCopied(payload: string): void {\n this.state.set('copied');\n this.tngCopied.emit(payload);\n this.scheduleReset();\n }\n\n protected onPrimitiveCopyError(...args: readonly unknown[]): void {\n const [error] = args;\n const normalizedError = toNormalizedCopyError(error);\n this.state.set('error');\n this.tngCopyError.emit(normalizedError);\n this.scheduleReset();\n }\n\n private clearResetTimer(): void {\n if (this.resetTimer === null) {\n return;\n }\n\n clearTimeout(this.resetTimer);\n this.resetTimer = null;\n }\n\n private scheduleReset(): void {\n this.clearResetTimer();\n this.resetTimer = setTimeout((): void => {\n this.state.set('idle');\n this.resetTimer = null;\n }, this.resetDelay());\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tag.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.ts"],"names":[],"mappings":"AAMA,KAAK,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AACrD,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACtC,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9B,KAAK,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExE,
|
|
1
|
+
{"version":3,"file":"tng-tag.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.ts"],"names":[],"mappings":"AAMA,KAAK,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AACrD,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACtC,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9B,KAAK,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExE,qBAOa,eAAe;IAC1B,SAAgB,UAAU,wDAAmC;IAC7D,SAAgB,cAAc,qDAA8B;IAC5D,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,qDAA8B;IACnD,SAAgB,SAAS,8EAEtB;IACH,SAAgB,KAAK,mDAA8B;IACnD,SAAgB,IAAI,kDAA2B;IAC/C,SAAgB,IAAI,kDAAgC;IAEpD,SAAgB,OAAO,iDAAkB;IAElC,SAAS,IAAI,IAAI;CAGzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tag.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,MAAM,IAAI,eAAe,EACzB,WAAW,IAAI,oBAAoB,GACpC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"tng-tag.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,MAAM,IAAI,eAAe,EACzB,WAAW,IAAI,oBAAoB,GACpC,MAAM,uBAAuB,CAAC;AAcxB,IAAM,eAAe,GAArB,MAAM,eAAe;IACV,UAAU,GAAG,KAAK,CAAmB,MAAM,CAAC,CAAC;IAC7C,cAAc,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAC5C,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACnC,SAAS,GAAG,KAAK,CAA4B,KAAK,EAAE;QAClE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAc,MAAM,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,CAAa,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAa,SAAS,CAAC,CAAC;IAEpC,OAAO,GAAG,MAAM,EAAQ,CAAC;IAElC,SAAS;QACd,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;CACF,CAAA;AAnBY,eAAe;IAP3B,SAAS,CAAC;QACT,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,CAAC,eAAe,EAAE,oBAAoB,CAAC;QAChD,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,yBAAyB;KACpC,CAAC;GACW,eAAe,CAmB3B","sourcesContent":["import { booleanAttribute, Component, input, output } from '@angular/core';\nimport {\n TngTag as TngTagPrimitive,\n TngTagClose as TngTagClosePrimitive,\n} from '@tailng-ui/primitives';\n\ntype TngTagAppearance = 'outline' | 'soft' | 'solid';\ntype TngTagShape = 'pill' | 'rounded';\ntype TngTagSize = 'md' | 'sm';\ntype TngTagTone = 'danger' | 'info' | 'neutral' | 'success' | 'warning';\n\n@Component({\n standalone: true,\n selector: 'tng-tag',\n imports: [TngTagPrimitive, TngTagClosePrimitive],\n templateUrl: './tng-tag.component.html',\n styleUrl: './tng-tag.component.css',\n})\nexport class TngTagComponent {\n public readonly appearance = input<TngTagAppearance>('soft');\n public readonly closeAriaLabel = input<string | null>(null);\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly label = input<string | null>(null);\n public readonly removable = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly shape = input<TngTagShape>('pill');\n public readonly size = input<TngTagSize>('md');\n public readonly tone = input<TngTagTone>('neutral');\n\n public readonly removed = output<void>();\n\n public onRemoved(): void {\n this.removed.emit();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tree.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tree/tng-tree.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,eAAe,CAAC;AAiB3D,KAAK,oBAAoB,GAAG,QAAQ,CAAC;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC,CAAC;AAEH,KAAK,mBAAmB,GAAG,QAAQ,CAAC;IAClC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC,CAAC;AA6BH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC,CAAC;AAiKH,
|
|
1
|
+
{"version":3,"file":"tng-tree.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tree/tng-tree.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,eAAe,CAAC;AAiB3D,KAAK,oBAAoB,GAAG,QAAQ,CAAC;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC,CAAC;AAEH,KAAK,mBAAmB,GAAG,QAAQ,CAAC;IAClC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC,CAAC;AA6BH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC,CAAC;AAiKH,qBAOa,gBAAiB,YAAW,SAAS;IAChD,SAAgB,SAAS,8CAAyB;IAClD,SAAgB,kBAAkB,yDAAgC;IAClE,SAAgB,iBAAiB,qDAA8B;IAC/D,SAAgB,KAAK;sBAjLP,MAAM,GAAG,IAAI;mBAChB,OAAO;YACd,MAAM;eACH,MAAM;mBACF,MAAM,GAAG,IAAI;UA6KkC;IAE1D,SAAgB,gBAAgB,0DAA2B;IAE3D,SAAS,CAAC,QAAQ,CAAC,kBAAkB,gDAOlC;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,wDAA+B;IAC5D,SAAS,CAAC,QAAQ,CAAC,MAAM,SAAkB;IAC3C,SAAS,CAAC,QAAQ,CAAC,WAAW;eA1MvB,MAAM;qBACA,MAAM,GAAG,IAAI;kBAChB,OAAO;qBACJ,OAAO;YAChB,MAAM;eACH,MAAM;UAqMqF;IAElG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;IAC5E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiD;IACzE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgD;IAE3E,OAAO,CAAC,KAAK,CAAgD;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoE;IAE9F,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAS7B;IAEL,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE9B;IAEI,WAAW,IAAI,IAAI;IAInB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAY/D,WAAW,IAAI,IAAI;IAMnB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAWrC,aAAa,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAiBvD,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI7C,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI7C,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,UAAU;CAInB"}
|