@tailng-ui/components 0.17.0 → 0.18.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/package.json +16 -5
- package/src/lib/feedback/empty/tng-empty.component.d.ts +16 -1
- package/src/lib/feedback/empty/tng-empty.component.d.ts.map +1 -1
- package/src/lib/feedback/empty/tng-empty.component.js +47 -57
- package/src/lib/feedback/empty/tng-empty.component.js.map +1 -1
- package/src/lib/feedback/index.d.ts +0 -5
- package/src/lib/feedback/index.d.ts.map +1 -1
- package/src/lib/feedback/index.js +4 -5
- package/src/lib/feedback/index.js.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.component.d.ts +4 -0
- 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 +16 -26
- 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 +4 -0
- 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 +18 -32
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts +4 -0
- package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.component.js +14 -20
- package/src/lib/feedback/skeleton/tng-skeleton.component.js.map +1 -1
- package/src/lib/feedback/toast/tng-toast.component.d.ts +4 -1
- package/src/lib/feedback/toast/tng-toast.component.d.ts.map +1 -1
- package/src/lib/feedback/toast/tng-toast.component.js +17 -19
- package/src/lib/feedback/toast/tng-toast.component.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.component.d.ts +4 -0
- package/src/lib/form/autocomplete/tng-autocomplete.component.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.component.js +46 -49
- package/src/lib/form/autocomplete/tng-autocomplete.component.js.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts +3 -0
- 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 +33 -58
- 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 +3 -0
- 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 +15 -26
- package/src/lib/form/button-toggle/tng-button-toggle.component.js.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.component.d.ts +3 -0
- package/src/lib/form/checkbox/tng-checkbox.component.d.ts.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.component.js +32 -42
- package/src/lib/form/checkbox/tng-checkbox.component.js.map +1 -1
- package/src/lib/form/chips/tng-chips.component.d.ts +3 -0
- package/src/lib/form/chips/tng-chips.component.d.ts.map +1 -1
- package/src/lib/form/chips/tng-chips.component.js +14 -19
- package/src/lib/form/chips/tng-chips.component.js.map +1 -1
- package/src/lib/form/combobox/tng-combobox.component.d.ts +3 -0
- package/src/lib/form/combobox/tng-combobox.component.d.ts.map +1 -1
- package/src/lib/form/combobox/tng-combobox.component.js +10 -13
- package/src/lib/form/combobox/tng-combobox.component.js.map +1 -1
- package/src/lib/form/datepicker/tng-datepicker.component.d.ts +4 -1
- package/src/lib/form/datepicker/tng-datepicker.component.d.ts.map +1 -1
- package/src/lib/form/datepicker/tng-datepicker.component.js +58 -98
- package/src/lib/form/datepicker/tng-datepicker.component.js.map +1 -1
- package/src/lib/form/form-field/tng-form-field.component.d.ts +3 -0
- package/src/lib/form/form-field/tng-form-field.component.d.ts.map +1 -1
- package/src/lib/form/form-field/tng-form-field.component.js +28 -33
- package/src/lib/form/form-field/tng-form-field.component.js.map +1 -1
- package/src/lib/form/index.d.ts +0 -20
- package/src/lib/form/index.d.ts.map +1 -1
- package/src/lib/form/index.js +4 -20
- package/src/lib/form/index.js.map +1 -1
- package/src/lib/form/input/tng-input.component.d.ts +3 -0
- package/src/lib/form/input/tng-input.component.d.ts.map +1 -1
- package/src/lib/form/input/tng-input.component.js +49 -60
- package/src/lib/form/input/tng-input.component.js.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.component.d.ts +3 -0
- package/src/lib/form/input-otp/tng-input-otp.component.d.ts.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.component.js +55 -69
- package/src/lib/form/input-otp/tng-input-otp.component.js.map +1 -1
- package/src/lib/form/label/tng-label.component.d.ts +3 -0
- package/src/lib/form/label/tng-label.component.d.ts.map +1 -1
- package/src/lib/form/label/tng-label.component.js +12 -19
- package/src/lib/form/label/tng-label.component.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.d.ts +4 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js +40 -43
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.component.d.ts +4 -0
- package/src/lib/form/multiselect/tng-multiselect.component.d.ts.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.component.js +49 -52
- package/src/lib/form/multiselect/tng-multiselect.component.js.map +1 -1
- package/src/lib/form/radio/tng-radio.component.d.ts +3 -0
- package/src/lib/form/radio/tng-radio.component.d.ts.map +1 -1
- package/src/lib/form/radio/tng-radio.component.js +18 -33
- package/src/lib/form/radio/tng-radio.component.js.map +1 -1
- package/src/lib/form/select/tng-select.component.d.ts +4 -0
- package/src/lib/form/select/tng-select.component.d.ts.map +1 -1
- package/src/lib/form/select/tng-select.component.js +52 -53
- package/src/lib/form/select/tng-select.component.js.map +1 -1
- package/src/lib/form/select/tng-select.slots.d.ts +5 -0
- package/src/lib/form/select/tng-select.slots.d.ts.map +1 -1
- package/src/lib/form/select/tng-select.slots.js +21 -17
- package/src/lib/form/select/tng-select.slots.js.map +1 -1
- package/src/lib/form/slider/tng-slider.component.d.ts +3 -0
- package/src/lib/form/slider/tng-slider.component.d.ts.map +1 -1
- package/src/lib/form/slider/tng-slider.component.js +14 -27
- package/src/lib/form/slider/tng-slider.component.js.map +1 -1
- package/src/lib/form/switch/tng-switch.component.d.ts +3 -0
- package/src/lib/form/switch/tng-switch.component.d.ts.map +1 -1
- package/src/lib/form/switch/tng-switch.component.js +15 -24
- package/src/lib/form/switch/tng-switch.component.js.map +1 -1
- package/src/lib/form/textarea/tng-textarea.component.d.ts +3 -0
- package/src/lib/form/textarea/tng-textarea.component.d.ts.map +1 -1
- package/src/lib/form/textarea/tng-textarea.component.js +19 -36
- package/src/lib/form/textarea/tng-textarea.component.js.map +1 -1
- package/src/lib/form/toggle/tng-toggle.component.d.ts +3 -0
- package/src/lib/form/toggle/tng-toggle.component.d.ts.map +1 -1
- package/src/lib/form/toggle/tng-toggle.component.js +41 -41
- package/src/lib/form/toggle/tng-toggle.component.js.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.component.d.ts +4 -0
- 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 +28 -31
- package/src/lib/form/toggle-group/tng-toggle-group.component.js.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.component.d.ts +10 -0
- package/src/lib/layout/accordion/tng-accordion.component.d.ts.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.component.js +49 -148
- package/src/lib/layout/accordion/tng-accordion.component.js.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.d.ts +3 -0
- 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 +10 -13
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js.map +1 -1
- package/src/lib/layout/card/tng-card.component.d.ts +21 -0
- package/src/lib/layout/card/tng-card.component.d.ts.map +1 -1
- package/src/lib/layout/card/tng-card.component.js +92 -136
- package/src/lib/layout/card/tng-card.component.js.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.component.d.ts +3 -0
- package/src/lib/layout/collapsible/tng-collapsible.component.d.ts.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.component.js +17 -24
- package/src/lib/layout/collapsible/tng-collapsible.component.js.map +1 -1
- package/src/lib/layout/drawer/tng-drawer.component.d.ts +4 -0
- package/src/lib/layout/drawer/tng-drawer.component.d.ts.map +1 -1
- package/src/lib/layout/drawer/tng-drawer.component.js +48 -51
- package/src/lib/layout/drawer/tng-drawer.component.js.map +1 -1
- package/src/lib/layout/grid/tng-grid.component.d.ts +8 -0
- package/src/lib/layout/grid/tng-grid.component.d.ts.map +1 -1
- package/src/lib/layout/grid/tng-grid.component.js +48 -110
- package/src/lib/layout/grid/tng-grid.component.js.map +1 -1
- package/src/lib/layout/index.d.ts +1 -8
- package/src/lib/layout/index.d.ts.map +1 -1
- package/src/lib/layout/index.js +5 -8
- package/src/lib/layout/index.js.map +1 -1
- package/src/lib/layout/separator/tng-separator.component.d.ts +3 -0
- package/src/lib/layout/separator/tng-separator.component.d.ts.map +1 -1
- package/src/lib/layout/separator/tng-separator.component.js +11 -16
- package/src/lib/layout/separator/tng-separator.component.js.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.component.d.ts +3 -0
- package/src/lib/layout/stepper/tng-stepper.component.d.ts.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.component.js +10 -13
- package/src/lib/layout/stepper/tng-stepper.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts +4 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js +47 -49
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts +4 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js +16 -18
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts +4 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js +10 -12
- 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 +3 -0
- 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 +12 -10
- 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 +4 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js +12 -14
- package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts +4 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js +23 -25
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts +5 -0
- 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 +24 -26
- 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 +4 -0
- 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 +19 -23
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js.map +1 -1
- package/src/lib/navigation/index.d.ts +0 -12
- package/src/lib/navigation/index.d.ts.map +1 -1
- package/src/lib/navigation/index.js +4 -12
- package/src/lib/navigation/index.js.map +1 -1
- package/src/lib/navigation/menu/tng-menu-trigger-for.directive.d.ts +3 -0
- package/src/lib/navigation/menu/tng-menu-trigger-for.directive.d.ts.map +1 -1
- package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js +22 -20
- package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js.map +1 -1
- package/src/lib/navigation/menu/tng-menu.component.d.ts +5 -0
- package/src/lib/navigation/menu/tng-menu.component.d.ts.map +1 -1
- package/src/lib/navigation/menu/tng-menu.component.js +21 -23
- package/src/lib/navigation/menu/tng-menu.component.js.map +1 -1
- package/src/lib/navigation/menubar/tng-menubar.component.d.ts +5 -0
- package/src/lib/navigation/menubar/tng-menubar.component.d.ts.map +1 -1
- package/src/lib/navigation/menubar/tng-menubar.component.js +20 -22
- package/src/lib/navigation/menubar/tng-menubar.component.js.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.d.ts +4 -0
- 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 +11 -13
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js.map +1 -1
- package/src/lib/navigation/tabs/tng-tabs.component.d.ts +5 -0
- package/src/lib/navigation/tabs/tng-tabs.component.d.ts.map +1 -1
- package/src/lib/navigation/tabs/tng-tabs.component.js +32 -34
- package/src/lib/navigation/tabs/tng-tabs.component.js.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts +4 -0
- package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.component.js +11 -13
- package/src/lib/navigation/toolbar/tng-toolbar.component.js.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.component.d.ts +4 -0
- package/src/lib/overlay/dialog/tng-dialog.component.d.ts.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.component.js +18 -25
- package/src/lib/overlay/dialog/tng-dialog.component.js.map +1 -1
- package/src/lib/overlay/index.d.ts +0 -3
- package/src/lib/overlay/index.d.ts.map +1 -1
- package/src/lib/overlay/index.js +4 -3
- package/src/lib/overlay/index.js.map +1 -1
- package/src/lib/overlay/popover/tng-popover.component.d.ts +4 -0
- package/src/lib/overlay/popover/tng-popover.component.d.ts.map +1 -1
- package/src/lib/overlay/popover/tng-popover.component.js +23 -37
- package/src/lib/overlay/popover/tng-popover.component.js.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts +4 -0
- package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.component.js +17 -21
- package/src/lib/overlay/tooltip/tng-tooltip.component.js.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.component.d.ts +4 -1
- package/src/lib/utility/avatar/tng-avatar.component.d.ts.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.component.js +20 -22
- package/src/lib/utility/avatar/tng-avatar.component.js.map +1 -1
- package/src/lib/utility/badge/tng-badge.component.d.ts +4 -0
- package/src/lib/utility/badge/tng-badge.component.d.ts.map +1 -1
- package/src/lib/utility/badge/tng-badge.component.js +13 -10
- package/src/lib/utility/badge/tng-badge.component.js.map +1 -1
- package/src/lib/utility/button/tng-button.component.d.ts +4 -1
- package/src/lib/utility/button/tng-button.component.d.ts.map +1 -1
- package/src/lib/utility/button/tng-button.component.js +19 -29
- package/src/lib/utility/button/tng-button.component.js.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.component.d.ts +4 -0
- 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 +73 -103
- 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 +4 -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 +28 -36
- package/src/lib/utility/copy-button/tng-copy-button.component.js.map +1 -1
- package/src/lib/utility/index.d.ts +1 -9
- package/src/lib/utility/index.d.ts.map +1 -1
- package/src/lib/utility/index.js +5 -8
- package/src/lib/utility/index.js.map +1 -1
- package/src/lib/utility/tag/tng-tag.component.d.ts +4 -1
- package/src/lib/utility/tag/tng-tag.component.d.ts.map +1 -1
- package/src/lib/utility/tag/tng-tag.component.js +18 -24
- package/src/lib/utility/tag/tng-tag.component.js.map +1 -1
- package/src/lib/utility/tree/tng-tree.component.d.ts +4 -1
- package/src/lib/utility/tree/tng-tree.component.d.ts.map +1 -1
- package/src/lib/utility/tree/tng-tree.component.js +23 -25
- package/src/lib/utility/tree/tng-tree.component.js.map +1 -1
|
@@ -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
|
|
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,8 +1,8 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
1
|
import { booleanAttribute, Component, computed, effect, inject, input, output, signal, } from '@angular/core';
|
|
3
2
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
3
|
import { TngCodeBlock as TngCodeBlockPrimitive, TngCodeBlockBody as TngCodeBlockBodyPrimitive, TngCodeBlockCode as TngCodeBlockCodePrimitive, TngCodeBlockGutter as TngCodeBlockGutterPrimitive, TngCodeBlockHeader as TngCodeBlockHeaderPrimitive, TngCopy, } from '@tailng-ui/primitives';
|
|
5
4
|
import { escapeTngCodeHtml, normalizeTngCodeLanguage, resolveTngCodeHighlightResult, TNG_CODE_HIGHLIGHTING_CONFIG, } from './highlighting';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
6
|
const defaultCopyResetDuration = 1500;
|
|
7
7
|
const highlightModeSet = new Set(['auto', 'off', 'on']);
|
|
8
8
|
function normalizeOptionalString(value) {
|
|
@@ -196,64 +196,36 @@ export function toTngCodeBlockLineNumbers(code, startingLineNumber = 1) {
|
|
|
196
196
|
const normalizedStart = Math.max(1, Math.round(startingLineNumber));
|
|
197
197
|
return splitCodeLines(code).map((_, index) => normalizedStart + index);
|
|
198
198
|
}
|
|
199
|
-
|
|
200
|
-
adapter = input(null);
|
|
201
|
-
caption = input(null);
|
|
202
|
-
code = input('');
|
|
203
|
-
copyMode = input('auto', {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
transform:
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
});
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
});
|
|
230
|
-
language = input(null);
|
|
231
|
-
lineNumbersMode = input(false, {
|
|
232
|
-
alias: 'lineNumbers',
|
|
233
|
-
transform: coerceTngCodeBlockLineNumbersMode,
|
|
234
|
-
});
|
|
235
|
-
maxHeight = input(null);
|
|
236
|
-
sanitizeHtml = input('auto', {
|
|
237
|
-
transform: coerceTngCodeBlockSanitizeHtml,
|
|
238
|
-
});
|
|
239
|
-
showHeader = input(true, {
|
|
240
|
-
transform: booleanAttribute,
|
|
241
|
-
});
|
|
242
|
-
showLanguageBadge = input(true, {
|
|
243
|
-
transform: booleanAttribute,
|
|
244
|
-
});
|
|
245
|
-
showLineNumbers = input(undefined, {
|
|
246
|
-
transform: coerceOptionalBoolean,
|
|
247
|
-
});
|
|
248
|
-
startingLineNumber = input(1, {
|
|
249
|
-
transform: coerceTngCodeBlockStartingLineNumber,
|
|
250
|
-
});
|
|
251
|
-
theme = input(null);
|
|
252
|
-
title = input(null);
|
|
253
|
-
variant = input('default');
|
|
254
|
-
wrap = input(false, {
|
|
255
|
-
transform: booleanAttribute,
|
|
256
|
-
});
|
|
199
|
+
export class TngCodeBlockComponent {
|
|
200
|
+
adapter = input(null, ...(ngDevMode ? [{ debugName: "adapter" }] : []));
|
|
201
|
+
caption = input(null, ...(ngDevMode ? [{ debugName: "caption" }] : []));
|
|
202
|
+
code = input('', ...(ngDevMode ? [{ debugName: "code" }] : []));
|
|
203
|
+
copyMode = input('auto', { ...(ngDevMode ? { debugName: "copyMode" } : {}), alias: 'copy',
|
|
204
|
+
transform: coerceTngCodeBlockCopyMode });
|
|
205
|
+
copyLabel = input('Copy code', ...(ngDevMode ? [{ debugName: "copyLabel" }] : []));
|
|
206
|
+
copiedLabel = input('Copied', ...(ngDevMode ? [{ debugName: "copiedLabel" }] : []));
|
|
207
|
+
copyResetDuration = input(defaultCopyResetDuration, { ...(ngDevMode ? { debugName: "copyResetDuration" } : {}), transform: coerceTngCodeBlockCopyResetDuration });
|
|
208
|
+
copySuccessDurationMs = input(undefined, { ...(ngDevMode ? { debugName: "copySuccessDurationMs" } : {}), transform: coerceOptionalPositiveNumber });
|
|
209
|
+
copyText = input(null, ...(ngDevMode ? [{ debugName: "copyText" }] : []));
|
|
210
|
+
errorLabel = input('Copy failed', ...(ngDevMode ? [{ debugName: "errorLabel" }] : []));
|
|
211
|
+
focusLines = input(false, { ...(ngDevMode ? { debugName: "focusLines" } : {}), transform: booleanAttribute });
|
|
212
|
+
highlight = input(true, { ...(ngDevMode ? { debugName: "highlight" } : {}), transform: booleanAttribute });
|
|
213
|
+
highlightDebounceMs = input(0, { ...(ngDevMode ? { debugName: "highlightDebounceMs" } : {}), transform: coerceTngCodeBlockCopyResetDuration });
|
|
214
|
+
highlightLines = input(null, ...(ngDevMode ? [{ debugName: "highlightLines" }] : []));
|
|
215
|
+
highlightMode = input('auto', { ...(ngDevMode ? { debugName: "highlightMode" } : {}), transform: coerceTngCodeBlockHighlightMode });
|
|
216
|
+
language = input(null, ...(ngDevMode ? [{ debugName: "language" }] : []));
|
|
217
|
+
lineNumbersMode = input(false, { ...(ngDevMode ? { debugName: "lineNumbersMode" } : {}), alias: 'lineNumbers',
|
|
218
|
+
transform: coerceTngCodeBlockLineNumbersMode });
|
|
219
|
+
maxHeight = input(null, ...(ngDevMode ? [{ debugName: "maxHeight" }] : []));
|
|
220
|
+
sanitizeHtml = input('auto', { ...(ngDevMode ? { debugName: "sanitizeHtml" } : {}), transform: coerceTngCodeBlockSanitizeHtml });
|
|
221
|
+
showHeader = input(true, { ...(ngDevMode ? { debugName: "showHeader" } : {}), transform: booleanAttribute });
|
|
222
|
+
showLanguageBadge = input(true, { ...(ngDevMode ? { debugName: "showLanguageBadge" } : {}), transform: booleanAttribute });
|
|
223
|
+
showLineNumbers = input(undefined, { ...(ngDevMode ? { debugName: "showLineNumbers" } : {}), transform: coerceOptionalBoolean });
|
|
224
|
+
startingLineNumber = input(1, { ...(ngDevMode ? { debugName: "startingLineNumber" } : {}), transform: coerceTngCodeBlockStartingLineNumber });
|
|
225
|
+
theme = input(null, ...(ngDevMode ? [{ debugName: "theme" }] : []));
|
|
226
|
+
title = input(null, ...(ngDevMode ? [{ debugName: "title" }] : []));
|
|
227
|
+
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : []));
|
|
228
|
+
wrap = input(false, { ...(ngDevMode ? { debugName: "wrap" } : {}), transform: booleanAttribute });
|
|
257
229
|
copy = output();
|
|
258
230
|
copyError = output();
|
|
259
231
|
copySuccess = output();
|
|
@@ -269,7 +241,7 @@ let TngCodeBlockComponent = class TngCodeBlockComponent {
|
|
|
269
241
|
return this.errorLabel();
|
|
270
242
|
}
|
|
271
243
|
return this.copyLabel();
|
|
272
|
-
});
|
|
244
|
+
}, ...(ngDevMode ? [{ debugName: "copyButtonLabel" }] : []));
|
|
273
245
|
copyPayload = computed(() => {
|
|
274
246
|
const value = this.copyText();
|
|
275
247
|
if (typeof value === 'function') {
|
|
@@ -288,14 +260,14 @@ let TngCodeBlockComponent = class TngCodeBlockComponent {
|
|
|
288
260
|
return value;
|
|
289
261
|
}
|
|
290
262
|
return this.normalizedCode();
|
|
291
|
-
});
|
|
292
|
-
dataHasCopy = computed(() => this.shouldShowCopyAction() ? 'true' : 'false');
|
|
293
|
-
dataHasTitle = computed(() => this.titleText() === null ? 'false' : 'true');
|
|
294
|
-
dataHighlighted = computed(() => this.renderState() === 'highlighted' ? 'true' : 'false');
|
|
295
|
-
dataWrap = computed(() => (this.wrap() ? 'true' : 'false'));
|
|
263
|
+
}, ...(ngDevMode ? [{ debugName: "copyPayload" }] : []));
|
|
264
|
+
dataHasCopy = computed(() => this.shouldShowCopyAction() ? 'true' : 'false', ...(ngDevMode ? [{ debugName: "dataHasCopy" }] : []));
|
|
265
|
+
dataHasTitle = computed(() => this.titleText() === null ? 'false' : 'true', ...(ngDevMode ? [{ debugName: "dataHasTitle" }] : []));
|
|
266
|
+
dataHighlighted = computed(() => this.renderState() === 'highlighted' ? 'true' : 'false', ...(ngDevMode ? [{ debugName: "dataHighlighted" }] : []));
|
|
267
|
+
dataWrap = computed(() => (this.wrap() ? 'true' : 'false'), ...(ngDevMode ? [{ debugName: "dataWrap" }] : []));
|
|
296
268
|
effectiveCopyResetDuration = computed(() => {
|
|
297
269
|
return this.copySuccessDurationMs() ?? this.copyResetDuration();
|
|
298
|
-
});
|
|
270
|
+
}, ...(ngDevMode ? [{ debugName: "effectiveCopyResetDuration" }] : []));
|
|
299
271
|
effectiveLineNumbers = computed(() => {
|
|
300
272
|
const legacyValue = this.showLineNumbers();
|
|
301
273
|
if (legacyValue !== undefined) {
|
|
@@ -306,27 +278,27 @@ let TngCodeBlockComponent = class TngCodeBlockComponent {
|
|
|
306
278
|
return splitCodeLines(this.normalizedCode()).length > 1;
|
|
307
279
|
}
|
|
308
280
|
return mode;
|
|
309
|
-
});
|
|
281
|
+
}, ...(ngDevMode ? [{ debugName: "effectiveLineNumbers" }] : []));
|
|
310
282
|
hasHeaderContent = computed(() => {
|
|
311
283
|
return this.titleText() !== null || this.hasLanguageBadge() || this.shouldShowCopyAction();
|
|
312
|
-
});
|
|
284
|
+
}, ...(ngDevMode ? [{ debugName: "hasHeaderContent" }] : []));
|
|
313
285
|
hasLanguageBadge = computed(() => {
|
|
314
286
|
return this.showLanguageBadge() && this.languageForBadge() !== null;
|
|
315
|
-
});
|
|
316
|
-
highlightLineSet = computed(() => toNormalizedHighlightLineSet(this.highlightLines()));
|
|
317
|
-
isHighlighting = computed(() => this.renderState() === 'highlighting');
|
|
287
|
+
}, ...(ngDevMode ? [{ debugName: "hasLanguageBadge" }] : []));
|
|
288
|
+
highlightLineSet = computed(() => toNormalizedHighlightLineSet(this.highlightLines()), ...(ngDevMode ? [{ debugName: "highlightLineSet" }] : []));
|
|
289
|
+
isHighlighting = computed(() => this.renderState() === 'highlighting', ...(ngDevMode ? [{ debugName: "isHighlighting" }] : []));
|
|
318
290
|
languageForBadge = computed(() => {
|
|
319
291
|
return this.resolvedLanguage() ?? this.normalizedLanguage();
|
|
320
|
-
});
|
|
292
|
+
}, ...(ngDevMode ? [{ debugName: "languageForBadge" }] : []));
|
|
321
293
|
languageLabel = computed(() => {
|
|
322
294
|
return this.languageForBadge() ?? 'text';
|
|
323
|
-
});
|
|
295
|
+
}, ...(ngDevMode ? [{ debugName: "languageLabel" }] : []));
|
|
324
296
|
lineNumbers = computed(() => {
|
|
325
297
|
return this.renderedLines().map((line) => line.lineNumber);
|
|
326
|
-
});
|
|
327
|
-
maxHeightCssValue = computed(() => toCssSizeValue(this.maxHeight()));
|
|
328
|
-
normalizedCode = computed(() => normalizeTngCodeBlockCode(this.code()));
|
|
329
|
-
renderState = signal('idle');
|
|
298
|
+
}, ...(ngDevMode ? [{ debugName: "lineNumbers" }] : []));
|
|
299
|
+
maxHeightCssValue = computed(() => toCssSizeValue(this.maxHeight()), ...(ngDevMode ? [{ debugName: "maxHeightCssValue" }] : []));
|
|
300
|
+
normalizedCode = computed(() => normalizeTngCodeBlockCode(this.code()), ...(ngDevMode ? [{ debugName: "normalizedCode" }] : []));
|
|
301
|
+
renderState = signal('idle', ...(ngDevMode ? [{ debugName: "renderState" }] : []));
|
|
330
302
|
renderedLines = computed(() => {
|
|
331
303
|
const baseLines = this.baseLineHtml();
|
|
332
304
|
const start = this.startingLineNumber();
|
|
@@ -342,25 +314,25 @@ let TngCodeBlockComponent = class TngCodeBlockComponent {
|
|
|
342
314
|
lineNumber,
|
|
343
315
|
};
|
|
344
316
|
});
|
|
345
|
-
});
|
|
346
|
-
shouldRenderBodyLineNumbers = computed(() => this.effectiveLineNumbers());
|
|
317
|
+
}, ...(ngDevMode ? [{ debugName: "renderedLines" }] : []));
|
|
318
|
+
shouldRenderBodyLineNumbers = computed(() => this.effectiveLineNumbers(), ...(ngDevMode ? [{ debugName: "shouldRenderBodyLineNumbers" }] : []));
|
|
347
319
|
shouldRenderHeader = computed(() => {
|
|
348
320
|
return this.showHeader() && this.hasHeaderContent();
|
|
349
|
-
});
|
|
321
|
+
}, ...(ngDevMode ? [{ debugName: "shouldRenderHeader" }] : []));
|
|
350
322
|
shouldShowCopyAction = computed(() => {
|
|
351
323
|
const mode = this.copyMode();
|
|
352
324
|
if (mode === 'auto') {
|
|
353
325
|
return this.normalizedCode().length > 0;
|
|
354
326
|
}
|
|
355
327
|
return mode;
|
|
356
|
-
});
|
|
357
|
-
titleText = computed(() => normalizeOptionalString(this.title()));
|
|
358
|
-
baseLineHtml = signal(['']);
|
|
359
|
-
copyState = signal('idle');
|
|
328
|
+
}, ...(ngDevMode ? [{ debugName: "shouldShowCopyAction" }] : []));
|
|
329
|
+
titleText = computed(() => normalizeOptionalString(this.title()), ...(ngDevMode ? [{ debugName: "titleText" }] : []));
|
|
330
|
+
baseLineHtml = signal([''], ...(ngDevMode ? [{ debugName: "baseLineHtml" }] : []));
|
|
331
|
+
copyState = signal('idle', ...(ngDevMode ? [{ debugName: "copyState" }] : []));
|
|
360
332
|
domSanitizer = inject(DomSanitizer);
|
|
361
333
|
highlightingConfig = inject(TNG_CODE_HIGHLIGHTING_CONFIG);
|
|
362
|
-
normalizedLanguage = computed(() => normalizeTngCodeLanguage(this.language()));
|
|
363
|
-
resolvedLanguage = signal(null);
|
|
334
|
+
normalizedLanguage = computed(() => normalizeTngCodeLanguage(this.language()), ...(ngDevMode ? [{ debugName: "normalizedLanguage" }] : []));
|
|
335
|
+
resolvedLanguage = signal(null, ...(ngDevMode ? [{ debugName: "resolvedLanguage" }] : []));
|
|
364
336
|
copyResetTimer = null;
|
|
365
337
|
destroyed = false;
|
|
366
338
|
highlightDebounceTimer = null;
|
|
@@ -566,21 +538,19 @@ let TngCodeBlockComponent = class TngCodeBlockComponent {
|
|
|
566
538
|
this.setRenderState('error', error);
|
|
567
539
|
}
|
|
568
540
|
}
|
|
569
|
-
};
|
|
570
|
-
TngCodeBlockComponent = __decorate([
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
], TngCodeBlockComponent);
|
|
585
|
-
export { TngCodeBlockComponent };
|
|
541
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCodeBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
542
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: TngCodeBlockComponent, isStandalone: true, selector: "tng-code-block", inputs: { adapter: { classPropertyName: "adapter", publicName: "adapter", isSignal: true, isRequired: false, transformFunction: null }, caption: { classPropertyName: "caption", publicName: "caption", isSignal: true, isRequired: false, transformFunction: null }, code: { classPropertyName: "code", publicName: "code", isSignal: true, isRequired: false, transformFunction: null }, copyMode: { classPropertyName: "copyMode", publicName: "copy", isSignal: true, isRequired: false, transformFunction: null }, copyLabel: { classPropertyName: "copyLabel", publicName: "copyLabel", isSignal: true, isRequired: false, transformFunction: null }, copiedLabel: { classPropertyName: "copiedLabel", publicName: "copiedLabel", isSignal: true, isRequired: false, transformFunction: null }, copyResetDuration: { classPropertyName: "copyResetDuration", publicName: "copyResetDuration", isSignal: true, isRequired: false, transformFunction: null }, copySuccessDurationMs: { classPropertyName: "copySuccessDurationMs", publicName: "copySuccessDurationMs", isSignal: true, isRequired: false, transformFunction: null }, copyText: { classPropertyName: "copyText", publicName: "copyText", isSignal: true, isRequired: false, transformFunction: null }, errorLabel: { classPropertyName: "errorLabel", publicName: "errorLabel", isSignal: true, isRequired: false, transformFunction: null }, focusLines: { classPropertyName: "focusLines", publicName: "focusLines", isSignal: true, isRequired: false, transformFunction: null }, highlight: { classPropertyName: "highlight", publicName: "highlight", isSignal: true, isRequired: false, transformFunction: null }, highlightDebounceMs: { classPropertyName: "highlightDebounceMs", publicName: "highlightDebounceMs", isSignal: true, isRequired: false, transformFunction: null }, highlightLines: { classPropertyName: "highlightLines", publicName: "highlightLines", isSignal: true, isRequired: false, transformFunction: null }, highlightMode: { classPropertyName: "highlightMode", publicName: "highlightMode", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null }, lineNumbersMode: { classPropertyName: "lineNumbersMode", publicName: "lineNumbers", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, sanitizeHtml: { classPropertyName: "sanitizeHtml", publicName: "sanitizeHtml", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, showLanguageBadge: { classPropertyName: "showLanguageBadge", publicName: "showLanguageBadge", isSignal: true, isRequired: false, transformFunction: null }, showLineNumbers: { classPropertyName: "showLineNumbers", publicName: "showLineNumbers", isSignal: true, isRequired: false, transformFunction: null }, startingLineNumber: { classPropertyName: "startingLineNumber", publicName: "startingLineNumber", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { copy: "copy", copyError: "copyError", copySuccess: "copySuccess", renderStateChange: "renderStateChange", tngCopied: "tngCopied", tngCopyError: "tngCopyError" }, ngImport: i0, template: "<section\n tngCodeBlock\n class=\"tng-code-block\"\n [attr.data-has-copy]=\"dataHasCopy()\"\n [attr.data-has-title]=\"dataHasTitle()\"\n [attr.data-highlighted]=\"dataHighlighted()\"\n [attr.data-state]=\"renderState()\"\n [attr.data-variant]=\"variant()\"\n [attr.data-wrap]=\"dataWrap()\"\n>\n @if (shouldRenderHeader()) {\n <header tngCodeBlockHeader class=\"tng-code-block__header\" data-slot=\"header\">\n @if (titleText(); as title) {\n <h3 class=\"tng-code-block__title\" data-slot=\"title\">{{ title }}</h3>\n }\n\n <div class=\"tng-code-block__actions\" data-slot=\"actions\">\n @if (hasLanguageBadge()) {\n <span class=\"tng-code-block__language\" data-slot=\"language-badge\">{{ languageLabel() }}</span>\n }\n\n @if (shouldShowCopyAction()) {\n <button\n type=\"button\"\n tngCopy\n class=\"tng-code-block__copy-button\"\n data-slot=\"copy-button\"\n [attr.aria-label]=\"copyLabel()\"\n [attr.data-copy-state]=\"copyButtonLabel()\"\n [tngCopyButtonSuccessDurationMs]=\"effectiveCopyResetDuration()\"\n [tngCopyButtonText]=\"copyPayload()\"\n [tngCopyDisabled]=\"normalizedCode().length === 0\"\n (tngCopy)=\"onPrimitiveCopy($event)\"\n (tngCopyError)=\"onPrimitiveCopyError($event)\"\n (tngCopySuccess)=\"onPrimitiveCopySuccess($event)\"\n >\n {{ copyButtonLabel() }}\n </button>\n }\n </div>\n </header>\n }\n\n <div\n tngCodeBlockBody\n class=\"tng-code-block__body\"\n data-slot=\"body\"\n [class.tng-code-block__body--line-numbers]=\"shouldRenderBodyLineNumbers()\"\n [class.tng-code-block__body--wrap]=\"wrap()\"\n >\n @if (shouldRenderBodyLineNumbers()) {\n <ol tngCodeBlockGutter class=\"tng-code-block__gutter\" aria-hidden=\"true\" data-slot=\"line-numbers\">\n @for (lineNumber of lineNumbers(); track lineNumber) {\n <li class=\"tng-code-block__line-number\">{{ lineNumber }}</li>\n }\n </ol>\n }\n\n <pre\n class=\"tng-code-block__pre\"\n data-slot=\"pre\"\n [attr.data-highlighting]=\"isHighlighting() ? 'pending' : 'ready'\"\n [style.max-height]=\"maxHeightCssValue()\"\n [style.overflow-y]=\"maxHeightCssValue() ? 'auto' : null\"\n ><code tngCodeBlockCode class=\"tng-code-block__code\" data-slot=\"code\">@for (line of renderedLines(); track line.lineNumber; let isLast = $last) {<span\n class=\"tng-code-block__line\"\n data-slot=\"line\"\n [attr.data-line-number]=\"line.lineNumber\"\n [class.tng-code-block__line--dim]=\"line.dimmed\"\n [class.tng-code-block__line--highlight]=\"line.highlighted\"\n [innerHTML]=\"line.html\"\n ></span>@if (!isLast) { }}</code></pre>\n </div>\n\n @if (caption(); as caption) {\n <p class=\"tng-code-block__caption\" data-slot=\"caption\">{{ caption }}</p>\n }\n</section>\n", styles: [":host {\n display: block;\n}\n\n.tng-code-block {\n background: var(--tng-code-block-bg, var(--tng-semantic-background-base, #ffffff));\n border: 1px solid var(--tng-code-block-border, var(--tng-semantic-border-subtle, #cbd5e1));\n border-radius: var(--tng-code-block-radius, 0.8rem);\n color: var(--tng-code-block-fg, var(--tng-semantic-foreground-primary, #0f172a));\n display: grid;\n overflow: hidden;\n}\n\n.tng-code-block__header {\n align-items: center;\n background: var(\n --tng-code-block-header-bg,\n color-mix(\n in srgb,\n var(--tng-semantic-background-surface, #f8fafc) 90%,\n var(--tng-semantic-background-canvas, #ffffff) 10%\n )\n );\n border-bottom: 1px solid var(--tng-code-block-border, var(--tng-semantic-border-subtle, #cbd5e1));\n display: flex;\n justify-content: space-between;\n min-height: 2.25rem;\n padding: 0.35rem 0.65rem;\n}\n\n.tng-code-block__title {\n color: inherit;\n font-size: 0.95rem;\n font-weight: 600;\n margin: 0;\n}\n\n.tng-code-block__actions {\n align-items: center;\n display: inline-flex;\n gap: 0.45rem;\n}\n\n.tng-code-block__language {\n color: var(--tng-code-block-language-fg, var(--tng-semantic-accent-brand, #2563eb));\n font-size: 0.72rem;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n}\n\n.tng-code-block__copy-button {\n appearance: none;\n background: var(--tng-code-block-copy-bg, transparent);\n border: 1px solid var(--tng-code-block-copy-border, var(--tng-semantic-border-strong, #94a3b8));\n border-radius: 0.55rem;\n color: var(--tng-code-block-copy-fg, var(--tng-semantic-foreground-secondary, #475569));\n cursor: pointer;\n font: inherit;\n font-size: 0.75rem;\n font-weight: 600;\n min-height: 1.85rem;\n padding: 0 0.7rem;\n transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease, opacity 120ms ease;\n}\n\n.tng-code-block__copy-button[data-copy-state='Copied'] {\n background: var(--tng-code-block-copy-success-bg, var(--tng-semantic-accent-success, #16a34a));\n border-color: var(--tng-code-block-copy-success-bg, var(--tng-semantic-accent-success, #16a34a));\n color: var(--tng-code-block-copy-success-fg, #f0fdf4);\n}\n\n.tng-code-block__copy-button[data-copy-state='Copy failed'] {\n background: var(--tng-code-block-copy-error-bg, var(--tng-semantic-accent-danger, #dc2626));\n border-color: var(--tng-code-block-copy-error-bg, var(--tng-semantic-accent-danger, #dc2626));\n color: var(--tng-code-block-copy-error-fg, #fef2f2);\n}\n\n.tng-code-block__copy-button:focus-visible {\n box-shadow: 0 0 0 3px var(--tng-code-block-focus-ring, var(--tng-semantic-focus-ring, rgba(59, 130, 246, 0.45)));\n outline: none;\n}\n\n.tng-code-block__copy-button:disabled,\n.tng-code-block__copy-button[data-copy-disabled] {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.tng-code-block__body {\n display: grid;\n}\n\n.tng-code-block__body--line-numbers {\n grid-template-columns: auto minmax(0, 1fr);\n}\n\n.tng-code-block__gutter {\n background: var(\n --tng-code-block-gutter-bg,\n color-mix(\n in srgb,\n var(--tng-semantic-background-surface, #f8fafc) 80%,\n var(--tng-semantic-background-canvas, #ffffff) 20%\n )\n );\n border-right: 1px solid var(--tng-code-block-border, var(--tng-semantic-border-subtle, #cbd5e1));\n color: var(--tng-code-block-gutter-fg, var(--tng-semantic-foreground-muted, #64748b));\n list-style: none;\n margin: 0;\n min-width: 2.8rem;\n padding: 0.75rem 0.45rem;\n text-align: right;\n}\n\n.tng-code-block__line-number {\n font-family: var(--tng-code-block-font-family, 'IBM Plex Mono', 'Fira Code', 'Menlo', monospace);\n font-size: var(--tng-code-block-line-number-size, var(--tng-code-block-font-size, 0.84rem));\n font-variant-numeric: tabular-nums;\n line-height: var(--tng-code-block-line-height, 1.6);\n}\n\n.tng-code-block__pre {\n margin: 0;\n overflow-x: auto;\n overflow-y: hidden;\n padding: 0.75rem 0.9rem;\n}\n\n.tng-code-block__code {\n color: inherit;\n display: block;\n font-family: var(--tng-code-block-font-family, 'IBM Plex Mono', 'Fira Code', 'Menlo', monospace);\n font-size: var(--tng-code-block-font-size, 0.84rem);\n min-height: 100%;\n white-space: normal;\n}\n\n.tng-code-block__line {\n display: block;\n line-height: var(--tng-code-block-line-height, 1.6);\n min-height: calc(1em * var(--tng-code-block-line-height, 1.6));\n white-space: pre;\n}\n\n.tng-code-block__line--dim {\n opacity: var(--tng-code-block-line-dim-opacity, 0.55);\n}\n\n.tng-code-block__line--highlight {\n background: var(\n --tng-code-block-line-highlight-bg,\n color-mix(in srgb, var(--tng-semantic-accent-brand, #2563eb) 14%, transparent)\n );\n border-radius: 0.25rem;\n margin-inline: -0.2rem;\n padding-inline: 0.2rem;\n}\n\n.tng-code-block__caption {\n color: var(--tng-code-block-caption-fg, var(--tng-semantic-foreground-secondary, #475569));\n font-size: 0.78rem;\n margin: 0;\n padding: 0 0.9rem 0.75rem;\n}\n\n.tng-code-block__body--wrap .tng-code-block__line {\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n word-break: break-word;\n}\n"], dependencies: [{ kind: "directive", type: TngCodeBlockPrimitive, selector: "[tngCodeBlock]", exportAs: ["tngCodeBlock"] }, { kind: "directive", type: TngCodeBlockHeaderPrimitive, selector: "[tngCodeBlockHeader]", exportAs: ["tngCodeBlockHeader"] }, { kind: "directive", type: TngCodeBlockBodyPrimitive, selector: "[tngCodeBlockBody]", exportAs: ["tngCodeBlockBody"] }, { kind: "directive", type: TngCodeBlockGutterPrimitive, selector: "[tngCodeBlockGutter]", exportAs: ["tngCodeBlockGutter"] }, { kind: "directive", type: TngCodeBlockCodePrimitive, selector: "[tngCodeBlockCode]", exportAs: ["tngCodeBlockCode"] }, { kind: "directive", type: TngCopy, selector: "[tngCopy], [tngCopyButton]", inputs: ["tngCopyButtonText", "tngCopyButtonTarget", "tngCopyButtonFormat", "tngCopyButtonSuccessDurationMs", "tngCopyButtonDisabled", "tngCopyButtonHotkey", "tngCopyButtonAnnounce", "tngCopyButtonSuccessMessage", "tngCopyButtonErrorMessage", "tngCopyDisabled", "tngCopyFrom", "tngCopyIgnoreSelectors", "tngCopyText"], outputs: ["tngCopy", "tngCopied", "tngCopySuccess", "tngCopyError", "tngCopyAnnounced"], exportAs: ["tngCopy"] }] });
|
|
543
|
+
}
|
|
544
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCodeBlockComponent, decorators: [{
|
|
545
|
+
type: Component,
|
|
546
|
+
args: [{ selector: 'tng-code-block', imports: [
|
|
547
|
+
TngCodeBlockPrimitive,
|
|
548
|
+
TngCodeBlockHeaderPrimitive,
|
|
549
|
+
TngCodeBlockBodyPrimitive,
|
|
550
|
+
TngCodeBlockGutterPrimitive,
|
|
551
|
+
TngCodeBlockCodePrimitive,
|
|
552
|
+
TngCopy,
|
|
553
|
+
], template: "<section\n tngCodeBlock\n class=\"tng-code-block\"\n [attr.data-has-copy]=\"dataHasCopy()\"\n [attr.data-has-title]=\"dataHasTitle()\"\n [attr.data-highlighted]=\"dataHighlighted()\"\n [attr.data-state]=\"renderState()\"\n [attr.data-variant]=\"variant()\"\n [attr.data-wrap]=\"dataWrap()\"\n>\n @if (shouldRenderHeader()) {\n <header tngCodeBlockHeader class=\"tng-code-block__header\" data-slot=\"header\">\n @if (titleText(); as title) {\n <h3 class=\"tng-code-block__title\" data-slot=\"title\">{{ title }}</h3>\n }\n\n <div class=\"tng-code-block__actions\" data-slot=\"actions\">\n @if (hasLanguageBadge()) {\n <span class=\"tng-code-block__language\" data-slot=\"language-badge\">{{ languageLabel() }}</span>\n }\n\n @if (shouldShowCopyAction()) {\n <button\n type=\"button\"\n tngCopy\n class=\"tng-code-block__copy-button\"\n data-slot=\"copy-button\"\n [attr.aria-label]=\"copyLabel()\"\n [attr.data-copy-state]=\"copyButtonLabel()\"\n [tngCopyButtonSuccessDurationMs]=\"effectiveCopyResetDuration()\"\n [tngCopyButtonText]=\"copyPayload()\"\n [tngCopyDisabled]=\"normalizedCode().length === 0\"\n (tngCopy)=\"onPrimitiveCopy($event)\"\n (tngCopyError)=\"onPrimitiveCopyError($event)\"\n (tngCopySuccess)=\"onPrimitiveCopySuccess($event)\"\n >\n {{ copyButtonLabel() }}\n </button>\n }\n </div>\n </header>\n }\n\n <div\n tngCodeBlockBody\n class=\"tng-code-block__body\"\n data-slot=\"body\"\n [class.tng-code-block__body--line-numbers]=\"shouldRenderBodyLineNumbers()\"\n [class.tng-code-block__body--wrap]=\"wrap()\"\n >\n @if (shouldRenderBodyLineNumbers()) {\n <ol tngCodeBlockGutter class=\"tng-code-block__gutter\" aria-hidden=\"true\" data-slot=\"line-numbers\">\n @for (lineNumber of lineNumbers(); track lineNumber) {\n <li class=\"tng-code-block__line-number\">{{ lineNumber }}</li>\n }\n </ol>\n }\n\n <pre\n class=\"tng-code-block__pre\"\n data-slot=\"pre\"\n [attr.data-highlighting]=\"isHighlighting() ? 'pending' : 'ready'\"\n [style.max-height]=\"maxHeightCssValue()\"\n [style.overflow-y]=\"maxHeightCssValue() ? 'auto' : null\"\n ><code tngCodeBlockCode class=\"tng-code-block__code\" data-slot=\"code\">@for (line of renderedLines(); track line.lineNumber; let isLast = $last) {<span\n class=\"tng-code-block__line\"\n data-slot=\"line\"\n [attr.data-line-number]=\"line.lineNumber\"\n [class.tng-code-block__line--dim]=\"line.dimmed\"\n [class.tng-code-block__line--highlight]=\"line.highlighted\"\n [innerHTML]=\"line.html\"\n ></span>@if (!isLast) { }}</code></pre>\n </div>\n\n @if (caption(); as caption) {\n <p class=\"tng-code-block__caption\" data-slot=\"caption\">{{ caption }}</p>\n }\n</section>\n", styles: [":host {\n display: block;\n}\n\n.tng-code-block {\n background: var(--tng-code-block-bg, var(--tng-semantic-background-base, #ffffff));\n border: 1px solid var(--tng-code-block-border, var(--tng-semantic-border-subtle, #cbd5e1));\n border-radius: var(--tng-code-block-radius, 0.8rem);\n color: var(--tng-code-block-fg, var(--tng-semantic-foreground-primary, #0f172a));\n display: grid;\n overflow: hidden;\n}\n\n.tng-code-block__header {\n align-items: center;\n background: var(\n --tng-code-block-header-bg,\n color-mix(\n in srgb,\n var(--tng-semantic-background-surface, #f8fafc) 90%,\n var(--tng-semantic-background-canvas, #ffffff) 10%\n )\n );\n border-bottom: 1px solid var(--tng-code-block-border, var(--tng-semantic-border-subtle, #cbd5e1));\n display: flex;\n justify-content: space-between;\n min-height: 2.25rem;\n padding: 0.35rem 0.65rem;\n}\n\n.tng-code-block__title {\n color: inherit;\n font-size: 0.95rem;\n font-weight: 600;\n margin: 0;\n}\n\n.tng-code-block__actions {\n align-items: center;\n display: inline-flex;\n gap: 0.45rem;\n}\n\n.tng-code-block__language {\n color: var(--tng-code-block-language-fg, var(--tng-semantic-accent-brand, #2563eb));\n font-size: 0.72rem;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n}\n\n.tng-code-block__copy-button {\n appearance: none;\n background: var(--tng-code-block-copy-bg, transparent);\n border: 1px solid var(--tng-code-block-copy-border, var(--tng-semantic-border-strong, #94a3b8));\n border-radius: 0.55rem;\n color: var(--tng-code-block-copy-fg, var(--tng-semantic-foreground-secondary, #475569));\n cursor: pointer;\n font: inherit;\n font-size: 0.75rem;\n font-weight: 600;\n min-height: 1.85rem;\n padding: 0 0.7rem;\n transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease, opacity 120ms ease;\n}\n\n.tng-code-block__copy-button[data-copy-state='Copied'] {\n background: var(--tng-code-block-copy-success-bg, var(--tng-semantic-accent-success, #16a34a));\n border-color: var(--tng-code-block-copy-success-bg, var(--tng-semantic-accent-success, #16a34a));\n color: var(--tng-code-block-copy-success-fg, #f0fdf4);\n}\n\n.tng-code-block__copy-button[data-copy-state='Copy failed'] {\n background: var(--tng-code-block-copy-error-bg, var(--tng-semantic-accent-danger, #dc2626));\n border-color: var(--tng-code-block-copy-error-bg, var(--tng-semantic-accent-danger, #dc2626));\n color: var(--tng-code-block-copy-error-fg, #fef2f2);\n}\n\n.tng-code-block__copy-button:focus-visible {\n box-shadow: 0 0 0 3px var(--tng-code-block-focus-ring, var(--tng-semantic-focus-ring, rgba(59, 130, 246, 0.45)));\n outline: none;\n}\n\n.tng-code-block__copy-button:disabled,\n.tng-code-block__copy-button[data-copy-disabled] {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.tng-code-block__body {\n display: grid;\n}\n\n.tng-code-block__body--line-numbers {\n grid-template-columns: auto minmax(0, 1fr);\n}\n\n.tng-code-block__gutter {\n background: var(\n --tng-code-block-gutter-bg,\n color-mix(\n in srgb,\n var(--tng-semantic-background-surface, #f8fafc) 80%,\n var(--tng-semantic-background-canvas, #ffffff) 20%\n )\n );\n border-right: 1px solid var(--tng-code-block-border, var(--tng-semantic-border-subtle, #cbd5e1));\n color: var(--tng-code-block-gutter-fg, var(--tng-semantic-foreground-muted, #64748b));\n list-style: none;\n margin: 0;\n min-width: 2.8rem;\n padding: 0.75rem 0.45rem;\n text-align: right;\n}\n\n.tng-code-block__line-number {\n font-family: var(--tng-code-block-font-family, 'IBM Plex Mono', 'Fira Code', 'Menlo', monospace);\n font-size: var(--tng-code-block-line-number-size, var(--tng-code-block-font-size, 0.84rem));\n font-variant-numeric: tabular-nums;\n line-height: var(--tng-code-block-line-height, 1.6);\n}\n\n.tng-code-block__pre {\n margin: 0;\n overflow-x: auto;\n overflow-y: hidden;\n padding: 0.75rem 0.9rem;\n}\n\n.tng-code-block__code {\n color: inherit;\n display: block;\n font-family: var(--tng-code-block-font-family, 'IBM Plex Mono', 'Fira Code', 'Menlo', monospace);\n font-size: var(--tng-code-block-font-size, 0.84rem);\n min-height: 100%;\n white-space: normal;\n}\n\n.tng-code-block__line {\n display: block;\n line-height: var(--tng-code-block-line-height, 1.6);\n min-height: calc(1em * var(--tng-code-block-line-height, 1.6));\n white-space: pre;\n}\n\n.tng-code-block__line--dim {\n opacity: var(--tng-code-block-line-dim-opacity, 0.55);\n}\n\n.tng-code-block__line--highlight {\n background: var(\n --tng-code-block-line-highlight-bg,\n color-mix(in srgb, var(--tng-semantic-accent-brand, #2563eb) 14%, transparent)\n );\n border-radius: 0.25rem;\n margin-inline: -0.2rem;\n padding-inline: 0.2rem;\n}\n\n.tng-code-block__caption {\n color: var(--tng-code-block-caption-fg, var(--tng-semantic-foreground-secondary, #475569));\n font-size: 0.78rem;\n margin: 0;\n padding: 0 0.9rem 0.75rem;\n}\n\n.tng-code-block__body--wrap .tng-code-block__line {\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n word-break: break-word;\n}\n"] }]
|
|
554
|
+
}], ctorParameters: () => [], propDecorators: { adapter: [{ type: i0.Input, args: [{ isSignal: true, alias: "adapter", required: false }] }], caption: [{ type: i0.Input, args: [{ isSignal: true, alias: "caption", required: false }] }], code: [{ type: i0.Input, args: [{ isSignal: true, alias: "code", required: false }] }], copyMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "copy", required: false }] }], copyLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "copyLabel", required: false }] }], copiedLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "copiedLabel", required: false }] }], copyResetDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "copyResetDuration", required: false }] }], copySuccessDurationMs: [{ type: i0.Input, args: [{ isSignal: true, alias: "copySuccessDurationMs", required: false }] }], copyText: [{ type: i0.Input, args: [{ isSignal: true, alias: "copyText", required: false }] }], errorLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorLabel", required: false }] }], focusLines: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusLines", required: false }] }], highlight: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlight", required: false }] }], highlightDebounceMs: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlightDebounceMs", required: false }] }], highlightLines: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlightLines", required: false }] }], highlightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlightMode", required: false }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], lineNumbersMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "lineNumbers", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], sanitizeHtml: [{ type: i0.Input, args: [{ isSignal: true, alias: "sanitizeHtml", required: false }] }], showHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "showHeader", required: false }] }], showLanguageBadge: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLanguageBadge", required: false }] }], showLineNumbers: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLineNumbers", required: false }] }], startingLineNumber: [{ type: i0.Input, args: [{ isSignal: true, alias: "startingLineNumber", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], wrap: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrap", required: false }] }], copy: [{ type: i0.Output, args: ["copy"] }], copyError: [{ type: i0.Output, args: ["copyError"] }], copySuccess: [{ type: i0.Output, args: ["copySuccess"] }], renderStateChange: [{ type: i0.Output, args: ["renderStateChange"] }], tngCopied: [{ type: i0.Output, args: ["tngCopied"] }], tngCopyError: [{ type: i0.Output, args: ["tngCopyError"] }] } });
|
|
555
|
+
export { TngCodeBlockComponent as TngCodeBlock };
|
|
586
556
|
//# sourceMappingURL=tng-code-block.component.js.map
|
|
@@ -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","../../../../../../../../libs/tailng-ui/components/src/lib/utility/code-block/tng-code-block.component.html"],"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;AAeD,MAAM,OAAO,qBAAqB;IAChB,OAAO,GAAG,KAAK,CAAgB,IAAI,mDAAC,CAAC;IACrC,OAAO,GAAG,KAAK,CAAgB,IAAI,mDAAC,CAAC;IACrC,IAAI,GAAG,KAAK,CAAS,EAAE,gDAAC,CAAC;IACzB,QAAQ,GAAG,KAAK,CAC9B,MAAM,qDAEJ,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,0BAA0B,GAExC,CAAC;IACc,SAAS,GAAG,KAAK,CAAS,WAAW,qDAAC,CAAC;IACvC,WAAW,GAAG,KAAK,CAAS,QAAQ,uDAAC,CAAC;IACtC,iBAAiB,GAAG,KAAK,CAA0B,wBAAwB,8DACzF,SAAS,EAAE,mCAAmC,GAC9C,CAAC;IACa,qBAAqB,GAAG,KAAK,CAC3C,SAAS,kEAEP,SAAS,EAAE,4BAA4B,GAE1C,CAAC;IACc,QAAQ,GAAG,KAAK,CAA6D,IAAI,oDAAC,CAAC;IACnF,UAAU,GAAG,KAAK,CAAS,aAAa,sDAAC,CAAC;IAC1C,UAAU,GAAG,KAAK,CAA4B,KAAK,uDACjE,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,SAAS,GAAG,KAAK,CAA4B,IAAI,sDAC/D,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,mBAAmB,GAAG,KAAK,CAA0B,CAAC,gEACpE,SAAS,EAAE,mCAAmC,GAC9C,CAAC;IACa,cAAc,GAAG,KAAK,CAAmD,IAAI,0DAAC,CAAC;IAC/E,aAAa,GAAG,KAAK,CAAoC,MAAM,0DAC7E,SAAS,EAAE,+BAA+B,GAC1C,CAAC;IACa,QAAQ,GAAG,KAAK,CAAgB,IAAI,oDAAC,CAAC;IACtC,eAAe,GAAG,KAAK,CAGrC,KAAK,4DACL,KAAK,EAAE,aAAa;QACpB,SAAS,EAAE,iCAAiC,GAC5C,CAAC;IACa,SAAS,GAAG,KAAK,CAAyB,IAAI,qDAAC,CAAC;IAChD,YAAY,GAAG,KAAK,CAGlC,MAAM,yDACN,SAAS,EAAE,8BAA8B,GACzC,CAAC;IACa,UAAU,GAAG,KAAK,CAA4B,IAAI,uDAChE,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,iBAAiB,GAAG,KAAK,CAA4B,IAAI,8DACvE,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,eAAe,GAAG,KAAK,CACrC,SAAS,4DAEP,SAAS,EAAE,qBAAqB,GAEnC,CAAC;IACc,kBAAkB,GAAG,KAAK,CAA0B,CAAC,+DACnE,SAAS,EAAE,oCAAoC,GAC/C,CAAC;IACa,KAAK,GAAG,KAAK,CAAgB,IAAI,iDAAC,CAAC;IACnC,KAAK,GAAG,KAAK,CAAgB,IAAI,iDAAC,CAAC;IACnC,OAAO,GAAG,KAAK,CAAsB,SAAS,mDAAC,CAAC;IAChD,IAAI,GAAG,KAAK,CAA4B,KAAK,iDAC3D,SAAS,EAAE,gBAAgB,GAC3B,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,2DAAC,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,uDAAC,CAAC;IAEgB,WAAW,GAAG,QAAQ,CAAC,GAAqB,EAAE,CAC/D,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,uDAC/C,CAAC;IAEiB,YAAY,GAAG,QAAQ,CAAC,GAAqB,EAAE,CAChE,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,wDAC7C,CAAC;IAEiB,eAAe,GAAG,QAAQ,CAAC,GAAqB,EAAE,CACnE,IAAI,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,2DACxD,CAAC;IAEiB,QAAQ,GAAG,QAAQ,CAAC,GAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,oDAAC,CAAC;IAE9E,0BAA0B,GAAG,QAAQ,CAAC,GAAW,EAAE;QACpE,OAAO,IAAI,CAAC,qBAAqB,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAClE,CAAC,sEAAC,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,gEAAC,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,4DAAC,CAAC;IAEgB,gBAAgB,GAAG,QAAQ,CAAC,GAAY,EAAE;QAC3D,OAAO,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,CAAC;IACtE,CAAC,4DAAC,CAAC;IAEgB,gBAAgB,GAAG,QAAQ,CAAC,GAAwB,EAAE,CACvE,4BAA4B,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,4DACpD,CAAC;IAEiB,cAAc,GAAG,QAAQ,CAAC,GAAY,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,cAAc,0DAAC,CAAC;IAEhF,gBAAgB,GAAG,QAAQ,CAAC,GAAkB,EAAE;QACjE,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9D,CAAC,4DAAC,CAAC;IAEgB,aAAa,GAAG,QAAQ,CAAC,GAAW,EAAE;QACvD,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,MAAM,CAAC;IAC3C,CAAC,yDAAC,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,uDAAC,CAAC;IAEgB,iBAAiB,GAAG,QAAQ,CAAC,GAAkB,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,6DAAC,CAAC;IAEpF,cAAc,GAAG,QAAQ,CAAC,GAAW,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,0DAAC,CAAC;IAEhF,WAAW,GAAG,MAAM,CAA0B,MAAM,uDAAC,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,yDAAC,CAAC;IAEgB,2BAA2B,GAAG,QAAQ,CAAC,GAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,uEAAC,CAAC;IAEnF,kBAAkB,GAAG,QAAQ,CAAC,GAAY,EAAE;QAC7D,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACtD,CAAC,8DAAC,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,gEAAC,CAAC;IAEgB,SAAS,GAAG,QAAQ,CAAC,GAAkB,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,qDAAC,CAAC;IAEnF,YAAY,GAAG,MAAM,CAAiC,CAAC,EAAE,CAAC,wDAAC,CAAC;IAC5D,SAAS,GAAG,MAAM,CAAwB,MAAM,qDAAC,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,8DAAC,CAAC;IAC9F,gBAAgB,GAAG,MAAM,CAAgB,IAAI,4DAAC,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;uGAneU,qBAAqB;2FAArB,qBAAqB,03HCtVlC,48FA8EA,6lKD8PI,qBAAqB,uFACrB,2BAA2B,mGAC3B,yBAAyB,+FACzB,2BAA2B,mGAC3B,yBAAyB,+FACzB,OAAO;;2FAKE,qBAAqB;kBAbjC,SAAS;+BACE,gBAAgB,WACjB;wBACP,qBAAqB;wBACrB,2BAA2B;wBAC3B,yBAAyB;wBACzB,2BAA2B;wBAC3B,yBAAyB;wBACzB,OAAO;qBACR;;AAyeH,OAAO,EAAE,qBAAqB,IAAI,YAAY,EAAE,CAAC","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}\nexport { TngCodeBlockComponent as TngCodeBlock };\n","<section\n tngCodeBlock\n class=\"tng-code-block\"\n [attr.data-has-copy]=\"dataHasCopy()\"\n [attr.data-has-title]=\"dataHasTitle()\"\n [attr.data-highlighted]=\"dataHighlighted()\"\n [attr.data-state]=\"renderState()\"\n [attr.data-variant]=\"variant()\"\n [attr.data-wrap]=\"dataWrap()\"\n>\n @if (shouldRenderHeader()) {\n <header tngCodeBlockHeader class=\"tng-code-block__header\" data-slot=\"header\">\n @if (titleText(); as title) {\n <h3 class=\"tng-code-block__title\" data-slot=\"title\">{{ title }}</h3>\n }\n\n <div class=\"tng-code-block__actions\" data-slot=\"actions\">\n @if (hasLanguageBadge()) {\n <span class=\"tng-code-block__language\" data-slot=\"language-badge\">{{ languageLabel() }}</span>\n }\n\n @if (shouldShowCopyAction()) {\n <button\n type=\"button\"\n tngCopy\n class=\"tng-code-block__copy-button\"\n data-slot=\"copy-button\"\n [attr.aria-label]=\"copyLabel()\"\n [attr.data-copy-state]=\"copyButtonLabel()\"\n [tngCopyButtonSuccessDurationMs]=\"effectiveCopyResetDuration()\"\n [tngCopyButtonText]=\"copyPayload()\"\n [tngCopyDisabled]=\"normalizedCode().length === 0\"\n (tngCopy)=\"onPrimitiveCopy($event)\"\n (tngCopyError)=\"onPrimitiveCopyError($event)\"\n (tngCopySuccess)=\"onPrimitiveCopySuccess($event)\"\n >\n {{ copyButtonLabel() }}\n </button>\n }\n </div>\n </header>\n }\n\n <div\n tngCodeBlockBody\n class=\"tng-code-block__body\"\n data-slot=\"body\"\n [class.tng-code-block__body--line-numbers]=\"shouldRenderBodyLineNumbers()\"\n [class.tng-code-block__body--wrap]=\"wrap()\"\n >\n @if (shouldRenderBodyLineNumbers()) {\n <ol tngCodeBlockGutter class=\"tng-code-block__gutter\" aria-hidden=\"true\" data-slot=\"line-numbers\">\n @for (lineNumber of lineNumbers(); track lineNumber) {\n <li class=\"tng-code-block__line-number\">{{ lineNumber }}</li>\n }\n </ol>\n }\n\n <pre\n class=\"tng-code-block__pre\"\n data-slot=\"pre\"\n [attr.data-highlighting]=\"isHighlighting() ? 'pending' : 'ready'\"\n [style.max-height]=\"maxHeightCssValue()\"\n [style.overflow-y]=\"maxHeightCssValue() ? 'auto' : null\"\n ><code tngCodeBlockCode class=\"tng-code-block__code\" data-slot=\"code\">@for (line of renderedLines(); track line.lineNumber; let isLast = $last) {<span\n class=\"tng-code-block__line\"\n data-slot=\"line\"\n [attr.data-line-number]=\"line.lineNumber\"\n [class.tng-code-block__line--dim]=\"line.dimmed\"\n [class.tng-code-block__line--highlight]=\"line.highlighted\"\n [innerHTML]=\"line.html\"\n ></span>@if (!isLast) { }}</code></pre>\n </div>\n\n @if (caption(); as caption) {\n <p class=\"tng-code-block__caption\" data-slot=\"caption\">{{ caption }}</p>\n }\n</section>\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type OnDestroy } from '@angular/core';
|
|
2
2
|
import type { TngCopyFromTarget, TngCopyIgnoreSelectorsInput } from '@tailng-ui/primitives';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
3
4
|
type TngCopyButtonState = 'copied' | 'copying' | 'error' | 'idle';
|
|
4
5
|
export type TngCopyButtonAppearance = 'ghost' | 'outline' | 'solid';
|
|
5
6
|
export type TngCopyButtonSize = 'md' | 'sm';
|
|
@@ -34,6 +35,8 @@ export declare class TngCopyButtonComponent implements OnDestroy {
|
|
|
34
35
|
protected onPrimitiveCopyError(...args: readonly unknown[]): void;
|
|
35
36
|
private clearResetTimer;
|
|
36
37
|
private scheduleReset;
|
|
38
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngCopyButtonComponent, never>;
|
|
39
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TngCopyButtonComponent, "tng-copy-button", never, { "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "copiedIconText": { "alias": "copiedIconText"; "required": false; "isSignal": true; }; "copyLabel": { "alias": "copyLabel"; "required": false; "isSignal": true; }; "copyIconText": { "alias": "copyIconText"; "required": false; "isSignal": true; }; "copiedLabel": { "alias": "copiedLabel"; "required": false; "isSignal": true; }; "copyingLabel": { "alias": "copyingLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errorLabel": { "alias": "errorLabel"; "required": false; "isSignal": true; }; "from": { "alias": "from"; "required": false; "isSignal": true; }; "ignoreSelectors": { "alias": "ignoreSelectors"; "required": false; "isSignal": true; }; "resetDelay": { "alias": "resetDelay"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; }, { "tngCopied": "tngCopied"; "tngCopyError": "tngCopyError"; }, never, ["[copiedIcon]", "[copyIcon]"], true, never>;
|
|
37
40
|
}
|
|
38
|
-
export {};
|
|
41
|
+
export { TngCopyButtonComponent as TngCopyButton };
|
|
39
42
|
//# sourceMappingURL=tng-copy-button.component.d.ts.map
|
|
@@ -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
|
|
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,qBAMa,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;yCAlGV,sBAAsB;2CAAtB,sBAAsB;CAyGlC;AACD,OAAO,EAAE,sBAAsB,IAAI,aAAa,EAAE,CAAC"}
|