@koobiq/components 18.2.1 → 18.4.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/code-block/_code-block-theme.scss +1 -1
- package/code-block/actionbar.component.d.ts +14 -4
- package/code-block/code-block-tokens.scss +4 -4
- package/code-block/code-block.component.d.ts +12 -15
- package/code-block/code-block.types.d.ts +12 -0
- package/core/common-behaviors/color.d.ts +1 -1
- package/core/common-behaviors/error-state.d.ts +1 -1
- package/core/error/error-state-matcher.d.ts +26 -0
- package/core/form-field/form-field-ref.d.ts +7 -0
- package/core/forms/index.d.ts +1 -0
- package/core/forms/validators.d.ts +107 -0
- package/core/locales/en-US.d.ts +13 -0
- package/core/locales/es-LA.d.ts +13 -0
- package/core/locales/fa-IR.d.ts +13 -0
- package/core/locales/locale-service.d.ts +89 -0
- package/core/locales/pt-BR.d.ts +13 -0
- package/core/locales/ru-RU.d.ts +13 -0
- package/core/locales/zh-CN.d.ts +13 -0
- package/core/public-api.d.ts +1 -2
- package/core/select/common.d.ts +2 -0
- package/core/services/theme.service.d.ts +2 -2
- package/core/styles/theming/_components-theming.scss +1 -1
- package/core/validation/validation.d.ts +1 -0
- package/datepicker/_datepicker-theme.scss +1 -1
- package/datepicker/datepicker-tokens.scss +2 -2
- package/dropdown/_dropdown-theme.scss +1 -1
- package/dropdown/dropdown-tokens.scss +1 -1
- package/esm2022/code-block/actionbar.component.mjs +35 -8
- package/esm2022/code-block/code-block.component.mjs +28 -19
- package/esm2022/code-block/code-block.types.mjs +5 -2
- package/esm2022/core/common-behaviors/color.mjs +2 -2
- package/esm2022/core/common-behaviors/error-state.mjs +1 -1
- package/esm2022/core/error/error-state-matcher.mjs +43 -0
- package/esm2022/core/form-field/form-field-ref.mjs +4 -1
- package/esm2022/core/forms/index.mjs +2 -1
- package/esm2022/core/forms/validators.mjs +163 -0
- package/esm2022/core/locales/en-US.mjs +14 -1
- package/esm2022/core/locales/es-LA.mjs +14 -1
- package/esm2022/core/locales/fa-IR.mjs +14 -1
- package/esm2022/core/locales/locale-service.mjs +30 -1
- package/esm2022/core/locales/pt-BR.mjs +14 -1
- package/esm2022/core/locales/ru-RU.mjs +14 -1
- package/esm2022/core/locales/zh-CN.mjs +14 -1
- package/esm2022/core/public-api.mjs +2 -3
- package/esm2022/core/select/common.mjs +7 -1
- package/esm2022/core/services/theme.service.mjs +3 -3
- package/esm2022/core/validation/validation.mjs +2 -1
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-header.component.mjs +5 -6
- package/esm2022/datepicker/datepicker.component.mjs +3 -3
- package/esm2022/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/file-upload/file-upload.mjs +2 -3
- package/esm2022/file-upload/multiple-file-upload.component.mjs +57 -17
- package/esm2022/file-upload/single-file-upload.component.mjs +31 -19
- package/esm2022/form-field/form-field-control.mjs +1 -1
- package/esm2022/icon/icon.component.mjs +2 -2
- package/esm2022/icon/icon.module.mjs +1 -1
- package/esm2022/input/input-number.mjs +74 -80
- package/esm2022/markdown/markdown.values.mjs +4 -2
- package/esm2022/modal/modal.component.mjs +2 -2
- package/esm2022/navbar/navbar-item.component.mjs +2 -2
- package/esm2022/navbar/navbar.component.mjs +2 -2
- package/esm2022/navbar/vertical-navbar.component.mjs +2 -2
- package/esm2022/popover/popover-confirm.component.mjs +3 -3
- package/esm2022/popover/popover.component.mjs +3 -3
- package/esm2022/select/select.component.mjs +1 -1
- package/esm2022/select/select.module.mjs +3 -7
- package/esm2022/sidepanel/sidepanel-container.component.mjs +3 -3
- package/esm2022/timezone/timezone-select.component.mjs +20 -10
- package/esm2022/tooltip/tooltip.component.mjs +13 -1
- package/fesm2022/koobiq-components-code-block.mjs +58 -24
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +310 -16
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +10 -11
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +2 -2
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +76 -27
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +1 -1
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +74 -80
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +3 -1
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +2 -2
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +6 -6
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +4 -4
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +3 -6
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +2 -2
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +18 -8
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +12 -0
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/file-upload/_file-upload-theme.scss +6 -10
- package/file-upload/file-upload.d.ts +3 -0
- package/file-upload/file-upload.scss +6 -0
- package/file-upload/multiple-file-upload.component.d.ts +28 -5
- package/file-upload/multiple-file-upload.component.scss +0 -4
- package/file-upload/single-file-upload.component.d.ts +13 -4
- package/file-upload/single-file-upload.component.scss +0 -12
- package/form-field/form-field-control.d.ts +3 -2
- package/form-field/hint.scss +0 -3
- package/input/input-number.d.ts +24 -14
- package/markdown/markdown.values.d.ts +3 -0
- package/modal/_modal-theme.scss +1 -1
- package/modal/modal-tokens.scss +2 -2
- package/navbar/_navbar-theme.scss +1 -1
- package/navbar/navbar-tokens.scss +2 -8
- package/package.json +5 -4
- package/popover/_popover-theme.scss +2 -2
- package/popover/popover-tokens.scss +2 -2
- package/popover/popover.scss +2 -2
- package/schematics/ng-add/index.js +2 -2
- package/select/select.component.d.ts +1 -1
- package/select/select.module.d.ts +1 -2
- package/sidepanel/_sidepanel-theme.scss +1 -1
- package/sidepanel/sidepanel-tokens.scss +2 -2
- package/timezone/timezone-select.component.d.ts +5 -6
- package/tooltip/tooltip.component.d.ts +9 -0
- package/core/error/error-options.d.ts +0 -14
- package/core/label/label-options.d.ts +0 -13
- package/esm2022/core/error/error-options.mjs +0 -26
- package/esm2022/core/label/label-options.mjs +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-code-block.mjs","sources":["../../../packages/components/code-block/actionbar.component.ts","../../../packages/components/code-block/actionbar.component.html","../../../packages/components/code-block/code-block.component.ts","../../../packages/components/code-block/code-block.component.html","../../../packages/components/code-block/code-block.module.ts","../../../packages/components/code-block/koobiq-components-code-block.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { filter } from 'rxjs/operators';\nimport { KbqCodeBlockConfiguration, KbqCodeFile } from './code-block.types';\n\n@Component({\n selector: 'kbq-actionbar-block',\n templateUrl: './actionbar.component.html',\n styleUrls: ['./actionbar.component.scss'],\n host: {\n class: 'kbq-code-block-actionbar'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqActionBarComponent implements AfterViewInit {\n @ViewChild('copyTooltip') copyTooltip: KbqTooltipTrigger;\n\n @Input() config: KbqCodeBlockConfiguration;\n @Input() codeFiles: KbqCodeFile[];\n @Input() selectedTabIndex = 0;\n @Input() multiLine: boolean;\n @Input() softWrap: boolean;\n @Input() canLoad: boolean;\n\n @Output() toggleSoftWrap = new EventEmitter<void>();\n @Output() downloadCode = new EventEmitter<void>();\n @Output() copyCode = new EventEmitter<void>();\n @Output() openExternalSystem = new EventEmitter<void>();\n\n copyTooltipText: string;\n\n ngAfterViewInit(): void {\n this.copyTooltipText = this.config.copyTooltip;\n\n this.copyTooltip.visibleChange.pipe(filter((state) => !state)).subscribe(() => {\n if (this.copyTooltipText === this.config.copiedTooltip) {\n this.copyTooltipText = this.config.copyTooltip;\n }\n });\n }\n\n onCopy() {\n this.copyCode.emit();\n\n setTimeout(() => {\n this.copyTooltipText = this.config.copiedTooltip;\n this.copyTooltip.show();\n });\n }\n}\n","<div class=\"kbq-code-block__fade-gradient\"></div>\n\n<div class=\"kbq-actionbar-block__button-stack layout-row\">\n @if (multiLine) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"softWrap ? config.softWrapOffTooltip : config.softWrapOnTooltip\"\n (click)=\"toggleSoftWrap.emit()\"\n >\n @if (!softWrap) {\n <i kbq-icon=\"kbq-wrap-text_16\"></i>\n }\n @if (softWrap) {\n <i kbq-icon=\"kbq-wrap-text-slash_16\"></i>\n }\n </button>\n }\n\n @if (canLoad) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"config.downloadTooltip\"\n (click)=\"downloadCode.emit()\"\n >\n <i kbq-icon=\"kbq-arrow-down-to-line_16\"></i>\n </button>\n }\n\n <button\n #copyTooltip=\"kbqTooltip\"\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"copyTooltipText\"\n (click)=\"onCopy()\"\n >\n <i kbq-icon=\"kbq-file-multiple-o_16\"></i>\n </button>\n\n @if (codeFiles[selectedTabIndex].link) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"config.openExternalSystemTooltip\"\n (click)=\"openExternalSystem.emit()\"\n >\n <i kbq-icon=\"kbq-arrow-up-right-from-square_16\"></i>\n </button>\n }\n</div>\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqTabChangeEvent, KbqTabGroup } from '@koobiq/components/tabs';\nimport { Subject, Subscription, fromEvent, merge, pairwise } from 'rxjs';\nimport { debounceTime, filter, map, startWith, switchMap } from 'rxjs/operators';\nimport { KbqCodeBlockConfiguration, KbqCodeFile } from './code-block.types';\n\nexport const COPIED_MESSAGE_TOOLTIP_TIMEOUT = 100;\nexport const DEFAULT_EXTENSION = 'txt';\nexport const LANGUAGES_EXTENSIONS = {\n html: 'html',\n css: 'css',\n php: 'php',\n java: 'java',\n bash: 'sh',\n javascript: 'js',\n typescript: 'ts',\n python: 'py',\n ruby: 'rb',\n c: 'c',\n 'c++': 'cpp',\n 'c#': 'cs',\n csharp: 'cs',\n lua: 'lua',\n xml: 'xml',\n json: 'json'\n};\n\nexport const KBQ_CODE_BLOCK_CONFIGURATION = new InjectionToken<any>('KbqCodeBlockConfiguration');\n\nexport const KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION = {\n softWrapOnTooltip: 'Включить перенос по словам',\n softWrapOffTooltip: 'Выключить перенос по словам',\n downloadTooltip: 'Скачать',\n copiedTooltip: '✓ Скопировано',\n copyTooltip: 'Скопировать',\n viewAllText: 'Показать все',\n viewLessText: 'Свернуть',\n openExternalSystemTooltip: 'Открыть во внешней системе'\n};\n\nconst actionBarBlockLeftMargin = 24;\n\nconst hasScroll = (element: HTMLElement) => {\n const { scrollHeight, scrollWidth, clientHeight, clientWidth } = element;\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\n};\n\n@Component({\n selector: 'kbq-code-block',\n exportAs: 'kbqCodeBlock',\n templateUrl: './code-block.component.html',\n styleUrls: ['./code-block.scss', './code-block-tokens.scss'],\n host: {\n class: 'kbq-code-block',\n '[class.kbq-code-block_filled]': 'filled',\n '[class.kbq-code-block_outline]': '!filled',\n '[class.kbq-code-block_hide-line-numbers]': '!lineNumbers',\n '[class.kbq-code-block_single-file]': 'singleFile',\n '[class.kbq-code-block_no-header]': 'noHeader',\n '[class.kbq-code-block_header-with-shadow]': 'isTopOverflow',\n '(window:resize)': 'resizeStream.next($event)'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqCodeBlockComponent implements AfterViewInit, OnDestroy {\n @ViewChild(KbqTabGroup) tabGroup: KbqTabGroup;\n\n @Input() lineNumbers = true;\n @Input() filled: boolean;\n @Input() maxHeight: number;\n @Input() softWrap: boolean = false;\n @Input() canLoad: boolean = true;\n @Input() get codeFiles(): KbqCodeFile[] {\n return this._codeFiles;\n }\n\n set codeFiles(files: KbqCodeFile[]) {\n this._codeFiles = files;\n this.hideActionBarIfNoHeader();\n this.subscribeToHover();\n }\n\n private _codeFiles: KbqCodeFile[];\n\n // TODO: replace with property\n get noHeader(): any {\n return this.codeFiles.length === 1 && !this.codeFiles[0].filename;\n }\n\n get singleFile(): boolean {\n return this.codeFiles.length === 1;\n }\n\n selectedTabIndex = 0;\n copied: boolean = false;\n viewAll: boolean = false;\n multiLine: boolean = false;\n isTopOverflow: boolean = false;\n hasKeyboardFocus: boolean = false;\n /**\n * @docs-private\n */\n actionbarHidden?: boolean;\n\n readonly resizeStream = new Subject<Event>();\n readonly currentCodeBlock = new Subject<HTMLElement>();\n\n private readonly resizeDebounceInterval: number = 100;\n private resizeSubscription = Subscription.EMPTY;\n private codeBlockSubscription = Subscription.EMPTY;\n private hoverSubscription: Subscription | null = null;\n\n constructor(\n private elementRef: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n private clipboard: Clipboard,\n private renderer: Renderer2,\n private focusMonitor: FocusMonitor,\n @Optional() @Inject(KBQ_CODE_BLOCK_CONFIGURATION) public config: KbqCodeBlockConfiguration\n ) {\n this.config = config || KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION;\n\n this.resizeSubscription = this.resizeStream\n .pipe(debounceTime(this.resizeDebounceInterval))\n .subscribe(this.updateHeader);\n }\n\n ngAfterViewInit() {\n // render focus border if origin is keyboard\n this.codeBlockSubscription = this.currentCodeBlock\n .pipe(\n startWith(null),\n pairwise(),\n switchMap(([prev, current]) => {\n if (prev) {\n this.focusMonitor.stopMonitoring(prev);\n }\n\n return this.focusMonitor.monitor(current!);\n }),\n filter((origin: FocusOrigin) => origin === 'keyboard')\n )\n .subscribe(() => {\n this.hasKeyboardFocus = true;\n this.changeDetectorRef.markForCheck();\n });\n\n this.hideActionBarIfNoHeader();\n this.subscribeToHover();\n this.currentCodeBlock.next(this.elementRef.nativeElement.querySelector('code'));\n }\n\n ngOnDestroy(): void {\n this.resizeSubscription.unsubscribe();\n this.codeBlockSubscription.unsubscribe();\n }\n\n updateHeader = () => {\n const clientWidth: number = this.elementRef.nativeElement.querySelector('kbq-actionbar-block').clientWidth;\n\n this.renderer.setStyle(\n this.tabGroup.tabHeader.elementRef.nativeElement,\n 'padding-right',\n `${actionBarBlockLeftMargin + clientWidth}px`\n );\n\n this.changeDetectorRef.markForCheck();\n };\n\n toggleSoftWrap() {\n this.softWrap = !this.softWrap;\n }\n\n toggleViewAll() {\n this.viewAll = !this.viewAll;\n }\n\n downloadCode() {\n const codeFile = this.codeFiles[this.selectedTabIndex];\n const blob = new Blob([codeFile.content], { type: 'text/plain' });\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n\n link.setAttribute('href', url);\n link.setAttribute('download', `${this.getFullFileName(codeFile)}`);\n link.click();\n }\n\n copyCode() {\n this.clipboard.copy(this.codeFiles[this.selectedTabIndex].content);\n this.copied = true;\n }\n\n openExternalSystem() {\n const externalLink = this.codeFiles[this.selectedTabIndex].link;\n window.open(externalLink, '_blank');\n }\n\n onHighlighted() {\n setTimeout(this.updateMultiline, 1);\n }\n\n getMaxHeight(): string {\n return this.maxHeight > 0 && !this.viewAll ? `${this.maxHeight}px` : '';\n }\n\n onSelectTab($event: KbqTabChangeEvent) {\n this.selectedTabIndex = $event.index;\n this.updateMultiline();\n this.isTopOverflow = false;\n\n setTimeout(this.updateHeader);\n setTimeout(() => this.currentCodeBlock.next(this.elementRef.nativeElement.querySelector('code')));\n }\n\n checkOverflow(currentCodeContentElement: HTMLElement) {\n if (this.noHeader) {\n return;\n }\n this.isTopOverflow = currentCodeContentElement.scrollTop > 0;\n }\n\n onShowMoreClick(currentCodeContentElement: HTMLPreElement) {\n this.toggleViewAll();\n\n if (this.viewAll) {\n this.showActionBarIfNecessary();\n } else {\n // Should explicitly scroll to top so content will be cropped from the bottom\n currentCodeContentElement?.scroll({ top: 0, behavior: 'instant' });\n }\n }\n\n // TODO: replace with property to reduce calculations\n canShowFocus(currentCodeContent: HTMLPreElement): boolean {\n const currentCodeBlock = currentCodeContent.querySelector('code')!;\n\n return (\n (hasScroll(currentCodeContent) || hasScroll(currentCodeBlock)) &&\n ((!!this.maxHeight && this.viewAll) || !this.maxHeight)\n );\n }\n\n onEnter(currentCodeBlock: HTMLPreElement) {\n // defer execution after toggle view mode\n setTimeout(() => {\n if (this.canShowFocus(currentCodeBlock)) {\n this.focusMonitor.focusVia(currentCodeBlock.querySelector('code')!, 'keyboard');\n }\n }, 0);\n }\n\n /** @docs-private */\n showActionBarIfNecessary(): void {\n if (!this.actionbarHidden) return;\n this.actionbarHidden = false;\n }\n\n /** @docs-private */\n hideActionBarIfNoHeader(event?: FocusEvent | null): void {\n if (!this.noHeader) return;\n if (event) {\n this.actionbarHidden = !this.elementRef.nativeElement.contains(event.relatedTarget);\n return;\n }\n\n this.actionbarHidden = this.noHeader;\n }\n\n private updateMultiline = () => {\n this.multiLine = this.elementRef.nativeElement.querySelectorAll('.hljs-ln-numbers').length > 1;\n\n this.updateHeader();\n\n this.changeDetectorRef.markForCheck();\n };\n\n private getFullFileName(codeFile: KbqCodeFile): string {\n const fileName = codeFile.filename || 'code';\n const extension = LANGUAGES_EXTENSIONS[codeFile.language] || DEFAULT_EXTENSION;\n\n return `${fileName}.${extension}`;\n }\n\n private subscribeToHover() {\n if (!this.noHeader) {\n this.hoverSubscription?.unsubscribe();\n this.hoverSubscription = null;\n return;\n }\n if (this.hoverSubscription) return;\n\n this.hoverSubscription = merge(\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'focusin'),\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'mouseenter')\n ).subscribe(() => {\n this.showActionBarIfNecessary();\n this.changeDetectorRef.markForCheck();\n });\n\n const blur = merge(\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'focusout'),\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'mouseleave').pipe(map(() => null))\n ).subscribe((event: FocusEvent | null) => {\n if (!this.hasKeyboardFocus) {\n this.hideActionBarIfNoHeader(event);\n }\n this.changeDetectorRef.markForCheck();\n });\n this.hoverSubscription.add(blur);\n }\n}\n","<kbq-tab-group\n [class.kbq-focused]=\"hasKeyboardFocus\"\n (selectedTabChange)=\"onSelectTab($event)\"\n>\n @for (codeFile of codeFiles; track codeFile; let i = $index) {\n <kbq-tab [disabled]=\"singleFile\">\n <ng-template kbq-tab-label>{{ codeFile.filename }}</ng-template>\n <pre\n #codeContent\n class=\"kbq-code-block__code kbq-scrollbar\"\n [class.kbq-code-block__code_soft-wrap]=\"softWrap\"\n [class.kbq-code-block__code_view-all]=\"viewAll\"\n [style.max-height]=\"getMaxHeight()\"\n (scroll)=\"checkOverflow(codeContent)\"\n ><kbq-actionbar-block\n [class.kbq-actionbar-block_floating]=\"noHeader\"\n [config]=\"config\"\n [codeFiles]=\"codeFiles\"\n [selectedTabIndex]=\"selectedTabIndex\"\n [multiLine]=\"multiLine\"\n [softWrap]=\"softWrap\"\n [canLoad]=\"canLoad\"\n [style.opacity]=\"actionbarHidden ? 0 : null\"\n (toggleSoftWrap)=\"toggleSoftWrap()\"\n (downloadCode)=\"downloadCode()\"\n (copyCode)=\"copyCode()\"\n (openExternalSystem)=\"openExternalSystem()\" /><code class=\"hljs\"\n [id]=\"codeFile.filename + '_' + i\"\n [class.hljs-line-numbers]=\"lineNumbers\"\n [highlight]=\"codeFiles[i].content\"\n [lineNumbers]=\"true\"\n [tabIndex]=\"canShowFocus(codeContent) ? 0 : -1\"\n (highlighted)=\"onHighlighted()\"\n (blur)=\"hasKeyboardFocus = false\">\n </code></pre>\n @if (maxHeight) {\n <div\n class=\"kbq-code-block__show-more\"\n [class.kbq-code-block__show-more_collapsed]=\"!viewAll\"\n [class.kbq-code-block__show-more_expanded]=\"viewAll\"\n >\n <span class=\"bg-wrapper\">\n <button\n kbq-button\n [color]=\"'theme'\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"onShowMoreClick(codeContent)\"\n (keydown.enter)=\"onEnter(codeContent)\"\n >\n @if (!viewAll) {\n <i kbq-icon=\"kbq-chevron-down_16\"></i>\n }\n @if (viewAll) {\n <i kbq-icon=\"kbq-chevron-up_16\"></i>\n }\n {{ viewAll ? config.viewLessText : config.viewAllText }}\n </button>\n </span>\n </div>\n }\n </kbq-tab>\n }\n</kbq-tab-group>\n","import { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTabsModule } from '@koobiq/components/tabs';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { HIGHLIGHT_OPTIONS, HighlightModule } from 'ngx-highlightjs';\nimport { KbqActionBarComponent } from './actionbar.component';\nimport { KbqCodeBlockComponent } from './code-block.component';\n\n@NgModule({\n imports: [\n KbqButtonModule,\n KbqToolTipModule,\n KbqIconModule,\n HighlightModule,\n KbqTabsModule\n ],\n declarations: [\n KbqCodeBlockComponent,\n KbqActionBarComponent\n ],\n providers: [\n {\n provide: HIGHLIGHT_OPTIONS,\n useValue: {\n fullLibraryLoader: () => import('highlight.js'),\n lineNumbersLoader: () => import('ngx-highlightjs/line-numbers'),\n lineNumbers: true\n }\n }\n ],\n exports: [KbqCodeBlockComponent]\n})\nexport class KbqCodeBlockModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i4","i7.KbqActionBarComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-code-block.mjs","sources":["../../../packages/components/code-block/code-block.types.ts","../../../packages/components/code-block/actionbar.component.ts","../../../packages/components/code-block/actionbar.component.html","../../../packages/components/code-block/code-block.component.ts","../../../packages/components/code-block/code-block.component.html","../../../packages/components/code-block/code-block.module.ts","../../../packages/components/code-block/koobiq-components-code-block.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { ruRULocaleData } from '@koobiq/components/core';\n\nexport const KBQ_CODE_BLOCK_CONFIGURATION = new InjectionToken<any>('KbqCodeBlockConfiguration');\n\nexport const KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION = ruRULocaleData.codeBlock;\n\nexport interface KbqCodeBlockConfiguration {\n softWrapOnTooltip: string;\n softWrapOffTooltip: string;\n\n downloadTooltip: string;\n\n copiedTooltip: string;\n copyTooltip: string;\n\n viewAllText: string;\n viewLessText: string;\n\n openExternalSystemTooltip: string;\n}\n\nexport interface KbqCodeFile {\n filename: string;\n content: string;\n language: string;\n\n link?: string;\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KBQ_LOCALE_SERVICE, KbqLocaleService } from '@koobiq/components/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { filter } from 'rxjs/operators';\nimport {\n KBQ_CODE_BLOCK_CONFIGURATION,\n KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION,\n KbqCodeBlockConfiguration,\n KbqCodeFile\n} from './code-block.types';\n\n@Component({\n selector: 'kbq-actionbar-block',\n templateUrl: './actionbar.component.html',\n styleUrls: ['./actionbar.component.scss'],\n host: {\n class: 'kbq-code-block-actionbar'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqActionBarComponent implements AfterViewInit {\n @ViewChild('copyTooltip') copyTooltip: KbqTooltipTrigger;\n\n @Input() codeFiles: KbqCodeFile[];\n @Input() selectedTabIndex = 0;\n @Input() multiLine: boolean;\n @Input() softWrap: boolean;\n @Input() canLoad: boolean;\n\n @Output() toggleSoftWrap = new EventEmitter<void>();\n @Output() downloadCode = new EventEmitter<void>();\n @Output() copyCode = new EventEmitter<void>();\n @Output() openExternalSystem = new EventEmitter<void>();\n\n copyTooltipText: string;\n /**\n * @docs-private\n */\n config: KbqCodeBlockConfiguration;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(KBQ_CODE_BLOCK_CONFIGURATION) protected configuration?: KbqCodeBlockConfiguration,\n @Optional() @Inject(KBQ_LOCALE_SERVICE) protected localeService?: KbqLocaleService\n ) {\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n }\n\n ngAfterViewInit(): void {\n this.copyTooltipText = this.config.copyTooltip;\n\n this.copyTooltip.visibleChange.pipe(filter((state) => !state)).subscribe(() => {\n if (this.copyTooltipText === this.config.copiedTooltip) {\n this.copyTooltipText = this.config.copyTooltip;\n }\n });\n }\n\n onCopy() {\n this.copyCode.emit();\n\n setTimeout(() => {\n this.copyTooltipText = this.config.copiedTooltip;\n this.copyTooltip.show();\n });\n }\n\n private updateLocaleParams = () => {\n this.config = this.configuration || this.localeService?.getParams('codeBlock');\n\n this.copyTooltipText = this.config.copyTooltip;\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.config = KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION;\n }\n}\n","<div class=\"kbq-code-block__fade-gradient\"></div>\n\n<div class=\"kbq-actionbar-block__button-stack layout-row\">\n @if (multiLine) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"softWrap ? config.softWrapOffTooltip : config.softWrapOnTooltip\"\n (click)=\"toggleSoftWrap.emit()\"\n >\n @if (!softWrap) {\n <i kbq-icon=\"kbq-wrap-text_16\"></i>\n }\n @if (softWrap) {\n <i kbq-icon=\"kbq-wrap-text-slash_16\"></i>\n }\n </button>\n }\n\n @if (canLoad) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"config.downloadTooltip\"\n (click)=\"downloadCode.emit()\"\n >\n <i kbq-icon=\"kbq-arrow-down-to-line_16\"></i>\n </button>\n }\n\n <button\n #copyTooltip=\"kbqTooltip\"\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"copyTooltipText\"\n (click)=\"onCopy()\"\n >\n <i kbq-icon=\"kbq-file-multiple-o_16\"></i>\n </button>\n\n @if (codeFiles[selectedTabIndex].link) {\n <button\n kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"config.openExternalSystemTooltip\"\n (click)=\"openExternalSystem.emit()\"\n >\n <i kbq-icon=\"kbq-arrow-up-right-from-square_16\"></i>\n </button>\n }\n</div>\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KBQ_LOCALE_SERVICE, KbqLocaleService } from '@koobiq/components/core';\nimport { KbqTabChangeEvent, KbqTabGroup } from '@koobiq/components/tabs';\nimport { Subject, Subscription, fromEvent, merge, pairwise } from 'rxjs';\nimport { debounceTime, filter, map, startWith, switchMap } from 'rxjs/operators';\nimport {\n KBQ_CODE_BLOCK_CONFIGURATION,\n KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION,\n KbqCodeBlockConfiguration,\n KbqCodeFile\n} from './code-block.types';\n\nexport const COPIED_MESSAGE_TOOLTIP_TIMEOUT = 100;\nexport const DEFAULT_EXTENSION = 'txt';\nexport const LANGUAGES_EXTENSIONS = {\n html: 'html',\n css: 'css',\n php: 'php',\n java: 'java',\n bash: 'sh',\n javascript: 'js',\n typescript: 'ts',\n python: 'py',\n ruby: 'rb',\n c: 'c',\n 'c++': 'cpp',\n 'c#': 'cs',\n csharp: 'cs',\n lua: 'lua',\n xml: 'xml',\n json: 'json'\n};\n\nconst actionBarBlockLeftMargin = 24;\n\nconst hasScroll = (element: HTMLElement) => {\n const { scrollHeight, scrollWidth, clientHeight, clientWidth } = element;\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\n};\n\n@Component({\n selector: 'kbq-code-block',\n exportAs: 'kbqCodeBlock',\n templateUrl: './code-block.component.html',\n styleUrls: ['./code-block.scss', './code-block-tokens.scss'],\n host: {\n class: 'kbq-code-block',\n '[class.kbq-code-block_filled]': 'filled',\n '[class.kbq-code-block_outline]': '!filled',\n '[class.kbq-code-block_hide-line-numbers]': '!lineNumbers',\n '[class.kbq-code-block_single-file]': 'singleFile',\n '[class.kbq-code-block_no-header]': 'noHeader',\n '[class.kbq-code-block_header-with-shadow]': 'isTopOverflow',\n '(window:resize)': 'resizeStream.next($event)'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqCodeBlockComponent implements AfterViewInit, OnDestroy {\n @ViewChild(KbqTabGroup) tabGroup: KbqTabGroup;\n\n @Input() lineNumbers = true;\n @Input() filled: boolean;\n @Input() maxHeight: number;\n @Input() softWrap: boolean = false;\n @Input() canLoad: boolean = true;\n @Input() get codeFiles(): KbqCodeFile[] {\n return this._codeFiles;\n }\n\n set codeFiles(files: KbqCodeFile[]) {\n this._codeFiles = files;\n this.hideActionBarIfNoHeader();\n this.subscribeToHover();\n }\n\n private _codeFiles: KbqCodeFile[];\n\n // TODO: replace with property\n get noHeader(): any {\n return this.codeFiles.length === 1 && !this.codeFiles[0].filename;\n }\n\n get singleFile(): boolean {\n return this.codeFiles.length === 1;\n }\n\n selectedTabIndex = 0;\n copied: boolean = false;\n viewAll: boolean = false;\n multiLine: boolean = false;\n isTopOverflow: boolean = false;\n hasKeyboardFocus: boolean = false;\n /**\n * @docs-private\n */\n actionbarHidden?: boolean;\n\n /**\n * @docs-private\n */\n config: KbqCodeBlockConfiguration;\n\n readonly resizeStream = new Subject<Event>();\n readonly currentCodeBlock = new Subject<HTMLElement>();\n\n private readonly resizeDebounceInterval: number = 100;\n private resizeSubscription = Subscription.EMPTY;\n private codeBlockSubscription = Subscription.EMPTY;\n private hoverSubscription: Subscription | null = null;\n\n constructor(\n private elementRef: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n private clipboard: Clipboard,\n private renderer: Renderer2,\n private focusMonitor: FocusMonitor,\n @Optional() @Inject(KBQ_CODE_BLOCK_CONFIGURATION) protected configuration?: KbqCodeBlockConfiguration,\n @Optional() @Inject(KBQ_LOCALE_SERVICE) protected localeService?: KbqLocaleService\n ) {\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n this.resizeSubscription = this.resizeStream\n .pipe(debounceTime(this.resizeDebounceInterval))\n .subscribe(this.updateHeader);\n }\n\n ngAfterViewInit() {\n // render focus border if origin is keyboard\n this.codeBlockSubscription = this.currentCodeBlock\n .pipe(\n startWith(null),\n pairwise(),\n switchMap(([prev, current]) => {\n if (prev) {\n this.focusMonitor.stopMonitoring(prev);\n }\n\n return this.focusMonitor.monitor(current!);\n }),\n filter((origin: FocusOrigin) => origin === 'keyboard')\n )\n .subscribe(() => {\n this.hasKeyboardFocus = true;\n this.changeDetectorRef.markForCheck();\n });\n\n this.hideActionBarIfNoHeader();\n this.subscribeToHover();\n this.currentCodeBlock.next(this.elementRef.nativeElement.querySelector('code'));\n }\n\n ngOnDestroy(): void {\n this.resizeSubscription.unsubscribe();\n this.codeBlockSubscription.unsubscribe();\n }\n\n updateHeader = () => {\n const clientWidth: number = this.elementRef.nativeElement.querySelector('kbq-actionbar-block').clientWidth;\n\n this.renderer.setStyle(\n this.tabGroup.tabHeader.elementRef.nativeElement,\n 'padding-right',\n `${actionBarBlockLeftMargin + clientWidth}px`\n );\n\n this.changeDetectorRef.markForCheck();\n };\n\n toggleSoftWrap() {\n this.softWrap = !this.softWrap;\n }\n\n toggleViewAll() {\n this.viewAll = !this.viewAll;\n }\n\n downloadCode() {\n const codeFile = this.codeFiles[this.selectedTabIndex];\n const blob = new Blob([codeFile.content], { type: 'text/plain' });\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n\n link.setAttribute('href', url);\n link.setAttribute('download', `${this.getFullFileName(codeFile)}`);\n link.click();\n }\n\n copyCode() {\n this.clipboard.copy(this.codeFiles[this.selectedTabIndex].content);\n this.copied = true;\n }\n\n openExternalSystem() {\n const externalLink = this.codeFiles[this.selectedTabIndex].link;\n window.open(externalLink, '_blank');\n }\n\n onHighlighted() {\n setTimeout(this.updateMultiline, 1);\n }\n\n getMaxHeight(): string {\n return this.maxHeight > 0 && !this.viewAll ? `${this.maxHeight}px` : '';\n }\n\n onSelectTab($event: KbqTabChangeEvent) {\n this.selectedTabIndex = $event.index;\n this.updateMultiline();\n this.isTopOverflow = false;\n\n setTimeout(this.updateHeader);\n setTimeout(() => this.currentCodeBlock.next(this.elementRef.nativeElement.querySelector('code')));\n }\n\n checkOverflow(currentCodeContentElement: HTMLElement) {\n if (this.noHeader) {\n return;\n }\n this.isTopOverflow = currentCodeContentElement.scrollTop > 0;\n }\n\n onShowMoreClick(currentCodeContentElement: HTMLPreElement) {\n this.toggleViewAll();\n\n if (this.viewAll) {\n this.showActionBarIfNecessary();\n } else {\n // Should explicitly scroll to top so content will be cropped from the bottom\n currentCodeContentElement?.scroll({ top: 0, behavior: 'instant' });\n }\n }\n\n // TODO: replace with property to reduce calculations\n canShowFocus(currentCodeContent: HTMLPreElement): boolean {\n const currentCodeBlock = currentCodeContent.querySelector('code')!;\n\n return (\n (hasScroll(currentCodeContent) || hasScroll(currentCodeBlock)) &&\n ((!!this.maxHeight && this.viewAll) || !this.maxHeight)\n );\n }\n\n onEnter(currentCodeBlock: HTMLPreElement) {\n // defer execution after toggle view mode\n setTimeout(() => {\n if (this.canShowFocus(currentCodeBlock)) {\n this.focusMonitor.focusVia(currentCodeBlock.querySelector('code')!, 'keyboard');\n }\n }, 0);\n }\n\n /** @docs-private */\n showActionBarIfNecessary(): void {\n if (!this.actionbarHidden) return;\n this.actionbarHidden = false;\n }\n\n /** @docs-private */\n hideActionBarIfNoHeader(event?: FocusEvent | null): void {\n if (!this.noHeader) return;\n if (event) {\n this.actionbarHidden = !this.elementRef.nativeElement.contains(event.relatedTarget);\n return;\n }\n\n this.actionbarHidden = this.noHeader;\n }\n\n private updateLocaleParams = () => {\n this.config = this.configuration || this.localeService?.getParams('codeBlock');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.config = KBQ_CODE_BLOCK_DEFAULT_CONFIGURATION;\n }\n\n private updateMultiline = () => {\n this.multiLine = this.elementRef.nativeElement.querySelectorAll('.hljs-ln-numbers').length > 1;\n\n this.updateHeader();\n\n this.changeDetectorRef.markForCheck();\n };\n\n private getFullFileName(codeFile: KbqCodeFile): string {\n const fileName = codeFile.filename || 'code';\n const extension = LANGUAGES_EXTENSIONS[codeFile.language] || DEFAULT_EXTENSION;\n\n return `${fileName}.${extension}`;\n }\n\n private subscribeToHover() {\n if (!this.noHeader) {\n this.hoverSubscription?.unsubscribe();\n this.hoverSubscription = null;\n return;\n }\n if (this.hoverSubscription) return;\n\n this.hoverSubscription = merge(\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'focusin'),\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'mouseenter')\n ).subscribe(() => {\n this.showActionBarIfNecessary();\n this.changeDetectorRef.markForCheck();\n });\n\n const blur = merge(\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'focusout'),\n fromEvent<FocusEvent>(this.elementRef.nativeElement, 'mouseleave').pipe(map(() => null))\n ).subscribe((event: FocusEvent | null) => {\n if (!this.hasKeyboardFocus) {\n this.hideActionBarIfNoHeader(event);\n }\n this.changeDetectorRef.markForCheck();\n });\n this.hoverSubscription.add(blur);\n }\n}\n","<kbq-tab-group\n [class.kbq-focused]=\"hasKeyboardFocus\"\n (selectedTabChange)=\"onSelectTab($event)\"\n>\n @for (codeFile of codeFiles; track codeFile; let i = $index) {\n <kbq-tab [disabled]=\"singleFile\">\n <ng-template kbq-tab-label>{{ codeFile.filename }}</ng-template>\n <pre\n #codeContent\n class=\"kbq-code-block__code kbq-scrollbar\"\n [class.kbq-code-block__code_soft-wrap]=\"softWrap\"\n [class.kbq-code-block__code_view-all]=\"viewAll\"\n [style.max-height]=\"getMaxHeight()\"\n (scroll)=\"checkOverflow(codeContent)\"\n ><kbq-actionbar-block\n [class.kbq-actionbar-block_floating]=\"noHeader\"\n [codeFiles]=\"codeFiles\"\n [selectedTabIndex]=\"selectedTabIndex\"\n [multiLine]=\"multiLine\"\n [softWrap]=\"softWrap\"\n [canLoad]=\"canLoad\"\n [style.opacity]=\"actionbarHidden ? 0 : null\"\n (toggleSoftWrap)=\"toggleSoftWrap()\"\n (downloadCode)=\"downloadCode()\"\n (copyCode)=\"copyCode()\"\n (openExternalSystem)=\"openExternalSystem()\" /><code class=\"hljs\"\n [id]=\"codeFile.filename + '_' + i\"\n [class.hljs-line-numbers]=\"lineNumbers\"\n [highlight]=\"codeFiles[i].content\"\n [lineNumbers]=\"true\"\n [tabIndex]=\"canShowFocus(codeContent) ? 0 : -1\"\n (highlighted)=\"onHighlighted()\"\n (blur)=\"hasKeyboardFocus = false\">\n </code></pre>\n @if (maxHeight) {\n <div\n class=\"kbq-code-block__show-more\"\n [class.kbq-code-block__show-more_collapsed]=\"!viewAll\"\n [class.kbq-code-block__show-more_expanded]=\"viewAll\"\n >\n <span class=\"bg-wrapper\">\n <button\n kbq-button\n [color]=\"'theme'\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"onShowMoreClick(codeContent)\"\n (keydown.enter)=\"onEnter(codeContent)\"\n >\n @if (!viewAll) {\n <i kbq-icon=\"kbq-chevron-down_16\"></i>\n }\n @if (viewAll) {\n <i kbq-icon=\"kbq-chevron-up_16\"></i>\n }\n {{ viewAll ? config.viewLessText : config.viewAllText }}\n </button>\n </span>\n </div>\n }\n </kbq-tab>\n }\n</kbq-tab-group>\n","import { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTabsModule } from '@koobiq/components/tabs';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { HIGHLIGHT_OPTIONS, HighlightModule } from 'ngx-highlightjs';\nimport { KbqActionBarComponent } from './actionbar.component';\nimport { KbqCodeBlockComponent } from './code-block.component';\n\n@NgModule({\n imports: [\n KbqButtonModule,\n KbqToolTipModule,\n KbqIconModule,\n HighlightModule,\n KbqTabsModule\n ],\n declarations: [\n KbqCodeBlockComponent,\n KbqActionBarComponent\n ],\n providers: [\n {\n provide: HIGHLIGHT_OPTIONS,\n useValue: {\n fullLibraryLoader: () => import('highlight.js'),\n lineNumbersLoader: () => import('ngx-highlightjs/line-numbers'),\n lineNumbers: true\n }\n }\n ],\n exports: [KbqCodeBlockComponent]\n})\nexport class KbqCodeBlockModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4","i7.KbqActionBarComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;MAGa,4BAA4B,GAAG,IAAI,cAAc,CAAM,2BAA2B,EAAE;AAEpF,MAAA,oCAAoC,GAAG,cAAc,CAAC;;MC6BtD,qBAAqB,CAAA;AAoB9B,IAAA,WAAA,CACY,iBAAoC,EACgB,aAAyC,EACnD,aAAgC,EAAA;QAF1E,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACgB,IAAa,CAAA,aAAA,GAAb,aAAa,CAA4B;QACnD,IAAa,CAAA,aAAA,GAAb,aAAa,CAAmB;QAnB7E,IAAgB,CAAA,gBAAA,GAAG,CAAC,CAAC;AAKpB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;AAC1C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;AACxC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAQ,CAAC;AACpC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAQ,CAAC;QAuChD,IAAkB,CAAA,kBAAA,GAAG,MAAK;AAC9B,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;YAE/E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AAE/C,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC1C,SAAC,CAAC;AAhCE,QAAA,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAE1F,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;KACJ;IAED,eAAe,GAAA;QACX,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAE/C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC1E,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;gBACpD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;aAClD;AACL,SAAC,CAAC,CAAC;KACN;IAED,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAErB,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AACjD,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AAC5B,SAAC,CAAC,CAAC;KACN;IAUO,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,oCAAoC,CAAC;KACtD;iIA7DQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAsBN,4BAA4B,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAC5B,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAvBjC,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,sfClClC,koDAuDA,EAAA,MAAA,EAAA,CAAA,i6BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDrBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAGzB,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,0BAA0B;AACpC,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,koDAAA,EAAA,MAAA,EAAA,CAAA,i6BAAA,CAAA,EAAA,CAAA;;0BAwB1C,QAAQ;;0BAAI,MAAM;2BAAC,4BAA4B,CAAA;;0BAC/C,QAAQ;;0BAAI,MAAM;2BAAC,kBAAkB,CAAA;yCAtBhB,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa,CAAA;gBAEf,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEI,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;;;AElBJ,MAAM,8BAA8B,GAAG,IAAI;AAC3C,MAAM,iBAAiB,GAAG,MAAM;AAC1B,MAAA,oBAAoB,GAAG;AAChC,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,IAAI,EAAE,MAAM;EACd;AAEF,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAEpC,MAAM,SAAS,GAAG,CAAC,OAAoB,KAAI;IACvC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;AACzE,IAAA,OAAO,YAAY,GAAG,YAAY,IAAI,WAAW,GAAG,WAAW,CAAC;AACpE,CAAC,CAAC;MAoBW,qBAAqB,CAAA;AAQ9B,IAAA,IAAa,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,IAAI,SAAS,CAAC,KAAoB,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;;AAKD,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;KACrE;AAED,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;KACtC;AA0BD,IAAA,WAAA,CACY,UAAsB,EACtB,iBAAoC,EACpC,SAAoB,EACpB,QAAmB,EACnB,YAA0B,EAC0B,aAAyC,EACnD,aAAgC,EAAA;QAN1E,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC0B,IAAa,CAAA,aAAA,GAAb,aAAa,CAA4B;QACnD,IAAa,CAAA,aAAA,GAAb,aAAa,CAAmB;QAzD7E,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;QAGnB,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAO,CAAA,OAAA,GAAY,IAAI,CAAC;QAsBjC,IAAgB,CAAA,gBAAA,GAAG,CAAC,CAAC;QACrB,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;QACxB,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QACzB,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;QAC/B,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;AAWzB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAS,CAAC;AACpC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAe,CAAC;QAEtC,IAAsB,CAAA,sBAAA,GAAW,GAAG,CAAC;AAC9C,QAAA,IAAA,CAAA,kBAAkB,GAAG,YAAY,CAAC,KAAK,CAAC;AACxC,QAAA,IAAA,CAAA,qBAAqB,GAAG,YAAY,CAAC,KAAK,CAAC;QAC3C,IAAiB,CAAA,iBAAA,GAAwB,IAAI,CAAC;QAoDtD,IAAY,CAAA,YAAA,GAAG,MAAK;AAChB,YAAA,MAAM,WAAW,GAAW,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC;YAE3G,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,EAChD,eAAe,EACf,CAAA,EAAG,wBAAwB,GAAG,WAAW,CAAI,EAAA,CAAA,CAChD,CAAC;AAEF,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC1C,SAAC,CAAC;QAsGM,IAAkB,CAAA,kBAAA,GAAG,MAAK;AAC9B,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;AAE/E,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC1C,SAAC,CAAC;QAMM,IAAe,CAAA,eAAA,GAAG,MAAK;AAC3B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAE/F,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpB,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC1C,SAAC,CAAC;AAzKE,QAAA,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAE1F,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;AAED,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY;AACtC,aAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAC/C,aAAA,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACrC;IAED,eAAe,GAAA;;AAEX,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB;AAC7C,aAAA,IAAI,CACD,SAAS,CAAC,IAAI,CAAC,EACf,QAAQ,EAAE,EACV,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,KAAI;YAC1B,IAAI,IAAI,EAAE;AACN,gBAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aAC1C;YAED,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAQ,CAAC,CAAC;AAC/C,SAAC,CAAC,EACF,MAAM,CAAC,CAAC,MAAmB,KAAK,MAAM,KAAK,UAAU,CAAC,CACzD;aACA,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC1C,SAAC,CAAC,CAAC;QAEP,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;KACnF;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;KAC5C;IAcD,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;KAClC;IAED,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;KAChC;IAED,YAAY,GAAA;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACvD,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAG,EAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA,CAAE,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACtB;IAED,kBAAkB,GAAA;AACd,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;AAChE,QAAA,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;KACvC;IAED,aAAa,GAAA;AACT,QAAA,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;KACvC;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;KAC3E;AAED,IAAA,WAAW,CAAC,MAAyB,EAAA;AACjC,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAE3B,QAAA,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9B,UAAU,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACrG;AAED,IAAA,aAAa,CAAC,yBAAsC,EAAA;AAChD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;QACD,IAAI,CAAC,aAAa,GAAG,yBAAyB,CAAC,SAAS,GAAG,CAAC,CAAC;KAChE;AAED,IAAA,eAAe,CAAC,yBAAyC,EAAA;QACrD,IAAI,CAAC,aAAa,EAAE,CAAC;AAErB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACnC;aAAM;;AAEH,YAAA,yBAAyB,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;SACtE;KACJ;;AAGD,IAAA,YAAY,CAAC,kBAAkC,EAAA;QAC3C,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAE,CAAC;QAEnE,QACI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC,gBAAgB,CAAC;AAC7D,aAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EACzD;KACL;AAED,IAAA,OAAO,CAAC,gBAAgC,EAAA;;QAEpC,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE;AACrC,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAE,EAAE,UAAU,CAAC,CAAC;aACnF;SACJ,EAAE,CAAC,CAAC,CAAC;KACT;;IAGD,wBAAwB,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;AAClC,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAChC;;AAGD,IAAA,uBAAuB,CAAC,KAAyB,EAAA;QAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3B,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACpF,OAAO;SACV;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;KACxC;IAQO,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,oCAAoC,CAAC;KACtD;AAUO,IAAA,eAAe,CAAC,QAAqB,EAAA;AACzC,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC;QAC7C,MAAM,SAAS,GAAG,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC;AAE/E,QAAA,OAAO,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,SAAS,EAAE,CAAC;KACrC;IAEO,gBAAgB,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,OAAO;SACV;QACD,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO;AAEnC,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAC1B,SAAS,CAAa,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,EAC/D,SAAS,CAAa,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,YAAY,CAAC,CACrE,CAAC,SAAS,CAAC,MAAK;YACb,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAChC,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC1C,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,IAAI,GAAG,KAAK,CACd,SAAS,CAAa,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,EAChE,SAAS,CAAa,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAC3F,CAAC,SAAS,CAAC,CAAC,KAAwB,KAAI;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxB,gBAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;aACvC;AACD,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC1C,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC;iIA1QQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EA2DN,4BAA4B,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAC5B,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHA5DjC,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,SAAA,EAAA,wCAAA,EAAA,cAAA,EAAA,kCAAA,EAAA,YAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,yCAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACnB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3E1B,qsFA8DA,EAAA,MAAA,EAAA,CAAA,0pfAAA,EAAA,g0pBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDYa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAlBjC,SAAS;+BACI,gBAAgB,EAAA,QAAA,EAChB,cAAc,EAGlB,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,+BAA+B,EAAE,QAAQ;AACzC,wBAAA,gCAAgC,EAAE,SAAS;AAC3C,wBAAA,0CAA0C,EAAE,cAAc;AAC1D,wBAAA,oCAAoC,EAAE,YAAY;AAClD,wBAAA,kCAAkC,EAAE,UAAU;AAC9C,wBAAA,2CAA2C,EAAE,eAAe;AAC5D,wBAAA,iBAAiB,EAAE,2BAA2B;AACjD,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,qsFAAA,EAAA,MAAA,EAAA,CAAA,0pfAAA,EAAA,g0pBAAA,CAAA,EAAA,CAAA;;0BA6DhC,QAAQ;;0BAAI,MAAM;2BAAC,4BAA4B,CAAA;;0BAC/C,QAAQ;;0BAAI,MAAM;2BAAC,kBAAkB,CAAA;yCA3DlB,QAAQ,EAAA,CAAA;sBAA/B,SAAS;uBAAC,WAAW,CAAA;gBAEb,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACO,SAAS,EAAA,CAAA;sBAArB,KAAK;;;MEjDG,kBAAkB,CAAA;iIAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAfvB,qBAAqB;AACrB,YAAA,qBAAqB,aARrB,eAAe;YACf,gBAAgB;YAChB,aAAa;YACb,eAAe;AACf,YAAA,aAAa,aAgBP,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEtB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAZhB,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE;oBACN,iBAAiB,GAAE,MAAM,OAAO,cAAc,CAAC,CAAA;oBAC/C,iBAAiB,GAAE,MAAM,OAAO,8BAA8B,CAAC,CAAA;AAC/D,oBAAA,WAAW,EAAE,IAAI;AACpB,iBAAA;AACJ,aAAA;AACJ,SAAA,EAAA,OAAA,EAAA,CAnBG,eAAe;YACf,gBAAgB;YAChB,aAAa;YACb,eAAe;YACf,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAkBR,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAxB9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,eAAe;wBACf,gBAAgB;wBAChB,aAAa;wBACb,eAAe;wBACf,aAAa;AAChB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,qBAAqB;wBACrB,qBAAqB;AACxB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE;gCACN,iBAAiB,GAAE,MAAM,OAAO,cAAc,CAAC,CAAA;gCAC/C,iBAAiB,GAAE,MAAM,OAAO,8BAA8B,CAAC,CAAA;AAC/D,gCAAA,WAAW,EAAE,IAAI;AACpB,6BAAA;AACJ,yBAAA;AACJ,qBAAA;oBACD,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACnC,iBAAA,CAAA;;;AChCD;;AAEG;;;;"}
|
|
@@ -96,7 +96,7 @@ var KbqComponentColors;
|
|
|
96
96
|
KbqComponentColors["Warning"] = "warning";
|
|
97
97
|
KbqComponentColors["Success"] = "success";
|
|
98
98
|
KbqComponentColors["Default"] = "contrast";
|
|
99
|
-
KbqComponentColors["Empty"] = "";
|
|
99
|
+
KbqComponentColors["Empty"] = "empty";
|
|
100
100
|
})(KbqComponentColors || (KbqComponentColors = {}));
|
|
101
101
|
function mixinColor(base, defaultColor = KbqComponentColors.Empty) {
|
|
102
102
|
return class extends base {
|
|
@@ -269,21 +269,38 @@ class DateAdapter extends DateAdapter$1 {
|
|
|
269
269
|
|
|
270
270
|
const KBQ_DATE_FORMATS = new InjectionToken('kbq-date-formats');
|
|
271
271
|
|
|
272
|
-
/**
|
|
273
|
-
|
|
272
|
+
/**
|
|
273
|
+
* Error state matcher that matches when a control is invalid and form is submitted.
|
|
274
|
+
* Requires use FormGroupDirective or NgForm.
|
|
275
|
+
*/
|
|
276
|
+
class ShowOnFormSubmitErrorStateMatcher {
|
|
277
|
+
isErrorState(control, form) {
|
|
278
|
+
return !!(control?.invalid && form?.submitted);
|
|
279
|
+
}
|
|
280
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnFormSubmitErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
281
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnFormSubmitErrorStateMatcher }); }
|
|
282
|
+
}
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnFormSubmitErrorStateMatcher, decorators: [{
|
|
284
|
+
type: Injectable
|
|
285
|
+
}] });
|
|
286
|
+
/** Error state matcher that matches when a control is invalid and dirty or form is submitted. */
|
|
287
|
+
class ShowOnControlDirtyErrorStateMatcher {
|
|
274
288
|
isErrorState(control, form) {
|
|
275
|
-
return !!(control
|
|
289
|
+
return !!(control?.invalid && (control.dirty || form?.submitted));
|
|
276
290
|
}
|
|
277
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type:
|
|
278
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type:
|
|
291
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnControlDirtyErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
292
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnControlDirtyErrorStateMatcher }); }
|
|
279
293
|
}
|
|
280
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type:
|
|
294
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ShowOnControlDirtyErrorStateMatcher, decorators: [{
|
|
281
295
|
type: Injectable
|
|
282
296
|
}] });
|
|
283
|
-
/**
|
|
297
|
+
/**
|
|
298
|
+
* Provider that defines how form controls behave with regards to displaying error messages.
|
|
299
|
+
* Error state matcher that matches when a control is invalid and touched or form is submitted.
|
|
300
|
+
*/
|
|
284
301
|
class ErrorStateMatcher {
|
|
285
302
|
isErrorState(control, form) {
|
|
286
|
-
return !!(control
|
|
303
|
+
return !!(control?.invalid && (control.touched || form?.submitted));
|
|
287
304
|
}
|
|
288
305
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
289
306
|
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ErrorStateMatcher, providedIn: 'root' }); }
|
|
@@ -293,6 +310,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
293
310
|
args: [{ providedIn: 'root' }]
|
|
294
311
|
}] });
|
|
295
312
|
|
|
313
|
+
/**
|
|
314
|
+
* @TODO move into form-field.ts, add correct type for `InjectionToken<KbqFormField>` (#DS-2915)
|
|
315
|
+
*/
|
|
296
316
|
/**
|
|
297
317
|
* Injection token that can be used to inject an instances of `KbqFormField`. It serves
|
|
298
318
|
* as alternative token to the actual `KbqFormField` class which would cause unnecessary
|
|
@@ -557,6 +577,19 @@ const enUSLocaleData = {
|
|
|
557
577
|
size: 'Size'
|
|
558
578
|
}
|
|
559
579
|
}
|
|
580
|
+
},
|
|
581
|
+
codeBlock: {
|
|
582
|
+
softWrapOnTooltip: 'Enable word wrap',
|
|
583
|
+
softWrapOffTooltip: 'Disable word wrap',
|
|
584
|
+
downloadTooltip: 'Download',
|
|
585
|
+
copiedTooltip: '✓ Copied',
|
|
586
|
+
copyTooltip: 'Copy',
|
|
587
|
+
viewAllText: 'Show all',
|
|
588
|
+
viewLessText: 'Show less',
|
|
589
|
+
openExternalSystemTooltip: 'Open in the external system'
|
|
590
|
+
},
|
|
591
|
+
timezone: {
|
|
592
|
+
searchPlaceholder: 'City or time zone'
|
|
560
593
|
}
|
|
561
594
|
};
|
|
562
595
|
|
|
@@ -587,6 +620,19 @@ const esLALocaleData = {
|
|
|
587
620
|
size: 'Tamaño'
|
|
588
621
|
}
|
|
589
622
|
}
|
|
623
|
+
},
|
|
624
|
+
codeBlock: {
|
|
625
|
+
softWrapOnTooltip: 'Activar el ajuste de texto',
|
|
626
|
+
softWrapOffTooltip: 'Desactivar el ajuste de texto',
|
|
627
|
+
downloadTooltip: 'Descargar',
|
|
628
|
+
copiedTooltip: '✓ Copiado',
|
|
629
|
+
copyTooltip: 'Copiar',
|
|
630
|
+
viewAllText: 'Mostrar todo',
|
|
631
|
+
viewLessText: 'Mostrar menos',
|
|
632
|
+
openExternalSystemTooltip: 'Abrir en el sistema externo'
|
|
633
|
+
},
|
|
634
|
+
timezone: {
|
|
635
|
+
searchPlaceholder: 'Ciudad o zona horaria'
|
|
590
636
|
}
|
|
591
637
|
};
|
|
592
638
|
|
|
@@ -617,6 +663,19 @@ const faIRLocaleData = {
|
|
|
617
663
|
size: 'اندازه'
|
|
618
664
|
}
|
|
619
665
|
}
|
|
666
|
+
},
|
|
667
|
+
codeBlock: {
|
|
668
|
+
softWrapOnTooltip: 'فعالسازی سطربندی',
|
|
669
|
+
softWrapOffTooltip: 'غیرفعالسازی سطربندی',
|
|
670
|
+
downloadTooltip: 'دانلود',
|
|
671
|
+
copiedTooltip: '✓ کپی شد',
|
|
672
|
+
copyTooltip: 'کپی',
|
|
673
|
+
viewAllText: 'نمایش همه',
|
|
674
|
+
viewLessText: 'نمایش کمتر',
|
|
675
|
+
openExternalSystemTooltip: 'باز کردن در سیستم خارجی'
|
|
676
|
+
},
|
|
677
|
+
timezone: {
|
|
678
|
+
searchPlaceholder: ' شهر یا منطقه زمانی '
|
|
620
679
|
}
|
|
621
680
|
};
|
|
622
681
|
|
|
@@ -647,6 +706,19 @@ const ptBRLocaleData = {
|
|
|
647
706
|
size: 'Tamanho'
|
|
648
707
|
}
|
|
649
708
|
}
|
|
709
|
+
},
|
|
710
|
+
codeBlock: {
|
|
711
|
+
softWrapOnTooltip: 'Ativar quebra de linha',
|
|
712
|
+
softWrapOffTooltip: 'Desativar quebra de linha',
|
|
713
|
+
downloadTooltip: 'Baixar',
|
|
714
|
+
copiedTooltip: '✓ Copiado',
|
|
715
|
+
copyTooltip: 'Copiar',
|
|
716
|
+
viewAllText: 'Mostrar todos',
|
|
717
|
+
viewLessText: 'Mostrar menos',
|
|
718
|
+
openExternalSystemTooltip: 'Abrir em sistema externo'
|
|
719
|
+
},
|
|
720
|
+
timezone: {
|
|
721
|
+
searchPlaceholder: 'Cidade ou fuso horário'
|
|
650
722
|
}
|
|
651
723
|
};
|
|
652
724
|
|
|
@@ -678,6 +750,19 @@ const ruRULocaleData = {
|
|
|
678
750
|
size: 'Размер'
|
|
679
751
|
}
|
|
680
752
|
}
|
|
753
|
+
},
|
|
754
|
+
codeBlock: {
|
|
755
|
+
softWrapOnTooltip: 'Включить перенос по словам',
|
|
756
|
+
softWrapOffTooltip: 'Выключить перенос по словам',
|
|
757
|
+
downloadTooltip: 'Скачать',
|
|
758
|
+
copiedTooltip: '✓ Скопировано',
|
|
759
|
+
copyTooltip: 'Скопировать',
|
|
760
|
+
viewAllText: 'Показать все',
|
|
761
|
+
viewLessText: 'Свернуть',
|
|
762
|
+
openExternalSystemTooltip: 'Открыть во внешней системе'
|
|
763
|
+
},
|
|
764
|
+
timezone: {
|
|
765
|
+
searchPlaceholder: 'Город или часовой пояс'
|
|
681
766
|
}
|
|
682
767
|
};
|
|
683
768
|
|
|
@@ -708,6 +793,19 @@ const zhCNLocaleData = {
|
|
|
708
793
|
size: '大小'
|
|
709
794
|
}
|
|
710
795
|
}
|
|
796
|
+
},
|
|
797
|
+
codeBlock: {
|
|
798
|
+
softWrapOnTooltip: '启用文本换行',
|
|
799
|
+
softWrapOffTooltip: '禁用文本换行',
|
|
800
|
+
downloadTooltip: '下载',
|
|
801
|
+
copiedTooltip: '✓已复制',
|
|
802
|
+
copyTooltip: '复制',
|
|
803
|
+
viewAllText: '显示全部',
|
|
804
|
+
viewLessText: '显示部分',
|
|
805
|
+
openExternalSystemTooltip: '在外部系统中打开'
|
|
806
|
+
},
|
|
807
|
+
timezone: {
|
|
808
|
+
searchPlaceholder: '城市或时区'
|
|
711
809
|
}
|
|
712
810
|
};
|
|
713
811
|
|
|
@@ -996,6 +1094,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
996
1094
|
type: Inject,
|
|
997
1095
|
args: [KBQ_LOCALE_DATA]
|
|
998
1096
|
}] }] });
|
|
1097
|
+
/**
|
|
1098
|
+
* Function that returns a string representation of a number without localized separators
|
|
1099
|
+
*/
|
|
1100
|
+
function normalizeNumber(value, customConfig) {
|
|
1101
|
+
if (value === null || value === undefined)
|
|
1102
|
+
return '';
|
|
1103
|
+
const { groupSeparator, fractionSeparator } = customConfig;
|
|
1104
|
+
const groupSeparatorRegexp = new RegExp(`[${groupSeparator.join('')}]`, 'g');
|
|
1105
|
+
const fractionSeparatorRegexp = new RegExp(`\\${fractionSeparator}`, 'g');
|
|
1106
|
+
return value.toString().replace(groupSeparatorRegexp, '').replace(fractionSeparatorRegexp, '.');
|
|
1107
|
+
}
|
|
1108
|
+
/**
|
|
1109
|
+
* Function that parse string and return a number. The string can be in any locale.
|
|
1110
|
+
*/
|
|
1111
|
+
function checkAndNormalizeLocalizedNumber(num) {
|
|
1112
|
+
if (num === null || num === undefined)
|
|
1113
|
+
return null;
|
|
1114
|
+
/* if some locale input config satisfies pasted number, try to normalise with selected locale config */
|
|
1115
|
+
let numberOutput = null;
|
|
1116
|
+
const locales = KBQ_DEFAULT_LOCALE_DATA_FACTORY();
|
|
1117
|
+
for (const config of locales.items.map(({ id }) => locales[id].input.number)) {
|
|
1118
|
+
const normalized = +normalizeNumber(num, config);
|
|
1119
|
+
if (!Number.isNaN(normalized)) {
|
|
1120
|
+
numberOutput = normalized;
|
|
1121
|
+
break;
|
|
1122
|
+
}
|
|
1123
|
+
}
|
|
1124
|
+
return numberOutput;
|
|
1125
|
+
}
|
|
999
1126
|
|
|
1000
1127
|
class KbqLocaleServiceModule {
|
|
1001
1128
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqLocaleServiceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -1517,6 +1644,169 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
1517
1644
|
}]
|
|
1518
1645
|
}] });
|
|
1519
1646
|
|
|
1647
|
+
/** Provides a set of validators for password form controls. */
|
|
1648
|
+
class PasswordValidators {
|
|
1649
|
+
/**
|
|
1650
|
+
* Validator that requires the control's value length to be at least `min` characters.
|
|
1651
|
+
*
|
|
1652
|
+
* `min` - number of characters.
|
|
1653
|
+
*
|
|
1654
|
+
* ## Usage:
|
|
1655
|
+
*
|
|
1656
|
+
* ```typescript
|
|
1657
|
+
* const control = new FormControl('password', PasswordValidators.minLength(10));
|
|
1658
|
+
* console.log(control.errors); // {minLength: {min: 10, actual: 8}}
|
|
1659
|
+
* ```
|
|
1660
|
+
*/
|
|
1661
|
+
static minLength(min) {
|
|
1662
|
+
return ({ value }) => {
|
|
1663
|
+
if (typeof value !== 'string') {
|
|
1664
|
+
return null;
|
|
1665
|
+
}
|
|
1666
|
+
return value.length >= min ? null : { minLength: { min, actual: value.length } };
|
|
1667
|
+
};
|
|
1668
|
+
}
|
|
1669
|
+
/**
|
|
1670
|
+
* Validator that requires the control's value length to be at most `max` characters.
|
|
1671
|
+
*
|
|
1672
|
+
* `max` - number of characters.
|
|
1673
|
+
*
|
|
1674
|
+
* ## Usage:
|
|
1675
|
+
* ```typescript
|
|
1676
|
+
* const control = new FormControl('password', PasswordValidators.maxLength(6));
|
|
1677
|
+
* console.log(control.errors); // {maxLength: {max: 6, actual: 8}}
|
|
1678
|
+
* ```
|
|
1679
|
+
*/
|
|
1680
|
+
static maxLength(max) {
|
|
1681
|
+
return ({ value }) => {
|
|
1682
|
+
if (typeof value !== 'string') {
|
|
1683
|
+
return null;
|
|
1684
|
+
}
|
|
1685
|
+
return value.length <= max ? null : { maxLength: { max, actual: value.length } };
|
|
1686
|
+
};
|
|
1687
|
+
}
|
|
1688
|
+
/**
|
|
1689
|
+
* Validator that requires the control's value to be at least `min` uppercase characters.
|
|
1690
|
+
*
|
|
1691
|
+
* `min` - number of uppercase characters.
|
|
1692
|
+
*
|
|
1693
|
+
* ### Usage:
|
|
1694
|
+
*
|
|
1695
|
+
* ```typescript
|
|
1696
|
+
* const control = new FormControl('Password', PasswordValidators.minUppercase(2));
|
|
1697
|
+
* console.log(control.errors); // {minUppercase: {min: 2, actual: 1}}
|
|
1698
|
+
* ```
|
|
1699
|
+
*/
|
|
1700
|
+
static minUppercase(min) {
|
|
1701
|
+
return ({ value }) => {
|
|
1702
|
+
if (typeof value !== 'string') {
|
|
1703
|
+
return null;
|
|
1704
|
+
}
|
|
1705
|
+
const matches = (value.match(/[A-Z]/g) || []).length;
|
|
1706
|
+
return matches >= min ? null : { minUppercase: { min, actual: matches } };
|
|
1707
|
+
};
|
|
1708
|
+
}
|
|
1709
|
+
/**
|
|
1710
|
+
* Validator that requires the control's value to be at least `min` lowercase characters.
|
|
1711
|
+
*
|
|
1712
|
+
* `min` - number of lowercase characters.
|
|
1713
|
+
*
|
|
1714
|
+
* ### Usage:
|
|
1715
|
+
*
|
|
1716
|
+
* ```typescript
|
|
1717
|
+
* const control = new FormControl('PASSWORD', PasswordValidators.minLowercase());
|
|
1718
|
+
* console.log(control.errors); // {minLowercase: {min: 1, actual: 0}}
|
|
1719
|
+
* ```
|
|
1720
|
+
*/
|
|
1721
|
+
static minLowercase(min) {
|
|
1722
|
+
return ({ value }) => {
|
|
1723
|
+
if (typeof value !== 'string') {
|
|
1724
|
+
return null;
|
|
1725
|
+
}
|
|
1726
|
+
const matches = (value.match(/[a-z]/g) || []).length;
|
|
1727
|
+
return matches >= min ? null : { minLowercase: { min, actual: matches } };
|
|
1728
|
+
};
|
|
1729
|
+
}
|
|
1730
|
+
/**
|
|
1731
|
+
* Validator that requires the control's value to be at least `min` number characters.
|
|
1732
|
+
*
|
|
1733
|
+
* `min` - number of number characters.
|
|
1734
|
+
*
|
|
1735
|
+
* ### Usage:
|
|
1736
|
+
*
|
|
1737
|
+
* ```typescript
|
|
1738
|
+
* const control = new FormControl('passw0rd', PasswordValidators.minNumber(2));
|
|
1739
|
+
* console.log(control.errors); // {minNumber: {min: 2, actual: 1}}
|
|
1740
|
+
* ```
|
|
1741
|
+
*/
|
|
1742
|
+
static minNumber(min) {
|
|
1743
|
+
return ({ value }) => {
|
|
1744
|
+
if (typeof value !== 'string') {
|
|
1745
|
+
return null;
|
|
1746
|
+
}
|
|
1747
|
+
const matches = (value.match(/[\d]/g) || []).length;
|
|
1748
|
+
return matches >= min ? null : { minNumber: { min, actual: matches } };
|
|
1749
|
+
};
|
|
1750
|
+
}
|
|
1751
|
+
/**
|
|
1752
|
+
* Validator that requires the control's value to be at least `min` special characters.
|
|
1753
|
+
*
|
|
1754
|
+
* `min` - number of special characters.
|
|
1755
|
+
*
|
|
1756
|
+
* ### Special characters:
|
|
1757
|
+
* ```js
|
|
1758
|
+
* ['!','@','#','$','%','^','&','*']
|
|
1759
|
+
* ```
|
|
1760
|
+
*
|
|
1761
|
+
* ### Usage:
|
|
1762
|
+
*
|
|
1763
|
+
* ```typescript
|
|
1764
|
+
* const control = new FormControl('pa$sword', PasswordValidators.minSpecial(2));
|
|
1765
|
+
* console.log(control.errors); // {minSpecial: {min: 2, actual: 1}}
|
|
1766
|
+
* ```
|
|
1767
|
+
*/
|
|
1768
|
+
static minSpecial(min) {
|
|
1769
|
+
return ({ value }) => {
|
|
1770
|
+
if (typeof value !== 'string') {
|
|
1771
|
+
return null;
|
|
1772
|
+
}
|
|
1773
|
+
const matches = (value.match(/[!@#$%^&*]/g) || []).length;
|
|
1774
|
+
return matches >= min ? null : { minSpecial: { min, actual: matches } };
|
|
1775
|
+
};
|
|
1776
|
+
}
|
|
1777
|
+
}
|
|
1778
|
+
/** Provides a set of validators for file-related form controls. */
|
|
1779
|
+
class FileValidators {
|
|
1780
|
+
/**
|
|
1781
|
+
* Validator that checks if the file size is less than or equal to the provided `maxSize`.
|
|
1782
|
+
*
|
|
1783
|
+
* @param maxSize - The maximum allowed file size in bytes.
|
|
1784
|
+
*
|
|
1785
|
+
* @returns A ValidatorFn function that checks the file size.
|
|
1786
|
+
*
|
|
1787
|
+
* ## Usage:
|
|
1788
|
+
*
|
|
1789
|
+
* ```typescript
|
|
1790
|
+
* const control = new FormControl(null, [FileValidators.maxFileSize(1024 * 1024)]); // 1MB
|
|
1791
|
+
* control.setValue(FILE_LESS_OR_EQUAL_THAN_1MB);
|
|
1792
|
+
* console.log(control.errors); // null
|
|
1793
|
+
* control.setValue(FILE_MORE_THAN_1MB);
|
|
1794
|
+
* console.log(control.errors); // {maxFileSize: { max: 1048576, actual: FILE_MORE_THAN_1MB.size }}
|
|
1795
|
+
* ```
|
|
1796
|
+
*/
|
|
1797
|
+
static maxFileSize(maxSize) {
|
|
1798
|
+
return ({ value }) => {
|
|
1799
|
+
if (!value)
|
|
1800
|
+
return null;
|
|
1801
|
+
const size = value instanceof File ? value.size : value.file.size;
|
|
1802
|
+
if (size > maxSize) {
|
|
1803
|
+
return { maxFileSize: { max: maxSize, actual: size } };
|
|
1804
|
+
}
|
|
1805
|
+
return null;
|
|
1806
|
+
};
|
|
1807
|
+
}
|
|
1808
|
+
}
|
|
1809
|
+
|
|
1520
1810
|
function escapeRegExp(value) {
|
|
1521
1811
|
if (value) {
|
|
1522
1812
|
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
@@ -1552,9 +1842,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
1552
1842
|
}]
|
|
1553
1843
|
}] });
|
|
1554
1844
|
|
|
1555
|
-
/** InjectionToken that can be used to specify the global label options. */
|
|
1556
|
-
const KBQ_LABEL_GLOBAL_OPTIONS = new InjectionToken('kbq-label-global-options');
|
|
1557
|
-
|
|
1558
1845
|
/**
|
|
1559
1846
|
* Shared directive to count lines inside a text area, such as a list item.
|
|
1560
1847
|
* Line elements can be extracted with a @ContentChildren(KbqLine) query, then
|
|
@@ -2837,6 +3124,12 @@ class KbqSelectSearch {
|
|
|
2837
3124
|
this.isSearchChanged = false;
|
|
2838
3125
|
formField.canCleanerClearByEsc = false;
|
|
2839
3126
|
}
|
|
3127
|
+
setPlaceholder(value) {
|
|
3128
|
+
this.formField.control.placeholder = value;
|
|
3129
|
+
}
|
|
3130
|
+
hasPlaceholder() {
|
|
3131
|
+
return !!this.formField?.control.placeholder;
|
|
3132
|
+
}
|
|
2840
3133
|
focus() {
|
|
2841
3134
|
this.formField.focusViaKeyboard();
|
|
2842
3135
|
}
|
|
@@ -3012,11 +3305,11 @@ var KbqThemeSelector;
|
|
|
3012
3305
|
* This is the standard theme that is applied
|
|
3013
3306
|
* when the application is first loaded if nothing else provided
|
|
3014
3307
|
*/
|
|
3015
|
-
KbqThemeSelector["Default"] = "kbq-
|
|
3308
|
+
KbqThemeSelector["Default"] = "kbq-light";
|
|
3016
3309
|
/**
|
|
3017
3310
|
* This theme is used to provide a darker visual experience, often preferred in low-light environments.
|
|
3018
3311
|
*/
|
|
3019
|
-
KbqThemeSelector["Dark"] = "kbq-
|
|
3312
|
+
KbqThemeSelector["Dark"] = "kbq-dark";
|
|
3020
3313
|
})(KbqThemeSelector || (KbqThemeSelector = {}));
|
|
3021
3314
|
const KbqDefaultThemes = [
|
|
3022
3315
|
{
|
|
@@ -3180,15 +3473,16 @@ function toBoolean(value) {
|
|
|
3180
3473
|
|
|
3181
3474
|
const validationTooltipShowDelay = 10;
|
|
3182
3475
|
const validationTooltipHideDelay = 3000;
|
|
3476
|
+
/** @deprecated Will be removed in next major release (#DS-2838) */
|
|
3183
3477
|
const KBQ_VALIDATION = new InjectionToken('KbqUseValidation', {
|
|
3184
3478
|
factory: () => ({ useValidation: true })
|
|
3185
3479
|
});
|
|
3186
3480
|
|
|
3187
|
-
const VERSION = new Version('18.
|
|
3481
|
+
const VERSION = new Version('18.4.0+sha-440edc1');
|
|
3188
3482
|
|
|
3189
3483
|
/**
|
|
3190
3484
|
* Generated bundle index. Do not edit.
|
|
3191
3485
|
*/
|
|
3192
3486
|
|
|
3193
|
-
export { AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterPipe, AnimationCurves, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, DateAdapter, DateFormatter, EXTENDED_OVERLAY_POSITIONS, ErrorStateMatcher, KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER, KBQ_DATE_FORMATS, KBQ_DATE_LOCALE, KBQ_DATE_LOCALE_FACTORY, KBQ_DEFAULT_LOCALE_DATA_FACTORY, KBQ_DEFAULT_LOCALE_ID, KBQ_FORM_FIELD_REF,
|
|
3487
|
+
export { AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterPipe, AnimationCurves, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, DateAdapter, DateFormatter, EXTENDED_OVERLAY_POSITIONS, ErrorStateMatcher, FileValidators, KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER, KBQ_DATE_FORMATS, KBQ_DATE_LOCALE, KBQ_DATE_LOCALE_FACTORY, KBQ_DEFAULT_LOCALE_DATA_FACTORY, KBQ_DEFAULT_LOCALE_ID, KBQ_FORM_FIELD_REF, KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS, KBQ_NUMBER_FORMATTER_OPTIONS, KBQ_OPTION_ACTION_PARENT, KBQ_OPTION_PARENT_COMPONENT, KBQ_PARENT_ANIMATION_COMPONENT, KBQ_SANITY_CHECKS, KBQ_SELECT_SCROLL_STRATEGY, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER, KBQ_SIZE_UNITS_CONFIG, KBQ_SIZE_UNITS_DEFAULT_CONFIG, KBQ_TITLE_TEXT_REF, KBQ_VALIDATION, KbqCommonModule, KbqComponentColors, KbqDataSizePipe, KbqDecimalPipe, KbqDefaultThemes, KbqForm, KbqFormElement, KbqFormattersModule, KbqFormsModule, KbqHighlightModule, KbqHighlightPipe, KbqLine, KbqLineModule, KbqLineSetter, KbqLocaleService, KbqLocaleServiceModule, KbqMeasureScrollbarService, KbqOptgroup, KbqOptgroupBase, KbqOptgroupMixinBase, KbqOption, KbqOptionActionBase, KbqOptionActionComponent, KbqOptionActionMixinBase, KbqOptionBase, KbqOptionModule, KbqOptionSelectionChange, KbqPopUp, KbqPopUpTrigger, KbqPseudoCheckbox, KbqPseudoCheckboxBase, KbqPseudoCheckboxMixinBase, KbqPseudoCheckboxModule, KbqRoundDecimalPipe, KbqSelectFooter, KbqSelectMatcher, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqSelectTrigger, KbqTableNumberPipe, KbqThemeSelector, KbqVirtualOption, LEFT_BOTTOM_POSITION_PRIORITY, LEFT_POSITION_PRIORITY, LEFT_TOP_POSITION_PRIORITY, MeasurementSystem, MultipleMode, NUMBER_FORMAT_REGEXP, POSITION_MAP, POSITION_PRIORITY_STRATEGY, POSITION_TO_CSS_MAP, PasswordValidators, PopUpPlacements, PopUpSizes, PopUpTriggers, PopUpVisibility, RIGHT_BOTTOM_POSITION_PRIORITY, RIGHT_POSITION_PRIORITY, RIGHT_TOP_POSITION_PRIORITY, RangeDateFormatterPipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterPipe, SELECT_PANEL_INDENT_PADDING_X, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, ShowOnControlDirtyErrorStateMatcher, ShowOnFormSubmitErrorStateMatcher, TOP_LEFT_POSITION_PRIORITY, TOP_POSITION_PRIORITY, TOP_RIGHT_POSITION_PRIORITY, ThemePalette, ThemeService, VERSION, applyPopupMargins, checkAndNormalizeLocalizedNumber, countGroupLabelsBeforeOption, enUSFormattersData, enUSLocaleData, esLAFormattersData, esLALocaleData, escapeRegExp, faIRFormattersData, faIRLocaleData, fadeAnimation, formatDataSize, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getOptionScrollPosition, isBoolean, isWithin, kbqSelectAnimations, kbqSelectScrollStrategyProviderFactory, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, normalizeNumber, ptBRFormattersData, ptBRLocaleData, ruRUFormattersData, ruRULocaleData, selectEvents, toBoolean, validationTooltipHideDelay, validationTooltipShowDelay, zhCNFormattersData, zhCNLocaleData };
|
|
3194
3488
|
//# sourceMappingURL=koobiq-components-core.mjs.map
|