@koobiq/components 18.39.2 → 18.39.4

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.
Files changed (124) hide show
  1. package/checkbox/checkbox.scss +5 -5
  2. package/code-block/code-block.d.ts +10 -3
  3. package/code-block/code-block.module.d.ts +1 -1
  4. package/code-block/code-block.scss +1 -0
  5. package/code-block/types.d.ts +9 -0
  6. package/core/highlight/highlight.pipe.d.ts +2 -0
  7. package/core/option/action.d.ts +5 -6
  8. package/core/pop-up/pop-up-trigger.d.ts +4 -1
  9. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +2 -2
  10. package/datepicker/datepicker-input.directive.d.ts +6 -1
  11. package/esm2022/checkbox/checkbox.mjs +2 -2
  12. package/esm2022/code-block/code-block.mjs +23 -6
  13. package/esm2022/code-block/code-block.module.mjs +8 -5
  14. package/esm2022/code-block/types.mjs +1 -1
  15. package/esm2022/core/highlight/highlight.pipe.mjs +23 -5
  16. package/esm2022/core/locales/en-US.mjs +2 -2
  17. package/esm2022/core/locales/es-LA.mjs +2 -2
  18. package/esm2022/core/locales/pt-BR.mjs +2 -2
  19. package/esm2022/core/locales/ru-RU.mjs +2 -2
  20. package/esm2022/core/locales/tk-TM.mjs +2 -2
  21. package/esm2022/core/option/action.mjs +21 -22
  22. package/esm2022/core/pop-up/pop-up-trigger.mjs +11 -3
  23. package/esm2022/core/version.mjs +2 -2
  24. package/esm2022/datepicker/datepicker-input.directive.mjs +9 -2
  25. package/esm2022/datepicker/datepicker.component.mjs +2 -2
  26. package/esm2022/dropdown/dropdown-trigger.directive.mjs +3 -2
  27. package/esm2022/filter-bar/pipes/pipe-date.mjs +7 -8
  28. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +8 -9
  29. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +3 -3
  30. package/esm2022/filter-bar/pipes/pipe-text.mjs +3 -3
  31. package/esm2022/form-field/cleaner.mjs +3 -3
  32. package/esm2022/form-field/fieldset.mjs +2 -2
  33. package/esm2022/form-field/form-field.mjs +2 -2
  34. package/esm2022/form-field/password-toggle.mjs +3 -3
  35. package/esm2022/form-field/stepper.mjs +3 -1
  36. package/esm2022/icon/icon-button.component.mjs +2 -2
  37. package/esm2022/inline-edit/inline-edit.mjs +4 -4
  38. package/esm2022/input/input-password.mjs +5 -4
  39. package/esm2022/input/input.mjs +5 -4
  40. package/esm2022/list/list-selection.component.mjs +12 -2
  41. package/esm2022/navbar/navbar-item.component.mjs +9 -2
  42. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  43. package/esm2022/popover/popover.component.mjs +3 -3
  44. package/esm2022/progress-spinner/progress-spinner.component.mjs +4 -3
  45. package/esm2022/search-expandable/search-expandable.mjs +50 -23
  46. package/esm2022/select/select.component.mjs +10 -6
  47. package/esm2022/tabs/tab-header.component.mjs +2 -2
  48. package/esm2022/tabs/tab-nav-bar.mjs +3 -3
  49. package/esm2022/tags/tag-input.mjs +21 -24
  50. package/esm2022/tags/tag-list.component.mjs +14 -5
  51. package/esm2022/tags/tag.component.mjs +9 -3
  52. package/esm2022/textarea/textarea.component.mjs +4 -3
  53. package/esm2022/title/title.directive.mjs +16 -3
  54. package/esm2022/tooltip/tooltip.component.mjs +2 -2
  55. package/esm2022/tree-select/tree-select.component.mjs +4 -3
  56. package/fesm2022/koobiq-components-checkbox.mjs +2 -2
  57. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  58. package/fesm2022/koobiq-components-code-block.mjs +29 -9
  59. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  60. package/fesm2022/koobiq-components-core.mjs +56 -32
  61. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  62. package/fesm2022/koobiq-components-datepicker.mjs +9 -2
  63. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  64. package/fesm2022/koobiq-components-dropdown.mjs +2 -1
  65. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  66. package/fesm2022/koobiq-components-filter-bar.mjs +24 -24
  67. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  68. package/fesm2022/koobiq-components-form-field.mjs +10 -8
  69. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  70. package/fesm2022/koobiq-components-icon.mjs +2 -2
  71. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  72. package/fesm2022/koobiq-components-inline-edit.mjs +3 -3
  73. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  74. package/fesm2022/koobiq-components-input.mjs +6 -4
  75. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  76. package/fesm2022/koobiq-components-list.mjs +11 -1
  77. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  78. package/fesm2022/koobiq-components-navbar.mjs +8 -1
  79. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  80. package/fesm2022/koobiq-components-popover.mjs +4 -4
  81. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  82. package/fesm2022/koobiq-components-progress-spinner.mjs +3 -2
  83. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  84. package/fesm2022/koobiq-components-search-expandable.mjs +49 -22
  85. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  86. package/fesm2022/koobiq-components-select.mjs +9 -5
  87. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  88. package/fesm2022/koobiq-components-tabs.mjs +4 -4
  89. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  90. package/fesm2022/koobiq-components-tags.mjs +39 -27
  91. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  92. package/fesm2022/koobiq-components-textarea.mjs +3 -2
  93. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  94. package/fesm2022/koobiq-components-title.mjs +15 -2
  95. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  96. package/fesm2022/koobiq-components-tooltip.mjs +1 -1
  97. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  98. package/fesm2022/koobiq-components-tree-select.mjs +3 -2
  99. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  100. package/filter-bar/pipes/pipe-date.scss +3 -15
  101. package/form-field/_form-field-theme.scss +2 -2
  102. package/form-field/form-field.scss +0 -1
  103. package/icon/icon-button.scss +9 -4
  104. package/inline-edit/inline-edit-tokens.scss +1 -1
  105. package/inline-edit/inline-edit.d.ts +2 -2
  106. package/inline-edit/inline-edit.scss +1 -1
  107. package/input/input-password.d.ts +1 -0
  108. package/input/input.d.ts +1 -0
  109. package/list/list-selection.component.d.ts +1 -0
  110. package/navbar/navbar-item.component.d.ts +3 -1
  111. package/package.json +10 -10
  112. package/popover/_popover-theme.scss +1 -1
  113. package/progress-spinner/_progress-spinner-theme.scss +14 -4
  114. package/progress-spinner/progress-spinner-tokens.scss +2 -0
  115. package/schematics/ng-add/index.js +2 -2
  116. package/search-expandable/search-expandable.d.ts +19 -4
  117. package/select/select.component.d.ts +3 -1
  118. package/tabs/_tabs-common.scss +2 -1
  119. package/tags/tag-input.d.ts +4 -3
  120. package/tags/tag-list.component.d.ts +8 -1
  121. package/tags/tag.component.d.ts +2 -0
  122. package/textarea/textarea.component.d.ts +1 -0
  123. package/title/title.directive.d.ts +3 -0
  124. package/tree-select/tree-select.component.d.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-code-block.mjs","sources":["../../../packages/components/code-block/code-block-highlight.ts","../../../packages/components/code-block/code-block.ts","../../../packages/components/code-block/code-block.html","../../../packages/components/code-block/code-block.module.ts","../../../packages/components/code-block/koobiq-components-code-block.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n Directive,\n inject,\n InjectionToken,\n Input,\n numberAttribute,\n Provider,\n Renderer2,\n SecurityContext\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { KBQ_WINDOW, kbqInjectNativeElement } from '@koobiq/components/core';\nimport hljs from 'highlight.js';\nimport { KbqCodeBlockFile } from './types';\n\n/**\n * Fallback language for code block if language is not supported/specified.\n *\n * List of supported languages:\n * @link https://highlightjs.readthedocs.io/en/stable/supported-languages.html\n */\nexport const KBQ_CODE_BLOCK_FALLBACK_FILE_LANGUAGE = new InjectionToken<string>(\n 'KBQ_CODE_BLOCK_FALLBACK_FILE_LANGUAGE',\n { factory: () => 'plaintext' }\n);\n\n/** Utility provider for `KBQ_CODE_BLOCK_FALLBACK_FILE_LANGUAGE`. */\nexport const kbqCodeBlockFallbackFileLanguageProvider = (language: string): Provider => ({\n provide: KBQ_CODE_BLOCK_FALLBACK_FILE_LANGUAGE,\n useValue: language\n});\n\n/** Directive which applies syntax highlighting to the code block content. */\n@Directive({\n standalone: true,\n selector: 'code[kbqCodeBlockHighlight]',\n host: {\n class: 'hljs'\n }\n})\nexport class KbqCodeBlockHighlight {\n private readonly nativeElement = kbqInjectNativeElement();\n private readonly document = inject<Document>(DOCUMENT);\n private readonly renderer = inject(Renderer2);\n private readonly domSanitizer = inject(DomSanitizer);\n private readonly fallbackFileLanguage = inject(KBQ_CODE_BLOCK_FALLBACK_FILE_LANGUAGE);\n private readonly window = inject(KBQ_WINDOW);\n\n /** The code file. */\n @Input({ required: true })\n set file(file: KbqCodeBlockFile) {\n if (!this.window) return;\n\n let { language } = file;\n\n if (!language || !hljs.getLanguage(language)) {\n // eslint-disable-next-line no-console\n console.warn(\n `[KbqCodeBlock] Unknown file language: \"${language}\". Fall back to \"${this.fallbackFileLanguage}\".`,\n file\n );\n language = this.fallbackFileLanguage;\n }\n\n const {\n value: highlightedHTML,\n language: highlightedLanguage,\n illegal,\n relevance\n } = hljs.highlight(file.content, {\n language: language!\n });\n\n if (illegal) {\n // eslint-disable-next-line no-console\n console.warn('[KbqCodeBlock] File content contains illegal characters.', file);\n }\n\n if (relevance === 0) {\n // eslint-disable-next-line no-console\n console.warn('[KbqCodeBlock] File content does not match the specified programming language.', file);\n }\n\n const safeHTML = this.domSanitizer.sanitize(SecurityContext.HTML, highlightedHTML);\n const highlightedHTMLWithLineNumbers = this.window['hljs'].lineNumbersValue(safeHTML, {\n startFrom: this.startFrom,\n singleLine: this.singleLine\n });\n\n this.renderer.setAttribute(this.nativeElement, 'data-language', highlightedLanguage!);\n this.renderer.setProperty(this.nativeElement, 'innerHTML', highlightedHTMLWithLineNumbers);\n }\n\n /** The starting line number. */\n @Input({ transform: numberAttribute }) startFrom: number = 1;\n\n /** Whether to display line numbers for single line code block. */\n @Input({ transform: booleanAttribute }) singleLine: boolean = false;\n\n constructor() {\n this.initLineNumbersPlugin();\n }\n\n /**\n * Initialize the HighlightJS line numbers plugin. This method is called once when\n * the component is constructed.\n */\n private initLineNumbersPlugin(): void {\n if (!this.window) return;\n\n this.window['hljs'] = hljs;\n this.highlightJSLineNumbersPlugin(this.document, this.window);\n }\n\n /**\n * This method is not intended for editing.\n * Changes may lead to unpredictable behavior.\n * Source code: https://github.com/wcoder/highlightjs-line-numbers.js/blob/v2.9.0/src/highlightjs-line-numbers.js\n */\n private highlightJSLineNumbersPlugin(d: Document, w: Window): void {\n 'use strict';\n\n if (!w) return;\n\n const TABLE_NAME = 'hljs-ln',\n LINE_NAME = 'hljs-ln-line',\n CODE_BLOCK_NAME = 'hljs-ln-code',\n NUMBERS_BLOCK_NAME = 'hljs-ln-numbers',\n NUMBER_LINE_NAME = 'hljs-ln-n',\n DATA_ATTR_NAME = 'data-line-number',\n BREAK_LINE_REGEXP = /\\r\\n|\\r|\\n/g;\n\n if (w['hljs']) {\n w['hljs'].initLineNumbersOnLoad = initLineNumbersOnLoad;\n w['hljs'].lineNumbersBlock = lineNumbersBlock;\n w['hljs'].lineNumbersBlockSync = lineNumbersBlockSync;\n w['hljs'].lineNumbersValue = lineNumbersValue;\n\n addStyles();\n } else {\n // eslint-disable-next-line no-console\n console.error('highlight.js not detected!');\n }\n\n function isHljsLnCodeDescendant(domElt) {\n let curElt = domElt;\n\n while (curElt) {\n if (curElt.className && curElt.className.indexOf('hljs-ln-code') !== -1) {\n return true;\n }\n\n curElt = curElt.parentNode;\n }\n\n return false;\n }\n\n function getHljsLnTable(hljsLnDomElt) {\n let curElt = hljsLnDomElt;\n\n while (curElt.nodeName !== 'TABLE') {\n curElt = curElt.parentNode;\n }\n\n return curElt;\n }\n\n // Function to workaround a copy issue with Microsoft Edge.\n // Due to hljs-ln wrapping the lines of code inside a <table> element,\n // itself wrapped inside a <pre> element, window.getSelection().toString()\n // does not contain any line breaks. So we need to get them back using the\n // rendered code in the DOM as reference.\n function edgeGetSelectedCodeLines(selection) {\n // current selected text without line breaks\n const selectionText = selection.toString();\n\n // get the <td> element wrapping the first line of selected code\n let tdAnchor = selection.anchorNode;\n\n while (tdAnchor.nodeName !== 'TD') {\n tdAnchor = tdAnchor.parentNode;\n }\n\n // get the <td> element wrapping the last line of selected code\n let tdFocus = selection.focusNode;\n\n while (tdFocus.nodeName !== 'TD') {\n tdFocus = tdFocus.parentNode;\n }\n\n // extract line numbers\n let firstLineNumber = parseInt(tdAnchor.dataset.lineNumber);\n let lastLineNumber = parseInt(tdFocus.dataset.lineNumber);\n\n // multi-lines copied case\n if (firstLineNumber != lastLineNumber) {\n let firstLineText = tdAnchor.textContent;\n let lastLineText = tdFocus.textContent;\n\n // if the selection was made backward, swap values\n if (firstLineNumber > lastLineNumber) {\n let tmp = firstLineNumber;\n\n firstLineNumber = lastLineNumber;\n lastLineNumber = tmp;\n tmp = firstLineText;\n firstLineText = lastLineText;\n lastLineText = tmp;\n }\n\n // discard not copied characters in first line\n while (selectionText.indexOf(firstLineText) !== 0) {\n firstLineText = firstLineText.slice(1);\n }\n\n // discard not copied characters in last line\n while (selectionText.lastIndexOf(lastLineText) === -1) {\n lastLineText = lastLineText.slice(0, -1);\n }\n\n // reconstruct and return the real copied text\n let selectedText = firstLineText;\n const hljsLnTable = getHljsLnTable(tdAnchor);\n\n for (let i = firstLineNumber + 1; i < lastLineNumber; ++i) {\n const codeLineSel = format('.{0}[{1}=\"{2}\"]', [CODE_BLOCK_NAME, DATA_ATTR_NAME, i]);\n const codeLineElt = hljsLnTable.querySelector(codeLineSel);\n\n selectedText += '\\n' + codeLineElt.textContent;\n }\n\n selectedText += '\\n' + lastLineText;\n\n return selectedText;\n // single copied line case\n } else {\n return selectionText;\n }\n }\n\n // ensure consistent code copy/paste behavior across all browsers\n // (see https://github.com/wcoder/highlightjs-line-numbers.js/issues/51)\n d.addEventListener('copy', function (e) {\n // get current selection\n const selection = w.getSelection()!;\n\n // override behavior when one wants to copy line of codes\n if (isHljsLnCodeDescendant(selection.anchorNode)) {\n let selectionText;\n\n // workaround an issue with Microsoft Edge as copied line breaks\n // are removed otherwise from the selection string\n if (w.navigator.userAgent.indexOf('Edge') !== -1) {\n selectionText = edgeGetSelectedCodeLines(selection);\n } else {\n // other browsers can directly use the selection string\n selectionText = selection.toString();\n }\n\n e.clipboardData!.setData('text/plain', selectionText);\n e.preventDefault();\n }\n });\n\n function addStyles() {\n const css = d.createElement('style');\n\n css.type = 'text/css';\n css.innerHTML = format(\n '.{0}{border-collapse:collapse}' + '.{0} td{padding:0}' + '.{1}:before{content:attr({2})}',\n [\n TABLE_NAME,\n NUMBER_LINE_NAME,\n DATA_ATTR_NAME\n ]\n );\n d.getElementsByTagName('head')[0].appendChild(css);\n }\n\n function initLineNumbersOnLoad(options) {\n if (d.readyState === 'interactive' || d.readyState === 'complete') {\n documentReady(options);\n } else {\n w.addEventListener('DOMContentLoaded', function () {\n documentReady(options);\n });\n }\n }\n\n function documentReady(options) {\n try {\n const blocks = d.querySelectorAll('code.hljs,code.nohighlight');\n\n for (const i in blocks) {\n if (blocks.hasOwnProperty(i)) {\n if (!isPluginDisabledForBlock(blocks[i])) {\n lineNumbersBlock(blocks[i], options);\n }\n }\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('LineNumbers error: ', e);\n }\n }\n\n function isPluginDisabledForBlock(element) {\n return element.classList.contains('nohljsln');\n }\n\n function lineNumbersBlock(element, options) {\n if (typeof element !== 'object') return;\n\n async(function () {\n element.innerHTML = lineNumbersInternal(element, options);\n });\n }\n\n function lineNumbersBlockSync(element, options) {\n if (typeof element !== 'object') return;\n\n element.innerHTML = lineNumbersInternal(element, options);\n }\n\n function lineNumbersValue(value, options) {\n if (typeof value !== 'string') return;\n\n const element = d.createElement('code');\n\n element.innerHTML = value;\n\n return lineNumbersInternal(element, options);\n }\n\n function lineNumbersInternal(element, options) {\n const internalOptions = mapOptions(element, options);\n\n duplicateMultilineNodes(element);\n\n return addLineNumbersBlockFor(element.innerHTML, internalOptions);\n }\n\n function addLineNumbersBlockFor(inputHtml, options) {\n const lines = getLines(inputHtml);\n\n // if last line contains only carriage return remove it\n if (lines[lines.length - 1].trim() === '') {\n lines.pop();\n }\n\n if (lines.length > 1 || options.singleLine) {\n let html = '';\n\n for (let i = 0, l = lines.length; i < l; i++) {\n html += format(\n '<tr>' +\n '<td class=\"{0} {1}\" {3}=\"{5}\">' +\n '<div class=\"{2}\" {3}=\"{5}\"></div>' +\n '</td>' +\n '<td class=\"{0} {4}\" {3}=\"{5}\">' +\n '{6}' +\n '</td>' +\n '</tr>',\n [\n LINE_NAME,\n NUMBERS_BLOCK_NAME,\n NUMBER_LINE_NAME,\n DATA_ATTR_NAME,\n CODE_BLOCK_NAME,\n i + options.startFrom,\n lines[i].length > 0 ? lines[i] : ' '\n ]\n );\n }\n\n return format('<table class=\"{0}\">{1}</table>', [TABLE_NAME, html]);\n }\n\n return inputHtml;\n }\n\n /**\n * @param {HTMLElement} element Code block.\n * @param {Object} options External API options.\n * @returns {Object} Internal API options.\n */\n function mapOptions(element, options) {\n options = options || {};\n\n return {\n singleLine: getSingleLineOption(options),\n startFrom: getStartFromOption(element, options)\n };\n }\n\n function getSingleLineOption(options) {\n const defaultValue = false;\n\n if (options.singleLine) {\n return options.singleLine;\n }\n\n return defaultValue;\n }\n\n function getStartFromOption(element, options) {\n const defaultValue = 1;\n let startFrom = defaultValue;\n\n if (isFinite(options.startFrom)) {\n startFrom = options.startFrom;\n }\n\n // can be overridden because local option is priority\n const value = getAttribute(element, 'data-ln-start-from');\n\n if (value !== null) {\n startFrom = toNumber(value, defaultValue);\n }\n\n return startFrom;\n }\n\n /**\n * Recursive method for fix multi-line elements implementation in highlight.js\n * Doing deep passage on child nodes.\n * @param {HTMLElement} element\n */\n function duplicateMultilineNodes(element) {\n const nodes = element.childNodes;\n\n for (const node in nodes) {\n if (nodes.hasOwnProperty(node)) {\n const child = nodes[node];\n\n if (getLinesCount(child.textContent) > 0) {\n if (child.childNodes.length > 0) {\n duplicateMultilineNodes(child);\n } else {\n duplicateMultilineNode(child.parentNode);\n }\n }\n }\n }\n }\n\n /**\n * Method for fix multi-line elements implementation in highlight.js\n * @param {HTMLElement} element\n */\n function duplicateMultilineNode(element) {\n const className = element.className;\n\n if (!/hljs-/.test(className)) return;\n\n const lines = getLines(element.innerHTML);\n\n let result = '';\n\n for (let i = 0; i < lines.length; i++) {\n const lineText = lines[i].length > 0 ? lines[i] : ' ';\n\n result += format('<span class=\"{0}\">{1}</span>\\n', [className, lineText]);\n }\n\n element.innerHTML = result.trim();\n }\n\n function getLines(text) {\n if (text.length === 0) return [];\n\n return text.split(BREAK_LINE_REGEXP);\n }\n\n function getLinesCount(text) {\n return (text.trim().match(BREAK_LINE_REGEXP) || []).length;\n }\n\n ///\n /// HELPERS\n ///\n\n function async(func) {\n w.setTimeout(func, 0);\n }\n\n /**\n * {@link https://wcoder.github.io/notes/string-format-for-string-formating-in-javascript}\n * @param {string} format\n * @param {array} args\n */\n function format(format, args) {\n return format.replace(/\\{(\\d+)\\}/g, function (m, n) {\n return args[n] !== undefined ? args[n] : m;\n });\n }\n\n /**\n * @param {HTMLElement} element Code block.\n * @param {String} attrName Attribute name.\n * @returns {String} Attribute value or empty.\n */\n function getAttribute(element, attrName) {\n return element.hasAttribute(attrName) ? element.getAttribute(attrName) : null;\n }\n\n /**\n * @param {String} str Source string.\n * @param {Number} fallback Fallback value.\n * @returns Parsed number or fallback value.\n */\n function toNumber(str, fallback) {\n if (!str) return fallback;\n const number = Number(str);\n\n return isFinite(number) ? number : fallback;\n }\n }\n}\n","import { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { Platform } from '@angular/cdk/platform';\nimport { CdkScrollable, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n numberAttribute,\n Output,\n Provider,\n Renderer2,\n SecurityContext,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { KbqButtonModule, KbqButtonStyles } from '@koobiq/components/button';\nimport {\n KBQ_LOCALE_SERVICE,\n KBQ_WINDOW,\n KbqCodeBlockLocaleConfiguration,\n KbqComponentColors,\n ruRULocaleData\n} from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTabsModule } from '@koobiq/components/tabs';\nimport { KbqToolTipModule, KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { debounceTime, fromEvent, merge } from 'rxjs';\nimport { KbqCodeBlockHighlight } from './code-block-highlight';\nimport { KbqCodeBlockFile } from './types';\n\n/** Localization configuration provider. */\nexport const KBQ_CODE_BLOCK_LOCALE_CONFIGURATION = new InjectionToken<KbqCodeBlockLocaleConfiguration>(\n 'KBQ_CODE_BLOCK_LOCALE_CONFIGURATION',\n { factory: () => ruRULocaleData.codeBlock }\n);\n\n/** Utility provider for `KBQ_CODE_BLOCK_LOCALE_CONFIGURATION`. */\nexport const kbqCodeBlockLocaleConfigurationProvider = (configuration: KbqCodeBlockLocaleConfiguration): Provider => ({\n provide: KBQ_CODE_BLOCK_LOCALE_CONFIGURATION,\n useValue: configuration\n});\n\n/** Fallback file name for code block if file name is not specified. */\nexport const KBQ_CODE_BLOCK_FALLBACK_FILE_NAME = new InjectionToken<string>('KBQ_CODE_BLOCK_FALLBACK_FILE_NAME', {\n factory: () => 'code'\n});\n\n/** Utility provider for `KBQ_CODE_BLOCK_FALLBACK_FILE_NAME`. */\nexport const kbqCodeBlockFallbackFileNameProvider = (fileName: string): Provider => ({\n provide: KBQ_CODE_BLOCK_FALLBACK_FILE_NAME,\n useValue: fileName\n});\n\n/**\n * Component which highlights blocks of code.\n */\n@Component({\n standalone: true,\n imports: [\n KbqTabsModule,\n KbqButtonModule,\n KbqCodeBlockHighlight,\n A11yModule,\n CdkScrollableModule,\n KbqToolTipModule,\n KbqIconModule\n ],\n selector: 'kbq-code-block',\n exportAs: 'kbqCodeBlock',\n templateUrl: './code-block.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_hide-tabs]': 'hideTabs',\n '[class.kbq-code-block_no-border]': 'noBorder || filled',\n '[class.kbq-code-block_soft-wrap]': 'softWrap',\n '[class.kbq-code-block_view-all]': 'viewAll'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqCodeBlock implements AfterViewInit {\n @ViewChild('copyButtonTooltip') private readonly copyButtonTooltip?: KbqTooltipTrigger;\n /**\n * Reference to the scrollable code content.\n */\n @ViewChild(CdkScrollable) readonly scrollableCodeContent: CdkScrollable;\n\n /** Whether to display line numbers. */\n @Input({ transform: booleanAttribute }) lineNumbers = false;\n\n /** Whether the code block should be filled. */\n @Input({ transform: booleanAttribute }) filled: boolean = false;\n\n /** Added soft wrap toggle button. */\n @Input({ transform: booleanAttribute }) canToggleSoftWrap: boolean = false;\n\n /** Whether sequences of whitespace should be preserved. */\n @Input({ transform: booleanAttribute }) softWrap: boolean = false;\n\n /**\n * Output to support two-way binding on `[(softWrap)]` property.\n */\n @Output() readonly softWrapChange = new EventEmitter<boolean>();\n\n /**\n * Allows to view all the code, otherwise it will be hidden.\n * Works only with `maxHeight` property.\n */\n @Input({ transform: booleanAttribute }) viewAll: boolean = false;\n\n /**\n * Output to support two-way binding on `[(viewAll)]` property.\n */\n @Output() readonly viewAllChange = new EventEmitter<boolean>();\n\n /**\n * Maximum height of the code block content, other parts will be hidden.\n * Can be toggled by `viewAll` property.\n */\n @Input({ transform: numberAttribute }) maxHeight: number;\n\n /**\n * @docs-private\n */\n protected get calculatedMaxHeight(): number | null {\n return this.maxHeight > 0 && !this.viewAll ? this.maxHeight : null;\n }\n\n /**\n * @deprecated Will be removed in next major release, use `canDownload` instead.\n *\n * @docs-private\n */\n @Input({ transform: booleanAttribute })\n set canLoad(value: boolean) {\n this.canDownload = value;\n }\n\n /** Added download code button. */\n @Input({ transform: booleanAttribute }) canDownload: boolean = false;\n\n /** Added copy code button. */\n @Input({ transform: booleanAttribute }) canCopy: boolean = true;\n\n /**\n * @deprecated Will be removed in next major release, use `files` instead.\n */\n @Input()\n set codeFiles(files: KbqCodeBlockFile[]) {\n this.files = files;\n }\n\n /**\n * @TODO Mark as `required`, after removing `codeFiles`\n *\n * Files to display.\n */\n @Input()\n get files(): KbqCodeBlockFile[] {\n return this._files;\n }\n\n set files(files: KbqCodeBlockFile[]) {\n this._files = files;\n\n if (this._files.length < this.activeFileIndex) {\n this.onSelectedTabChange(0);\n }\n\n if (this._files.length === 1 && !this._files[0].filename) {\n this.hideTabs = true;\n }\n }\n\n private _files: KbqCodeBlockFile[] = [];\n\n /** Defines which file (index) is active. */\n @Input({ transform: numberAttribute }) activeFileIndex = 0;\n\n /**\n * Output to support two-way binding on `[(activeFileIndex)]` property.\n */\n @Output() readonly activeFileIndexChange = new EventEmitter<number>();\n\n /** Whether to hide border. */\n @Input({ transform: booleanAttribute }) noBorder: boolean = false;\n\n /**\n * Whether to hide header tabs.\n * Always `true` if there is only one file without filename.\n * Makes actionbar floating if tabs are hidden.\n */\n @Input({ transform: booleanAttribute })\n get hideTabs(): boolean {\n return this._hideTabs;\n }\n\n set hideTabs(value: boolean) {\n this._hideTabs = value;\n\n this.setupActionbarDisplay();\n }\n\n private _hideTabs: boolean = false;\n\n /**\n * Component locale configuration.\n *\n * @docs-private\n */\n protected get localeConfiguration(): KbqCodeBlockLocaleConfiguration {\n return this._localeConfiguration;\n }\n\n private _localeConfiguration: KbqCodeBlockLocaleConfiguration = inject(KBQ_CODE_BLOCK_LOCALE_CONFIGURATION);\n\n /**\n * Code content tab index.\n *\n * @docs-private\n */\n protected get codeContentTabIndex(): number {\n return this.canCodeContentBeFocused ? 0 : -1;\n }\n\n /**\n * Determines whether the code content can be focused.\n *\n * This checks if the scrollable code content element is present,\n * has a scroll, and the calculated maximum height is not set.\n */\n private get canCodeContentBeFocused(): boolean {\n const element = this.scrollableCodeContent?.getElementRef().nativeElement;\n\n return element && this.hasScroll(element) && !this.calculatedMaxHeight;\n }\n\n /**\n * @docs-private\n */\n protected readonly componentColor = KbqComponentColors;\n /**\n * @docs-private\n */\n protected readonly buttonStyle = KbqButtonStyles;\n\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n private readonly destroyRef = inject(DestroyRef);\n private readonly renderer = inject(Renderer2);\n private readonly platform = inject(Platform);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly clipboard = inject(Clipboard);\n private readonly domSanitizer = inject(DomSanitizer);\n private readonly document = inject<Document>(DOCUMENT);\n /**\n * @docs-private\n */\n protected readonly fallbackFileName = inject(KBQ_CODE_BLOCK_FALLBACK_FILE_NAME);\n private readonly window = inject(KBQ_WINDOW);\n\n constructor() {\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n }\n\n ngAfterViewInit(): void {\n this.handleScroll();\n this.handleHover();\n\n // Setup initial actionbar display state\n this.setupActionbarDisplay();\n\n this.copyButtonTooltip?.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((isVisible) => {\n if (isVisible) {\n this.copyButtonTooltip!.content = this.localeConfiguration.copyTooltip;\n }\n });\n\n // Should call `markForCheck` to ensure the `codeContentTabIndex` is updated after the view is initialized,\n // for correct focus behavior.\n this.changeDetectorRef.markForCheck();\n }\n\n /**\n * Toggles the `viewAll` property.\n *\n * When `viewAll` is set to `true`, the content of the code block will be\n * displayed in its entirety. When set to `false`, the content will be\n * limited to the `maxHeight` property. If the content exceeds the\n * `maxHeight`, it will be scrolled to the top and the `viewAll` button\n * will be displayed.\n */\n toggleViewAll(): void {\n this.viewAll = !this.viewAll;\n\n if (!this.viewAll) {\n this.scrollableCodeContent.scrollTo({ top: 0, behavior: 'instant' });\n }\n\n this.viewAllChange.emit(this.viewAll);\n }\n\n /**\n * Toggles `softWrap` property.\n *\n * When `softWrap` is set to `true`, the content of the code block will be\n * wrapped if it exceeds the height of the component. When set to `false`\n * the content will not be wrapped.\n */\n toggleSoftWrap(): void {\n this.softWrap = !this.softWrap;\n this.softWrapChange.emit(this.softWrap);\n }\n\n /**\n * Handles the change of the selected tab by updating the active file index\n * and scrolling to the top of the scrollable content.\n *\n * @param index - The index of the newly selected tab.\n *\n * @docs-private\n */\n protected onSelectedTabChange(index: number): void {\n if (this.activeFileIndex !== index) {\n this.activeFileIndex = index;\n this.activeFileIndexChange.emit(this.activeFileIndex);\n this.scrollableCodeContent.scrollTo({ top: 0, behavior: 'instant' });\n }\n }\n\n /**\n * Handles the hover event on the code block element and updates the actionbar display accordingly.\n */\n private handleHover(): void {\n merge(\n fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mouseenter'),\n fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mouseleave')\n )\n .pipe(debounceTime(100), takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.setupActionbarDisplay(event?.type === 'mouseenter');\n });\n }\n\n /**\n * Handles the scroll event on the scrollable code content element and updates the header shadow accordingly.\n */\n private handleScroll(): void {\n this.scrollableCodeContent\n .elementScrolled()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.setupHeaderShadow(this.scrollableCodeContent.measureScrollOffset('top') > 0);\n });\n }\n\n /**\n * Adds or removes the shadow class from the code block based on the specified condition.\n *\n * @param shouldShowShadow - A boolean indicating whether to add or remove the shadow class.\n */\n private setupHeaderShadow(shouldShowShadow: boolean): void {\n const className = 'kbq-code-block_header-with-shadow';\n\n if (shouldShowShadow) {\n this.renderer.addClass(this.elementRef.nativeElement, className);\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, className);\n }\n }\n\n /**\n * Adds or removes the actionbar display class from the code block based on the specified condition.\n *\n * The actionbar is always visible on mobile devices and when the tabs are visible.\n * Otherwise, the actionbar is only visible when the mouse is hovered over the code block.\n *\n * @param shouldShowActionbar - A boolean indicating whether the actionbar should be visible.\n */\n private setupActionbarDisplay(shouldShowActionbar?: boolean): void {\n const className = 'kbq-code-block_show-actionbar';\n\n // Should always show actionbar on Mobile devices\n if (this.platform.IOS || this.platform.ANDROID) {\n this.renderer.addClass(this.elementRef.nativeElement, className);\n\n return;\n }\n\n // Should always show actionbar when tabs are visible\n if (!this.hideTabs) {\n this.renderer.addClass(this.elementRef.nativeElement, className);\n\n return;\n }\n\n if (typeof shouldShowActionbar === 'undefined') {\n return;\n }\n\n if (shouldShowActionbar) {\n this.renderer.addClass(this.elementRef.nativeElement, className);\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, className);\n }\n }\n\n /** Whether the element has scroll. */\n private hasScroll({ scrollHeight, scrollWidth, clientHeight, clientWidth }: HTMLElement): boolean {\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\n }\n\n /**\n * Handles the enter keydown event on `viewAll` button.\n *\n * @docs-private\n */\n protected onViewAllEnterKeydown(event: Event): void {\n event.preventDefault();\n\n this.toggleViewAll();\n\n if (this.canCodeContentBeFocused) {\n this.focusMonitor.focusVia(this.scrollableCodeContent.getElementRef().nativeElement, 'keyboard');\n }\n }\n\n private updateLocaleParams = (): void => {\n this._localeConfiguration = this.localeService?.getParams('codeBlock');\n\n this.changeDetectorRef.markForCheck();\n };\n\n /**\n * Copies the file code to the clipboard.\n *\n * If the copy was successful, the copy button tooltip content is updated\n * to show the \"copied\" message.\n *\n * @docs-private\n */\n protected copyCode(): void {\n const file = this.files[this.activeFileIndex];\n\n if (this.clipboard.copy(file.content) && this.copyButtonTooltip) {\n this.copyButtonTooltip.content = this.localeConfiguration.copiedTooltip;\n }\n }\n\n /**\n * Opens the file link in a new window.\n *\n * @docs-private\n */\n protected openLink(): void {\n const file = this.files[this.activeFileIndex];\n const safeURL = this.domSanitizer.sanitize(SecurityContext.URL, file.link!);\n\n if (safeURL) {\n this.window.open(safeURL.toString(), '_blank');\n }\n }\n\n /**\n * Downloads the file as a blob.\n *\n * Creates a link with a blob as href and the file name as download attribute.\n * Then simulates a click event on the link to initiate the download.\n *\n * @docs-private\n */\n protected downloadCode(): void {\n const file = this.files[this.activeFileIndex];\n const blob = new Blob([file.content], { type: 'text/plain' });\n const url = URL.createObjectURL(blob);\n const link = this.document.createElement('a');\n\n link.setAttribute('href', url);\n link.setAttribute('download', file.filename || this.fallbackFileName);\n link.click();\n }\n}\n","@let file = files[activeFileIndex];\n\n<div class=\"kbq-code-block__header\">\n @if (!hideTabs) {\n <div class=\"kbq-code-block__header-tabs\">\n <div kbqTabNavBar transparent [tabNavPanel]=\"tabPanel\">\n @for (file of files; track file; let index = $index) {\n <div\n kbqTabLink\n [active]=\"activeFileIndex === index\"\n [disabled]=\"files.length === 1\"\n (click)=\"onSelectedTabChange(index)\"\n >\n {{ file.filename || fallbackFileName }}\n </div>\n }\n </div>\n </div>\n }\n\n <div class=\"kbq-code-block__actionbar\">\n @if (hideTabs) {\n <div class=\"kbq-code-block__actionbar__fade-gradient\"></div>\n }\n\n <div class=\"kbq-code-block__actionbar__button-stack\">\n @if (canToggleSoftWrap) {\n <button\n kbq-button\n class=\"kbq-code-block__actionbar__soft-wrap-button\"\n [color]=\"componentColor.Contrast\"\n [kbqStyle]=\"buttonStyle.Transparent\"\n [kbqTooltip]=\"\n softWrap ? localeConfiguration.softWrapOffTooltip : localeConfiguration.softWrapOnTooltip\n \"\n (click)=\"toggleSoftWrap()\"\n >\n @if (softWrap) {\n <i kbq-icon=\"kbq-wrap-text-slash_16\"></i>\n } @else {\n <i kbq-icon=\"kbq-wrap-text_16\"></i>\n }\n </button>\n }\n\n @if (canDownload) {\n <button\n kbq-button\n class=\"kbq-code-block__actionbar__download-button\"\n [color]=\"componentColor.Contrast\"\n [kbqStyle]=\"buttonStyle.Transparent\"\n [kbqTooltip]=\"localeConfiguration.downloadTooltip\"\n (click)=\"downloadCode()\"\n >\n <i kbq-icon=\"kbq-arrow-down-to-line_16\"></i>\n </button>\n }\n\n @if (canCopy) {\n <div #copyButtonTooltip=\"kbqTooltip\" [kbqTooltip]=\"localeConfiguration.copyTooltip\">\n <button\n kbq-button\n class=\"kbq-code-block__actionbar__copy-button\"\n [color]=\"componentColor.Contrast\"\n [kbqStyle]=\"buttonStyle.Transparent\"\n (click)=\"copyCode()\"\n >\n <i kbq-icon=\"kbq-file-multiple-o_16\"></i>\n </button>\n </div>\n }\n\n @if (file.link) {\n <button\n kbq-button\n class=\"kbq-code-block__actionbar__link-button\"\n [color]=\"componentColor.Contrast\"\n [kbqStyle]=\"buttonStyle.Transparent\"\n [kbqTooltip]=\"localeConfiguration.openExternalSystemTooltip\"\n (click)=\"openLink()\"\n >\n <i kbq-icon=\"kbq-arrow-up-right-from-square_16\"></i>\n </button>\n }\n </div>\n </div>\n</div>\n\n<div\n #tabPanel=\"kbqTabNavPanel\"\n cdkMonitorElementFocus\n cdkScrollable\n kbqTabNavPanel\n class=\"kbq-code-block__main kbq-scrollbar\"\n [style.max-height.px]=\"calculatedMaxHeight\"\n [tabIndex]=\"codeContentTabIndex\"\n>\n <pre\n class=\"kbq-code-block__pre\"\n ><code kbqCodeBlockHighlight class=\"kbq-code-block__code\" [file]=\"file\"></code></pre>\n\n @if (maxHeight) {\n <div\n class=\"kbq-code-block__view-all\"\n [class.kbq-code-block__view-all_collapsed]=\"!viewAll\"\n [class.kbq-code-block__view-all_expanded]=\"viewAll\"\n >\n <div class=\"kbq-code-block__view-all__wrapper\">\n <button\n kbq-button\n class=\"kbq-code-block__view-all__button\"\n [color]=\"componentColor.Theme\"\n [kbqStyle]=\"buttonStyle.Transparent\"\n (click)=\"toggleViewAll()\"\n (keydown.enter)=\"onViewAllEnterKeydown($event)\"\n >\n @if (viewAll) {\n <i kbq-icon=\"kbq-chevron-up_16\"></i>\n {{ localeConfiguration.viewLessText }}\n } @else {\n <i kbq-icon=\"kbq-chevron-down_16\"></i>\n {{ localeConfiguration.viewAllText }}\n }\n </button>\n </div>\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { KbqCodeBlock } from './code-block';\n\nconst COMPONENTS = [\n KbqCodeBlock\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqCodeBlockModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-code-block.mjs","sources":["../../../packages/components/code-block/code-block-highlight.ts","../../../packages/components/code-block/code-block.ts","../../../packages/components/code-block/code-block.html","../../../packages/components/code-block/code-block.module.ts","../../../packages/components/code-block/koobiq-components-code-block.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n Directive,\n inject,\n InjectionToken,\n Input,\n numberAttribute,\n Provider,\n Renderer2,\n SecurityContext\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { KBQ_WINDOW, kbqInjectNativeElement } from '@koobiq/components/core';\nimport hljs from 'highlight.js';\nimport { KbqCodeBlockFile } from './types';\n\n/**\n * Fallback language for code block if language is not supported/specified.\n *\n * List of supported languages:\n * @link https://highlightjs.readthedocs.io/en/stable/supported-languages.html\n */\nexport const KBQ_CODE_BLOCK_FALLBACK_FILE_LANGUAGE = new InjectionToken<string>(\n 'KBQ_CODE_BLOCK_FALLBACK_FILE_LANGUAGE',\n { factory: () => 'plaintext' }\n);\n\n/** Utility provider for `KBQ_CODE_BLOCK_FALLBACK_FILE_LANGUAGE`. */\nexport const kbqCodeBlockFallbackFileLanguageProvider = (language: string): Provider => ({\n provide: KBQ_CODE_BLOCK_FALLBACK_FILE_LANGUAGE,\n useValue: language\n});\n\n/** Directive which applies syntax highlighting to the code block content. */\n@Directive({\n standalone: true,\n selector: 'code[kbqCodeBlockHighlight]',\n host: {\n class: 'hljs'\n }\n})\nexport class KbqCodeBlockHighlight {\n private readonly nativeElement = kbqInjectNativeElement();\n private readonly document = inject<Document>(DOCUMENT);\n private readonly renderer = inject(Renderer2);\n private readonly domSanitizer = inject(DomSanitizer);\n private readonly fallbackFileLanguage = inject(KBQ_CODE_BLOCK_FALLBACK_FILE_LANGUAGE);\n private readonly window = inject(KBQ_WINDOW);\n\n /** The code file. */\n @Input({ required: true })\n set file(file: KbqCodeBlockFile) {\n if (!this.window) return;\n\n let { language } = file;\n\n if (!language || !hljs.getLanguage(language)) {\n // eslint-disable-next-line no-console\n console.warn(\n `[KbqCodeBlock] Unknown file language: \"${language}\". Fall back to \"${this.fallbackFileLanguage}\".`,\n file\n );\n language = this.fallbackFileLanguage;\n }\n\n const {\n value: highlightedHTML,\n language: highlightedLanguage,\n illegal,\n relevance\n } = hljs.highlight(file.content, {\n language: language!\n });\n\n if (illegal) {\n // eslint-disable-next-line no-console\n console.warn('[KbqCodeBlock] File content contains illegal characters.', file);\n }\n\n if (relevance === 0) {\n // eslint-disable-next-line no-console\n console.warn('[KbqCodeBlock] File content does not match the specified programming language.', file);\n }\n\n const safeHTML = this.domSanitizer.sanitize(SecurityContext.HTML, highlightedHTML);\n const highlightedHTMLWithLineNumbers = this.window['hljs'].lineNumbersValue(safeHTML, {\n startFrom: this.startFrom,\n singleLine: this.singleLine\n });\n\n this.renderer.setAttribute(this.nativeElement, 'data-language', highlightedLanguage!);\n this.renderer.setProperty(this.nativeElement, 'innerHTML', highlightedHTMLWithLineNumbers);\n }\n\n /** The starting line number. */\n @Input({ transform: numberAttribute }) startFrom: number = 1;\n\n /** Whether to display line numbers for single line code block. */\n @Input({ transform: booleanAttribute }) singleLine: boolean = false;\n\n constructor() {\n this.initLineNumbersPlugin();\n }\n\n /**\n * Initialize the HighlightJS line numbers plugin. This method is called once when\n * the component is constructed.\n */\n private initLineNumbersPlugin(): void {\n if (!this.window) return;\n\n this.window['hljs'] = hljs;\n this.highlightJSLineNumbersPlugin(this.document, this.window);\n }\n\n /**\n * This method is not intended for editing.\n * Changes may lead to unpredictable behavior.\n * Source code: https://github.com/wcoder/highlightjs-line-numbers.js/blob/v2.9.0/src/highlightjs-line-numbers.js\n */\n private highlightJSLineNumbersPlugin(d: Document, w: Window): void {\n 'use strict';\n\n if (!w) return;\n\n const TABLE_NAME = 'hljs-ln',\n LINE_NAME = 'hljs-ln-line',\n CODE_BLOCK_NAME = 'hljs-ln-code',\n NUMBERS_BLOCK_NAME = 'hljs-ln-numbers',\n NUMBER_LINE_NAME = 'hljs-ln-n',\n DATA_ATTR_NAME = 'data-line-number',\n BREAK_LINE_REGEXP = /\\r\\n|\\r|\\n/g;\n\n if (w['hljs']) {\n w['hljs'].initLineNumbersOnLoad = initLineNumbersOnLoad;\n w['hljs'].lineNumbersBlock = lineNumbersBlock;\n w['hljs'].lineNumbersBlockSync = lineNumbersBlockSync;\n w['hljs'].lineNumbersValue = lineNumbersValue;\n\n addStyles();\n } else {\n // eslint-disable-next-line no-console\n console.error('highlight.js not detected!');\n }\n\n function isHljsLnCodeDescendant(domElt) {\n let curElt = domElt;\n\n while (curElt) {\n if (curElt.className && curElt.className.indexOf('hljs-ln-code') !== -1) {\n return true;\n }\n\n curElt = curElt.parentNode;\n }\n\n return false;\n }\n\n function getHljsLnTable(hljsLnDomElt) {\n let curElt = hljsLnDomElt;\n\n while (curElt.nodeName !== 'TABLE') {\n curElt = curElt.parentNode;\n }\n\n return curElt;\n }\n\n // Function to workaround a copy issue with Microsoft Edge.\n // Due to hljs-ln wrapping the lines of code inside a <table> element,\n // itself wrapped inside a <pre> element, window.getSelection().toString()\n // does not contain any line breaks. So we need to get them back using the\n // rendered code in the DOM as reference.\n function edgeGetSelectedCodeLines(selection) {\n // current selected text without line breaks\n const selectionText = selection.toString();\n\n // get the <td> element wrapping the first line of selected code\n let tdAnchor = selection.anchorNode;\n\n while (tdAnchor.nodeName !== 'TD') {\n tdAnchor = tdAnchor.parentNode;\n }\n\n // get the <td> element wrapping the last line of selected code\n let tdFocus = selection.focusNode;\n\n while (tdFocus.nodeName !== 'TD') {\n tdFocus = tdFocus.parentNode;\n }\n\n // extract line numbers\n let firstLineNumber = parseInt(tdAnchor.dataset.lineNumber);\n let lastLineNumber = parseInt(tdFocus.dataset.lineNumber);\n\n // multi-lines copied case\n if (firstLineNumber != lastLineNumber) {\n let firstLineText = tdAnchor.textContent;\n let lastLineText = tdFocus.textContent;\n\n // if the selection was made backward, swap values\n if (firstLineNumber > lastLineNumber) {\n let tmp = firstLineNumber;\n\n firstLineNumber = lastLineNumber;\n lastLineNumber = tmp;\n tmp = firstLineText;\n firstLineText = lastLineText;\n lastLineText = tmp;\n }\n\n // discard not copied characters in first line\n while (selectionText.indexOf(firstLineText) !== 0) {\n firstLineText = firstLineText.slice(1);\n }\n\n // discard not copied characters in last line\n while (selectionText.lastIndexOf(lastLineText) === -1) {\n lastLineText = lastLineText.slice(0, -1);\n }\n\n // reconstruct and return the real copied text\n let selectedText = firstLineText;\n const hljsLnTable = getHljsLnTable(tdAnchor);\n\n for (let i = firstLineNumber + 1; i < lastLineNumber; ++i) {\n const codeLineSel = format('.{0}[{1}=\"{2}\"]', [CODE_BLOCK_NAME, DATA_ATTR_NAME, i]);\n const codeLineElt = hljsLnTable.querySelector(codeLineSel);\n\n selectedText += '\\n' + codeLineElt.textContent;\n }\n\n selectedText += '\\n' + lastLineText;\n\n return selectedText;\n // single copied line case\n } else {\n return selectionText;\n }\n }\n\n // ensure consistent code copy/paste behavior across all browsers\n // (see https://github.com/wcoder/highlightjs-line-numbers.js/issues/51)\n d.addEventListener('copy', function (e) {\n // get current selection\n const selection = w.getSelection()!;\n\n // override behavior when one wants to copy line of codes\n if (isHljsLnCodeDescendant(selection.anchorNode)) {\n let selectionText;\n\n // workaround an issue with Microsoft Edge as copied line breaks\n // are removed otherwise from the selection string\n if (w.navigator.userAgent.indexOf('Edge') !== -1) {\n selectionText = edgeGetSelectedCodeLines(selection);\n } else {\n // other browsers can directly use the selection string\n selectionText = selection.toString();\n }\n\n e.clipboardData!.setData('text/plain', selectionText);\n e.preventDefault();\n }\n });\n\n function addStyles() {\n const css = d.createElement('style');\n\n css.type = 'text/css';\n css.innerHTML = format(\n '.{0}{border-collapse:collapse}' + '.{0} td{padding:0}' + '.{1}:before{content:attr({2})}',\n [\n TABLE_NAME,\n NUMBER_LINE_NAME,\n DATA_ATTR_NAME\n ]\n );\n d.getElementsByTagName('head')[0].appendChild(css);\n }\n\n function initLineNumbersOnLoad(options) {\n if (d.readyState === 'interactive' || d.readyState === 'complete') {\n documentReady(options);\n } else {\n w.addEventListener('DOMContentLoaded', function () {\n documentReady(options);\n });\n }\n }\n\n function documentReady(options) {\n try {\n const blocks = d.querySelectorAll('code.hljs,code.nohighlight');\n\n for (const i in blocks) {\n if (blocks.hasOwnProperty(i)) {\n if (!isPluginDisabledForBlock(blocks[i])) {\n lineNumbersBlock(blocks[i], options);\n }\n }\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('LineNumbers error: ', e);\n }\n }\n\n function isPluginDisabledForBlock(element) {\n return element.classList.contains('nohljsln');\n }\n\n function lineNumbersBlock(element, options) {\n if (typeof element !== 'object') return;\n\n async(function () {\n element.innerHTML = lineNumbersInternal(element, options);\n });\n }\n\n function lineNumbersBlockSync(element, options) {\n if (typeof element !== 'object') return;\n\n element.innerHTML = lineNumbersInternal(element, options);\n }\n\n function lineNumbersValue(value, options) {\n if (typeof value !== 'string') return;\n\n const element = d.createElement('code');\n\n element.innerHTML = value;\n\n return lineNumbersInternal(element, options);\n }\n\n function lineNumbersInternal(element, options) {\n const internalOptions = mapOptions(element, options);\n\n duplicateMultilineNodes(element);\n\n return addLineNumbersBlockFor(element.innerHTML, internalOptions);\n }\n\n function addLineNumbersBlockFor(inputHtml, options) {\n const lines = getLines(inputHtml);\n\n // if last line contains only carriage return remove it\n if (lines[lines.length - 1].trim() === '') {\n lines.pop();\n }\n\n if (lines.length > 1 || options.singleLine) {\n let html = '';\n\n for (let i = 0, l = lines.length; i < l; i++) {\n html += format(\n '<tr>' +\n '<td class=\"{0} {1}\" {3}=\"{5}\">' +\n '<div class=\"{2}\" {3}=\"{5}\"></div>' +\n '</td>' +\n '<td class=\"{0} {4}\" {3}=\"{5}\">' +\n '{6}' +\n '</td>' +\n '</tr>',\n [\n LINE_NAME,\n NUMBERS_BLOCK_NAME,\n NUMBER_LINE_NAME,\n DATA_ATTR_NAME,\n CODE_BLOCK_NAME,\n i + options.startFrom,\n lines[i].length > 0 ? lines[i] : ' '\n ]\n );\n }\n\n return format('<table class=\"{0}\">{1}</table>', [TABLE_NAME, html]);\n }\n\n return inputHtml;\n }\n\n /**\n * @param {HTMLElement} element Code block.\n * @param {Object} options External API options.\n * @returns {Object} Internal API options.\n */\n function mapOptions(element, options) {\n options = options || {};\n\n return {\n singleLine: getSingleLineOption(options),\n startFrom: getStartFromOption(element, options)\n };\n }\n\n function getSingleLineOption(options) {\n const defaultValue = false;\n\n if (options.singleLine) {\n return options.singleLine;\n }\n\n return defaultValue;\n }\n\n function getStartFromOption(element, options) {\n const defaultValue = 1;\n let startFrom = defaultValue;\n\n if (isFinite(options.startFrom)) {\n startFrom = options.startFrom;\n }\n\n // can be overridden because local option is priority\n const value = getAttribute(element, 'data-ln-start-from');\n\n if (value !== null) {\n startFrom = toNumber(value, defaultValue);\n }\n\n return startFrom;\n }\n\n /**\n * Recursive method for fix multi-line elements implementation in highlight.js\n * Doing deep passage on child nodes.\n * @param {HTMLElement} element\n */\n function duplicateMultilineNodes(element) {\n const nodes = element.childNodes;\n\n for (const node in nodes) {\n if (nodes.hasOwnProperty(node)) {\n const child = nodes[node];\n\n if (getLinesCount(child.textContent) > 0) {\n if (child.childNodes.length > 0) {\n duplicateMultilineNodes(child);\n } else {\n duplicateMultilineNode(child.parentNode);\n }\n }\n }\n }\n }\n\n /**\n * Method for fix multi-line elements implementation in highlight.js\n * @param {HTMLElement} element\n */\n function duplicateMultilineNode(element) {\n const className = element.className;\n\n if (!/hljs-/.test(className)) return;\n\n const lines = getLines(element.innerHTML);\n\n let result = '';\n\n for (let i = 0; i < lines.length; i++) {\n const lineText = lines[i].length > 0 ? lines[i] : ' ';\n\n result += format('<span class=\"{0}\">{1}</span>\\n', [className, lineText]);\n }\n\n element.innerHTML = result.trim();\n }\n\n function getLines(text) {\n if (text.length === 0) return [];\n\n return text.split(BREAK_LINE_REGEXP);\n }\n\n function getLinesCount(text) {\n return (text.trim().match(BREAK_LINE_REGEXP) || []).length;\n }\n\n ///\n /// HELPERS\n ///\n\n function async(func) {\n w.setTimeout(func, 0);\n }\n\n /**\n * {@link https://wcoder.github.io/notes/string-format-for-string-formating-in-javascript}\n * @param {string} format\n * @param {array} args\n */\n function format(format, args) {\n return format.replace(/\\{(\\d+)\\}/g, function (m, n) {\n return args[n] !== undefined ? args[n] : m;\n });\n }\n\n /**\n * @param {HTMLElement} element Code block.\n * @param {String} attrName Attribute name.\n * @returns {String} Attribute value or empty.\n */\n function getAttribute(element, attrName) {\n return element.hasAttribute(attrName) ? element.getAttribute(attrName) : null;\n }\n\n /**\n * @param {String} str Source string.\n * @param {Number} fallback Fallback value.\n * @returns Parsed number or fallback value.\n */\n function toNumber(str, fallback) {\n if (!str) return fallback;\n const number = Number(str);\n\n return isFinite(number) ? number : fallback;\n }\n }\n}\n","import { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { Platform } from '@angular/cdk/platform';\nimport { CdkScrollable, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n numberAttribute,\n Output,\n Provider,\n Renderer2,\n SecurityContext,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { KbqButtonModule, KbqButtonStyles } from '@koobiq/components/button';\nimport {\n KBQ_LOCALE_SERVICE,\n KBQ_WINDOW,\n KbqCodeBlockLocaleConfiguration,\n KbqComponentColors,\n ruRULocaleData\n} from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTabsModule } from '@koobiq/components/tabs';\nimport { KbqToolTipModule, KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { debounceTime, fromEvent, merge } from 'rxjs';\nimport { KbqCodeBlockHighlight } from './code-block-highlight';\nimport { KbqCodeBlockFile, KbqTabLinkTemplateContext } from './types';\n\n/** Localization configuration provider. */\nexport const KBQ_CODE_BLOCK_LOCALE_CONFIGURATION = new InjectionToken<KbqCodeBlockLocaleConfiguration>(\n 'KBQ_CODE_BLOCK_LOCALE_CONFIGURATION',\n { factory: () => ruRULocaleData.codeBlock }\n);\n\n/** Utility provider for `KBQ_CODE_BLOCK_LOCALE_CONFIGURATION`. */\nexport const kbqCodeBlockLocaleConfigurationProvider = (configuration: KbqCodeBlockLocaleConfiguration): Provider => ({\n provide: KBQ_CODE_BLOCK_LOCALE_CONFIGURATION,\n useValue: configuration\n});\n\n/** Fallback file name for code block if file name is not specified. */\nexport const KBQ_CODE_BLOCK_FALLBACK_FILE_NAME = new InjectionToken<string>('KBQ_CODE_BLOCK_FALLBACK_FILE_NAME', {\n factory: () => 'code'\n});\n\n/** Utility provider for `KBQ_CODE_BLOCK_FALLBACK_FILE_NAME`. */\nexport const kbqCodeBlockFallbackFileNameProvider = (fileName: string): Provider => ({\n provide: KBQ_CODE_BLOCK_FALLBACK_FILE_NAME,\n useValue: fileName\n});\n\n/** Marks a template as a custom tab link. */\n@Directive({\n standalone: true,\n selector: 'ng-template[kbqCodeBlockTabLinkContent]',\n exportAs: 'kbqCodeBlockTabLinkContent'\n})\nexport class KbqCodeBlockTabLinkContent {}\n\n/**\n * Component which highlights blocks of code.\n */\n@Component({\n standalone: true,\n imports: [\n KbqTabsModule,\n KbqButtonModule,\n KbqCodeBlockHighlight,\n A11yModule,\n CdkScrollableModule,\n KbqToolTipModule,\n KbqIconModule,\n NgTemplateOutlet\n ],\n selector: 'kbq-code-block',\n exportAs: 'kbqCodeBlock',\n templateUrl: './code-block.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_hide-tabs]': 'hideTabs',\n '[class.kbq-code-block_no-border]': 'noBorder || filled',\n '[class.kbq-code-block_soft-wrap]': 'softWrap',\n '[class.kbq-code-block_view-all]': 'viewAll'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqCodeBlock implements AfterViewInit {\n @ViewChild('copyButtonTooltip') private readonly copyButtonTooltip?: KbqTooltipTrigger;\n /**\n * Reference to the scrollable code content.\n */\n @ViewChild(CdkScrollable) readonly scrollableCodeContent: CdkScrollable;\n\n /** @docs-private */\n @ContentChild(KbqCodeBlockTabLinkContent, { read: TemplateRef })\n protected readonly tabLinkTemplate: TemplateRef<KbqTabLinkTemplateContext>;\n\n /** Whether to display line numbers. */\n @Input({ transform: booleanAttribute }) lineNumbers = false;\n\n /** Whether the code block should be filled. */\n @Input({ transform: booleanAttribute }) filled: boolean = false;\n\n /** Added soft wrap toggle button. */\n @Input({ transform: booleanAttribute }) canToggleSoftWrap: boolean = false;\n\n /** Whether sequences of whitespace should be preserved. */\n @Input({ transform: booleanAttribute }) softWrap: boolean = false;\n\n /**\n * Output to support two-way binding on `[(softWrap)]` property.\n */\n @Output() readonly softWrapChange = new EventEmitter<boolean>();\n\n /**\n * Allows to view all the code, otherwise it will be hidden.\n * Works only with `maxHeight` property.\n */\n @Input({ transform: booleanAttribute }) viewAll: boolean = false;\n\n /**\n * Output to support two-way binding on `[(viewAll)]` property.\n */\n @Output() readonly viewAllChange = new EventEmitter<boolean>();\n\n /**\n * Maximum height of the code block content, other parts will be hidden.\n * Can be toggled by `viewAll` property.\n */\n @Input({ transform: numberAttribute }) maxHeight: number;\n\n /**\n * @docs-private\n */\n protected get calculatedMaxHeight(): number | null {\n return this.maxHeight > 0 && !this.viewAll ? this.maxHeight : null;\n }\n\n /**\n * @deprecated Will be removed in next major release, use `canDownload` instead.\n *\n * @docs-private\n */\n @Input({ transform: booleanAttribute })\n set canLoad(value: boolean) {\n this.canDownload = value;\n }\n\n /** Added download code button. */\n @Input({ transform: booleanAttribute }) canDownload: boolean = false;\n\n /** Added copy code button. */\n @Input({ transform: booleanAttribute }) canCopy: boolean = true;\n\n /**\n * @deprecated Will be removed in next major release, use `files` instead.\n */\n @Input()\n set codeFiles(files: KbqCodeBlockFile[]) {\n this.files = files;\n }\n\n /**\n * @TODO Mark as `required`, after removing `codeFiles`\n *\n * Files to display.\n */\n @Input()\n get files(): KbqCodeBlockFile[] {\n return this._files;\n }\n\n set files(files: KbqCodeBlockFile[]) {\n this._files = files;\n\n if (this._files.length < this.activeFileIndex) {\n this.onSelectedTabChange(0);\n }\n\n if (this._files.length === 1 && !this._files[0].filename) {\n this.hideTabs = true;\n }\n }\n\n private _files: KbqCodeBlockFile[] = [];\n\n /** Defines which file (index) is active. */\n @Input({ transform: numberAttribute }) activeFileIndex = 0;\n\n /**\n * Output to support two-way binding on `[(activeFileIndex)]` property.\n */\n @Output() readonly activeFileIndexChange = new EventEmitter<number>();\n\n /** Whether to hide border. */\n @Input({ transform: booleanAttribute }) noBorder: boolean = false;\n\n /**\n * Whether to hide header tabs.\n * Always `true` if there is only one file without filename.\n * Makes actionbar floating if tabs are hidden.\n */\n @Input({ transform: booleanAttribute })\n get hideTabs(): boolean {\n return this._hideTabs;\n }\n\n set hideTabs(value: boolean) {\n this._hideTabs = value;\n\n this.setupActionbarDisplay();\n }\n\n private _hideTabs: boolean = false;\n\n /**\n * Component locale configuration.\n *\n * @docs-private\n */\n protected get localeConfiguration(): KbqCodeBlockLocaleConfiguration {\n return this._localeConfiguration;\n }\n\n private _localeConfiguration: KbqCodeBlockLocaleConfiguration = inject(KBQ_CODE_BLOCK_LOCALE_CONFIGURATION);\n\n /**\n * Code content tab index.\n *\n * @docs-private\n */\n protected get codeContentTabIndex(): number {\n return this.canCodeContentBeFocused ? 0 : -1;\n }\n\n /**\n * Determines whether the code content can be focused.\n *\n * This checks if the scrollable code content element is present,\n * has a scroll, and the calculated maximum height is not set.\n */\n private get canCodeContentBeFocused(): boolean {\n const element = this.scrollableCodeContent?.getElementRef().nativeElement;\n\n return element && this.hasScroll(element) && !this.calculatedMaxHeight;\n }\n\n /**\n * @docs-private\n */\n protected readonly componentColor = KbqComponentColors;\n /**\n * @docs-private\n */\n protected readonly buttonStyle = KbqButtonStyles;\n\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n private readonly destroyRef = inject(DestroyRef);\n private readonly renderer = inject(Renderer2);\n private readonly platform = inject(Platform);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly clipboard = inject(Clipboard);\n private readonly domSanitizer = inject(DomSanitizer);\n private readonly document = inject<Document>(DOCUMENT);\n /**\n * @docs-private\n */\n protected readonly fallbackFileName = inject(KBQ_CODE_BLOCK_FALLBACK_FILE_NAME);\n private readonly window = inject(KBQ_WINDOW);\n\n constructor() {\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n }\n\n ngAfterViewInit(): void {\n this.handleScroll();\n this.handleHover();\n\n // Setup initial actionbar display state\n this.setupActionbarDisplay();\n\n this.copyButtonTooltip?.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((isVisible) => {\n if (isVisible) {\n this.copyButtonTooltip!.content = this.localeConfiguration.copyTooltip;\n }\n });\n\n // Should call `markForCheck` to ensure the `codeContentTabIndex` is updated after the view is initialized,\n // for correct focus behavior.\n this.changeDetectorRef.markForCheck();\n }\n\n /**\n * Toggles the `viewAll` property.\n *\n * When `viewAll` is set to `true`, the content of the code block will be\n * displayed in its entirety. When set to `false`, the content will be\n * limited to the `maxHeight` property. If the content exceeds the\n * `maxHeight`, it will be scrolled to the top and the `viewAll` button\n * will be displayed.\n */\n toggleViewAll(): void {\n this.viewAll = !this.viewAll;\n\n if (!this.viewAll) {\n this.scrollableCodeContent.scrollTo({ top: 0, behavior: 'instant' });\n }\n\n this.viewAllChange.emit(this.viewAll);\n }\n\n /**\n * Toggles `softWrap` property.\n *\n * When `softWrap` is set to `true`, the content of the code block will be\n * wrapped if it exceeds the height of the component. When set to `false`\n * the content will not be wrapped.\n */\n toggleSoftWrap(): void {\n this.softWrap = !this.softWrap;\n this.softWrapChange.emit(this.softWrap);\n }\n\n /**\n * Handles the change of the selected tab by updating the active file index\n * and scrolling to the top of the scrollable content.\n *\n * @param index - The index of the newly selected tab.\n *\n * @docs-private\n */\n protected onSelectedTabChange(index: number): void {\n if (this.activeFileIndex !== index) {\n this.activeFileIndex = index;\n this.activeFileIndexChange.emit(this.activeFileIndex);\n this.scrollableCodeContent.scrollTo({ top: 0, behavior: 'instant' });\n }\n }\n\n /**\n * Handles the hover event on the code block element and updates the actionbar display accordingly.\n */\n private handleHover(): void {\n merge(\n fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mouseenter'),\n fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mouseleave')\n )\n .pipe(debounceTime(100), takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.setupActionbarDisplay(event?.type === 'mouseenter');\n });\n }\n\n /**\n * Handles the scroll event on the scrollable code content element and updates the header shadow accordingly.\n */\n private handleScroll(): void {\n this.scrollableCodeContent\n .elementScrolled()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.setupHeaderShadow(this.scrollableCodeContent.measureScrollOffset('top') > 0);\n });\n }\n\n /**\n * Adds or removes the shadow class from the code block based on the specified condition.\n *\n * @param shouldShowShadow - A boolean indicating whether to add or remove the shadow class.\n */\n private setupHeaderShadow(shouldShowShadow: boolean): void {\n const className = 'kbq-code-block_header-with-shadow';\n\n if (shouldShowShadow) {\n this.renderer.addClass(this.elementRef.nativeElement, className);\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, className);\n }\n }\n\n /**\n * Adds or removes the actionbar display class from the code block based on the specified condition.\n *\n * The actionbar is always visible on mobile devices and when the tabs are visible.\n * Otherwise, the actionbar is only visible when the mouse is hovered over the code block.\n *\n * @param shouldShowActionbar - A boolean indicating whether the actionbar should be visible.\n */\n private setupActionbarDisplay(shouldShowActionbar?: boolean): void {\n const className = 'kbq-code-block_show-actionbar';\n\n // Should always show actionbar on Mobile devices\n if (this.platform.IOS || this.platform.ANDROID) {\n this.renderer.addClass(this.elementRef.nativeElement, className);\n\n return;\n }\n\n // Should always show actionbar when tabs are visible\n if (!this.hideTabs) {\n this.renderer.addClass(this.elementRef.nativeElement, className);\n\n return;\n }\n\n if (typeof shouldShowActionbar === 'undefined') {\n return;\n }\n\n if (shouldShowActionbar) {\n this.renderer.addClass(this.elementRef.nativeElement, className);\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, className);\n }\n }\n\n /** Whether the element has scroll. */\n private hasScroll({ scrollHeight, scrollWidth, clientHeight, clientWidth }: HTMLElement): boolean {\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\n }\n\n /**\n * Handles the enter keydown event on `viewAll` button.\n *\n * @docs-private\n */\n protected onViewAllEnterKeydown(event: Event): void {\n event.preventDefault();\n\n this.toggleViewAll();\n\n if (this.canCodeContentBeFocused) {\n this.focusMonitor.focusVia(this.scrollableCodeContent.getElementRef().nativeElement, 'keyboard');\n }\n }\n\n private updateLocaleParams = (): void => {\n this._localeConfiguration = this.localeService?.getParams('codeBlock');\n\n this.changeDetectorRef.markForCheck();\n };\n\n /**\n * Copies the file code to the clipboard.\n *\n * If the copy was successful, the copy button tooltip content is updated\n * to show the \"copied\" message.\n *\n * @docs-private\n */\n protected copyCode(): void {\n const file = this.files[this.activeFileIndex];\n\n if (this.clipboard.copy(file.content) && this.copyButtonTooltip) {\n this.copyButtonTooltip.content = this.localeConfiguration.copiedTooltip;\n }\n }\n\n /**\n * Opens the file link in a new window.\n *\n * @docs-private\n */\n protected openLink(): void {\n const file = this.files[this.activeFileIndex];\n const safeURL = this.domSanitizer.sanitize(SecurityContext.URL, file.link!);\n\n if (safeURL) {\n this.window.open(safeURL.toString(), '_blank');\n }\n }\n\n /**\n * Downloads the file as a blob.\n *\n * Creates a link with a blob as href and the file name as download attribute.\n * Then simulates a click event on the link to initiate the download.\n *\n * @docs-private\n */\n protected downloadCode(): void {\n const file = this.files[this.activeFileIndex];\n const blob = new Blob([file.content], { type: 'text/plain' });\n const url = URL.createObjectURL(blob);\n const link = this.document.createElement('a');\n\n link.setAttribute('href', url);\n link.setAttribute('download', file.filename || this.fallbackFileName);\n link.click();\n }\n}\n","@let file = files[activeFileIndex];\n\n<div class=\"kbq-code-block__header\">\n @if (!hideTabs) {\n <div class=\"kbq-code-block__header-tabs\">\n <div kbqTabNavBar transparent [tabNavPanel]=\"tabPanel\">\n @for (file of files; track file) {\n <!-- Mark tab-link as readonly if only single file present -->\n <div\n kbqTabLink\n [active]=\"$count > 1 && activeFileIndex === $index\"\n [style.pointer-events]=\"$count === 1 ? 'none' : null\"\n (click)=\"onSelectedTabChange($index)\"\n >\n @if (tabLinkTemplate) {\n <ng-container\n *ngTemplateOutlet=\"tabLinkTemplate; context: { $implicit: file, fallbackFileName }\"\n />\n } @else {\n {{ file.filename || fallbackFileName }}\n }\n </div>\n }\n </div>\n </div>\n }\n\n <div class=\"kbq-code-block__actionbar\">\n @if (hideTabs) {\n <div class=\"kbq-code-block__actionbar__fade-gradient\"></div>\n }\n\n <div class=\"kbq-code-block__actionbar__button-stack\">\n @if (canToggleSoftWrap) {\n <button\n kbq-button\n class=\"kbq-code-block__actionbar__soft-wrap-button\"\n [color]=\"componentColor.Contrast\"\n [kbqStyle]=\"buttonStyle.Transparent\"\n [kbqTooltip]=\"\n softWrap ? localeConfiguration.softWrapOffTooltip : localeConfiguration.softWrapOnTooltip\n \"\n (click)=\"toggleSoftWrap()\"\n >\n @if (softWrap) {\n <i kbq-icon=\"kbq-wrap-text-slash_16\"></i>\n } @else {\n <i kbq-icon=\"kbq-wrap-text_16\"></i>\n }\n </button>\n }\n\n @if (canDownload) {\n <button\n kbq-button\n class=\"kbq-code-block__actionbar__download-button\"\n [color]=\"componentColor.Contrast\"\n [kbqStyle]=\"buttonStyle.Transparent\"\n [kbqTooltip]=\"localeConfiguration.downloadTooltip\"\n (click)=\"downloadCode()\"\n >\n <i kbq-icon=\"kbq-arrow-down-to-line_16\"></i>\n </button>\n }\n\n @if (canCopy) {\n <div #copyButtonTooltip=\"kbqTooltip\" [kbqTooltip]=\"localeConfiguration.copyTooltip\">\n <button\n kbq-button\n class=\"kbq-code-block__actionbar__copy-button\"\n [color]=\"componentColor.Contrast\"\n [kbqStyle]=\"buttonStyle.Transparent\"\n (click)=\"copyCode()\"\n >\n <i kbq-icon=\"kbq-file-multiple-o_16\"></i>\n </button>\n </div>\n }\n\n @if (file.link) {\n <button\n kbq-button\n class=\"kbq-code-block__actionbar__link-button\"\n [color]=\"componentColor.Contrast\"\n [kbqStyle]=\"buttonStyle.Transparent\"\n [kbqTooltip]=\"localeConfiguration.openExternalSystemTooltip\"\n (click)=\"openLink()\"\n >\n <i kbq-icon=\"kbq-arrow-up-right-from-square_16\"></i>\n </button>\n }\n </div>\n </div>\n</div>\n\n<div\n #tabPanel=\"kbqTabNavPanel\"\n cdkMonitorElementFocus\n cdkScrollable\n kbqTabNavPanel\n class=\"kbq-code-block__main kbq-scrollbar\"\n [style.max-height.px]=\"calculatedMaxHeight\"\n [tabIndex]=\"codeContentTabIndex\"\n>\n <pre\n class=\"kbq-code-block__pre\"\n ><code kbqCodeBlockHighlight class=\"kbq-code-block__code\" [file]=\"file\"></code></pre>\n\n @if (maxHeight) {\n <div\n class=\"kbq-code-block__view-all\"\n [class.kbq-code-block__view-all_collapsed]=\"!viewAll\"\n [class.kbq-code-block__view-all_expanded]=\"viewAll\"\n >\n <div class=\"kbq-code-block__view-all__wrapper\">\n <button\n kbq-button\n class=\"kbq-code-block__view-all__button\"\n [color]=\"componentColor.Theme\"\n [kbqStyle]=\"buttonStyle.Transparent\"\n (click)=\"toggleViewAll()\"\n (keydown.enter)=\"onViewAllEnterKeydown($event)\"\n >\n @if (viewAll) {\n <i kbq-icon=\"kbq-chevron-up_16\"></i>\n {{ localeConfiguration.viewLessText }}\n } @else {\n <i kbq-icon=\"kbq-chevron-down_16\"></i>\n {{ localeConfiguration.viewAllText }}\n }\n </button>\n </div>\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { KbqCodeBlock, KbqCodeBlockTabLinkContent } from './code-block';\n\nconst COMPONENTS = [\n KbqCodeBlock,\n KbqCodeBlockTabLinkContent\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqCodeBlockModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -4,7 +4,6 @@ import { inject, ElementRef, Directive, Input, InjectionToken, isDevMode, NgModu
4
4
  import { BidiModule, Directionality } from '@angular/cdk/bidi';
5
5
  import { DOCUMENT, CommonModule } from '@angular/common';
6
6
  import { coerceBooleanProperty, coerceElement, coerceNumberProperty, coerceCssPixelValue } from '@angular/cdk/coercion';
7
- import * as i1$1 from '@angular/cdk/a11y';
8
7
  import { FocusMonitor } from '@angular/cdk/a11y';
9
8
  import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
10
9
  import { merge, fromEvent, map, BehaviorSubject, Subject, interval, Subscription, pairwise } from 'rxjs';
@@ -804,7 +803,7 @@ const enUSLocaleData = {
804
803
  customPeriodFrom: 'from',
805
804
  customPeriodTo: 'to',
806
805
  customPeriodErrorHint: 'The period cannot start later than it ends',
807
- backToPeriodSelection: 'Back to selecting the period'
806
+ backToPeriodSelection: 'Back'
808
807
  }
809
808
  },
810
809
  clampedText: {
@@ -1013,7 +1012,7 @@ const esLALocaleData = {
1013
1012
  customPeriodFrom: 'desde',
1014
1013
  customPeriodTo: 'hasta',
1015
1014
  customPeriodErrorHint: 'El inicio del período no puede estar después del fin',
1016
- backToPeriodSelection: 'Volver a la selección del período'
1015
+ backToPeriodSelection: 'Atrás'
1017
1016
  }
1018
1017
  },
1019
1018
  clampedText: {
@@ -1222,7 +1221,7 @@ const ptBRLocaleData = {
1222
1221
  customPeriodFrom: 'de',
1223
1222
  customPeriodTo: 'até',
1224
1223
  customPeriodErrorHint: 'O período não pode começar depois de quando acaba',
1225
- backToPeriodSelection: 'Voltar à seleção de período'
1224
+ backToPeriodSelection: 'Voltar'
1226
1225
  }
1227
1226
  },
1228
1227
  clampedText: {
@@ -1432,7 +1431,7 @@ const ruRULocaleData = {
1432
1431
  customPeriodFrom: 'с',
1433
1432
  customPeriodTo: 'по',
1434
1433
  customPeriodErrorHint: 'Начало периода не может быть позже окончания',
1435
- backToPeriodSelection: 'Назад к выбору периода'
1434
+ backToPeriodSelection: 'Назад'
1436
1435
  }
1437
1436
  },
1438
1437
  clampedText: {
@@ -1656,7 +1655,7 @@ const tkTMLocaleData = {
1656
1655
  customPeriodFrom: 'başy',
1657
1656
  customPeriodTo: 'soňy',
1658
1657
  customPeriodErrorHint: 'Döwür gutarýan wagtyndan soň başlap bilmeýär',
1659
- backToPeriodSelection: 'Döwri saýlamaga dolan'
1658
+ backToPeriodSelection: 'Yzyna'
1660
1659
  }
1661
1660
  },
1662
1661
  clampedText: {
@@ -3423,18 +3422,36 @@ class FileValidators {
3423
3422
  }
3424
3423
  }
3425
3424
 
3425
+ const HTML_ESCAPES = { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' };
3426
+ const HTML_SPECIAL_CHARS = /[&<>"']/;
3427
+ const HTML_SPECIAL_CHARS_GLOBAL = new RegExp(HTML_SPECIAL_CHARS.source, 'g');
3428
+ /** @docs-private */
3429
+ const kbqHighlightMark = (text) => `<mark class="kbq-highlight">${text}</mark>`;
3426
3430
  function escapeRegExp(value) {
3427
3431
  if (value) {
3428
3432
  return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
3429
3433
  }
3430
3434
  return value;
3431
3435
  }
3436
+ function escapeHtml(value) {
3437
+ if (!HTML_SPECIAL_CHARS.test(value))
3438
+ return value;
3439
+ return value.replace(HTML_SPECIAL_CHARS_GLOBAL, (chr) => HTML_ESCAPES[chr] ?? chr);
3440
+ }
3432
3441
  class KbqHighlightPipe {
3433
3442
  transform(value, args) {
3434
- if (!args || typeof args !== 'string') {
3435
- return value;
3436
- }
3437
- return value.replace(new RegExp(`(${escapeRegExp(args)})`, 'gi'), '<mark class="kbq-highlight">$1</mark>');
3443
+ if (typeof value !== 'string')
3444
+ return '';
3445
+ if (!args || typeof args !== 'string')
3446
+ return escapeHtml(value);
3447
+ const parts = value.split(new RegExp(`(${escapeRegExp(args)})`, 'gi'));
3448
+ return parts
3449
+ .map((part, i) => {
3450
+ const escaped = escapeHtml(part);
3451
+ const isMatch = i % 2 === 1;
3452
+ return isMatch ? kbqHighlightMark(escaped) : escaped;
3453
+ })
3454
+ .join('');
3438
3455
  }
3439
3456
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqHighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
3440
3457
  /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqHighlightPipe, name: "mcHighlight" }); }
@@ -3562,6 +3579,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
3562
3579
 
3563
3580
  const KBQ_OPTION_ACTION_PARENT = new InjectionToken('KBQ_OPTION_ACTION_PARENT');
3564
3581
  class KbqOptionActionComponent {
3582
+ constructor() {
3583
+ this.nativeElement = kbqInjectNativeElement();
3584
+ this.focusMonitor = inject(FocusMonitor);
3585
+ this.option = inject(KBQ_OPTION_ACTION_PARENT);
3586
+ this._disabled = false;
3587
+ this.hasFocus = false;
3588
+ this.destroyRef = inject(DestroyRef);
3589
+ }
3565
3590
  get disabled() {
3566
3591
  return this._disabled;
3567
3592
  }
@@ -3573,17 +3598,9 @@ class KbqOptionActionComponent {
3573
3598
  get active() {
3574
3599
  return this.hasFocus || !!this.option.dropdownTrigger?.opened;
3575
3600
  }
3576
- constructor(elementRef, focusMonitor, option) {
3577
- this.elementRef = elementRef;
3578
- this.focusMonitor = focusMonitor;
3579
- this.option = option;
3580
- this._disabled = false;
3581
- this.hasFocus = false;
3582
- this.destroyRef = inject(DestroyRef);
3583
- }
3584
3601
  ngAfterViewInit() {
3585
3602
  this.focusMonitor
3586
- .monitor(this.elementRef.nativeElement, true)
3603
+ .monitor(this.nativeElement, true)
3587
3604
  .pipe(takeUntilDestroyed(this.destroyRef))
3588
3605
  .subscribe((result) => (this.hasFocus = !!result));
3589
3606
  if (!this.option.dropdownTrigger)
@@ -3591,19 +3608,21 @@ class KbqOptionActionComponent {
3591
3608
  this.option.dropdownTrigger.restoreFocus = false;
3592
3609
  this.option.dropdownTrigger.dropdownClosed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
3593
3610
  this.preventShowingTooltip();
3594
- const destroyReason = this.option.dropdownTrigger.lastDestroyReason === 'keydown' ? 'keyboard' : 'program';
3595
- this.focus(destroyReason);
3611
+ const lastDestroyReason = this.option.dropdownTrigger.lastDestroyReason;
3612
+ if (lastDestroyReason) {
3613
+ this.focus(lastDestroyReason === 'keydown' ? 'keyboard' : 'program');
3614
+ }
3596
3615
  });
3597
3616
  }
3598
3617
  ngOnDestroy() {
3599
- this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);
3618
+ this.focusMonitor.stopMonitoring(this.nativeElement);
3600
3619
  }
3601
3620
  focus(origin, options) {
3602
3621
  if (this.focusMonitor && origin) {
3603
- this.focusMonitor.focusVia(this.elementRef.nativeElement, origin, options);
3622
+ this.focusMonitor.focusVia(this.nativeElement, origin, options);
3604
3623
  }
3605
3624
  else {
3606
- this.elementRef.nativeElement.focus();
3625
+ this.nativeElement.focus();
3607
3626
  }
3608
3627
  this.hasFocus = true;
3609
3628
  }
@@ -3631,7 +3650,7 @@ class KbqOptionActionComponent {
3631
3650
  this.option.tooltipTrigger.disabled = true;
3632
3651
  setTimeout(() => (this.option.tooltipTrigger.disabled = false));
3633
3652
  }
3634
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqOptionActionComponent, deps: [{ token: i0.ElementRef }, { token: i1$1.FocusMonitor }, { token: KBQ_OPTION_ACTION_PARENT }], target: i0.ɵɵFactoryTarget.Component }); }
3653
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqOptionActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3635
3654
  /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: KbqOptionActionComponent, selector: "kbq-option-action", inputs: { disabled: ["disabled", "disabled", booleanAttribute] }, host: { listeners: { "click": "onClick($event)", "keydown": "onKeyDown($event)" }, properties: { "class.kbq-expanded": "false", "class.kbq-disabled": "disabled", "attr.disabled": "disabled || null", "attr.tabIndex": "-1" }, classAttribute: "kbq-option-action" }, exportAs: ["kbqOptionAction"], ngImport: i0, template: `
3636
3655
  <ng-content select="[kbq-icon]">
3637
3656
  <i class="kbq kbq-icon kbq-contrast-fade kbq-ellipsis-vertical_16"></i>
@@ -3653,10 +3672,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
3653
3672
  '(click)': 'onClick($event)',
3654
3673
  '(keydown)': 'onKeyDown($event)'
3655
3674
  }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".kbq-option-action{display:flex;align-items:center;justify-content:center;cursor:pointer;outline:none;border:var(--kbq-size-3xs) solid transparent;border-radius:var(--kbq-size-xs);width:var(--kbq-size-xl);height:var(--kbq-size-xl)}.kbq-option-action:not(.kbq-disabled):hover .kbq-icon,.kbq-option-action:not(.kbq-disabled):focus .kbq-icon{color:var(--kbq-icon-button-fade-contrast-states-hover)}.kbq-option-action.kbq-disabled{cursor:default}.kbq-option-action.cdk-keyboard-focused{border-color:var(--kbq-states-line-focus-theme)}.kbq-option-action:active,.kbq-option-action.kbq-pressed{background-color:var(--kbq-background-transparent)}.kbq-option-action:active .kbq-icon.kbq-empty,.kbq-option-action.kbq-pressed .kbq-icon.kbq-empty{color:var(--kbq-states-icon-contrast-fade-active)}.kbq-option-action:hover .kbq-icon.kbq-empty{color:var(--kbq-states-icon-contrast-fade-hover)}.kbq-option-action.kbq-disabled{background-color:var(--kbq-background-transparent)}.kbq-option-action.kbq-disabled .kbq-icon.kbq-empty{color:var(--kbq-states-icon-disabled)}\n"] }]
3656
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1$1.FocusMonitor }, { type: undefined, decorators: [{
3657
- type: Inject,
3658
- args: [KBQ_OPTION_ACTION_PARENT]
3659
- }] }], propDecorators: { disabled: [{
3675
+ }], propDecorators: { disabled: [{
3660
3676
  type: Input,
3661
3677
  args: [{ transform: booleanAttribute }]
3662
3678
  }] } });
@@ -4631,7 +4647,8 @@ class KbqPopUpTrigger {
4631
4647
  this.direction = inject(Directionality, { optional: true });
4632
4648
  this.destroyRef = inject(DestroyRef);
4633
4649
  this.scrollable = inject(CdkScrollable, { optional: true });
4634
- this.isOpen = false;
4650
+ this.popUpChangeDetectorRef = inject(ChangeDetectorRef);
4651
+ this._isOpen = false;
4635
4652
  this.enterDelay = 0;
4636
4653
  this.leaveDelay = 0;
4637
4654
  this.placement = PopUpPlacements.Top;
@@ -4684,6 +4701,13 @@ class KbqPopUpTrigger {
4684
4701
  this.elementRef.nativeElement.removeEventListener(event, listener);
4685
4702
  };
4686
4703
  }
4704
+ get isOpen() {
4705
+ return this._isOpen;
4706
+ }
4707
+ set isOpen(value) {
4708
+ this._isOpen = value;
4709
+ this.popUpChangeDetectorRef.markForCheck();
4710
+ }
4687
4711
  ngOnInit() {
4688
4712
  this.initListeners();
4689
4713
  }
@@ -5307,11 +5331,11 @@ const kbqDisableLegacyValidationDirectiveProvider = () => ({
5307
5331
  useValue: { useValidation: false }
5308
5332
  });
5309
5333
 
5310
- const VERSION = new Version('18.39.2+sha-3fb71e1');
5334
+ const VERSION = new Version('18.39.4+sha-e1d64e9');
5311
5335
 
5312
5336
  /**
5313
5337
  * Generated bundle index. Do not edit.
5314
5338
  */
5315
5339
 
5316
- export { ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT, AbsoluteDateFormatterImpurePipe, AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterImpurePipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterImpurePipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterImpurePipe, AbsoluteShortDateTimeFormatterPipe, AnimationCurves, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, BaseFormatterPipe, DateAdapter, DateFormatter, EXTENDED_OVERLAY_POSITIONS, EmptyFocusTrapStrategy, 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_DEFAULT_PRECISION_SEPARATOR, KBQ_FORM_FIELD_REF, KBQ_INVALID_VALUE_ERROR, KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KBQ_LOCALE_SERVICE_LANG_ATTR_NAME, KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS, KBQ_NUMBER_FORMATTER_OPTIONS, KBQ_OPTION_ACTION_PARENT, KBQ_OPTION_PARENT_COMPONENT, KBQ_PARENT_ANIMATION_COMPONENT, KBQ_PARENT_POPUP, KBQ_SANITY_CHECKS, KBQ_SELECT_SCROLL_STRATEGY, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER, KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD, KBQ_SIZE_UNITS_CONFIG, KBQ_SIZE_UNITS_DEFAULT_CONFIG, KBQ_TITLE_TEXT_REF, KBQ_VALIDATION, KBQ_WINDOW, KbqAbstractSelect, KbqActionContainer, KbqAnimationCurves, KbqAnimationDurations, KbqColorDirective, KbqCommonModule, KbqComponentColors, KbqDataSizePipe, KbqDecimalPipe, KbqDefaultThemes, KbqErrorStateTracker, KbqFieldSizingContent, KbqFocusMonitor, KbqForm, KbqFormElement, KbqFormattersModule, KbqFormsModule, KbqHighlightModule, KbqHighlightPipe, KbqHover, KbqLine, KbqLineModule, KbqLineSetter, KbqLocaleService, KbqLocaleServiceModule, KbqMeasureScrollbarService, KbqMeasurementSystem, KbqNormalizeWhitespace, KbqOptgroup, KbqOption, KbqOptionActionComponent, KbqOptionBase, KbqOptionModule, KbqOptionSelectionChange, KbqPopUp, KbqPopUpTrigger, KbqPseudoCheckbox, KbqPseudoCheckboxModule, KbqReadStateDirective, KbqRectangleItem, 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, RangeDateFormatterImpurePipe, RangeDateFormatterPipe, RangeDateTimeFormatterImpurePipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterImpurePipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterImpurePipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterImpurePipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterImpurePipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterImpurePipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterImpurePipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterImpurePipe, RelativeShortDateTimeFormatterPipe, SELECT_PANEL_VIEWPORT_PADDING, ShowOnControlDirtyErrorStateMatcher, ShowOnFormSubmitErrorStateMatcher, TOP_LEFT_POSITION_PRIORITY, TOP_POSITION_PRIORITY, TOP_RIGHT_POSITION_PRIORITY, ThemePalette, ThemeService, VERSION, applyPopupMargins, checkAndNormalizeLocalizedNumber, countGroupLabelsBeforeOption, defaultOffsetY, enUSFormattersData, enUSLocaleData, esLAFormattersData, esLALocaleData, escapeRegExp, fadeAnimation, formatDataSize, formatNumberWithLocale, getFormattedSizeParts, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getNodesWithoutComments, getOptionScrollPosition, isBoolean, isMac, isNull, isUndefined, isWithin, kbqDisableLegacyValidationDirectiveProvider, kbqErrorStateMatcherProvider, kbqFilesizeFormatterConfigurationProvider, kbqInjectNativeElement, kbqLocaleServiceLangAttrNameProvider, kbqSelectAnimations, kbqSelectScrollStrategyProviderFactory, leftIconClassName, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, normalizeNumber, numberByParts, ptBRFormattersData, ptBRLocaleData, rightIconClassName, ruRUFormattersData, ruRULocaleData, selectEvents, tkTMFormattersData, tkTMLocaleData, toBoolean, validationTooltipHideDelay, validationTooltipShowDelay };
5340
+ export { ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT, AbsoluteDateFormatterImpurePipe, AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterImpurePipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterImpurePipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterImpurePipe, AbsoluteShortDateTimeFormatterPipe, AnimationCurves, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, BaseFormatterPipe, DateAdapter, DateFormatter, EXTENDED_OVERLAY_POSITIONS, EmptyFocusTrapStrategy, 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_DEFAULT_PRECISION_SEPARATOR, KBQ_FORM_FIELD_REF, KBQ_INVALID_VALUE_ERROR, KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KBQ_LOCALE_SERVICE_LANG_ATTR_NAME, KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS, KBQ_NUMBER_FORMATTER_OPTIONS, KBQ_OPTION_ACTION_PARENT, KBQ_OPTION_PARENT_COMPONENT, KBQ_PARENT_ANIMATION_COMPONENT, KBQ_PARENT_POPUP, KBQ_SANITY_CHECKS, KBQ_SELECT_SCROLL_STRATEGY, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER, KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD, KBQ_SIZE_UNITS_CONFIG, KBQ_SIZE_UNITS_DEFAULT_CONFIG, KBQ_TITLE_TEXT_REF, KBQ_VALIDATION, KBQ_WINDOW, KbqAbstractSelect, KbqActionContainer, KbqAnimationCurves, KbqAnimationDurations, KbqColorDirective, KbqCommonModule, KbqComponentColors, KbqDataSizePipe, KbqDecimalPipe, KbqDefaultThemes, KbqErrorStateTracker, KbqFieldSizingContent, KbqFocusMonitor, KbqForm, KbqFormElement, KbqFormattersModule, KbqFormsModule, KbqHighlightModule, KbqHighlightPipe, KbqHover, KbqLine, KbqLineModule, KbqLineSetter, KbqLocaleService, KbqLocaleServiceModule, KbqMeasureScrollbarService, KbqMeasurementSystem, KbqNormalizeWhitespace, KbqOptgroup, KbqOption, KbqOptionActionComponent, KbqOptionBase, KbqOptionModule, KbqOptionSelectionChange, KbqPopUp, KbqPopUpTrigger, KbqPseudoCheckbox, KbqPseudoCheckboxModule, KbqReadStateDirective, KbqRectangleItem, 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, RangeDateFormatterImpurePipe, RangeDateFormatterPipe, RangeDateTimeFormatterImpurePipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterImpurePipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterImpurePipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterImpurePipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterImpurePipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterImpurePipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterImpurePipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterImpurePipe, RelativeShortDateTimeFormatterPipe, SELECT_PANEL_VIEWPORT_PADDING, ShowOnControlDirtyErrorStateMatcher, ShowOnFormSubmitErrorStateMatcher, TOP_LEFT_POSITION_PRIORITY, TOP_POSITION_PRIORITY, TOP_RIGHT_POSITION_PRIORITY, ThemePalette, ThemeService, VERSION, applyPopupMargins, checkAndNormalizeLocalizedNumber, countGroupLabelsBeforeOption, defaultOffsetY, enUSFormattersData, enUSLocaleData, esLAFormattersData, esLALocaleData, escapeRegExp, fadeAnimation, formatDataSize, formatNumberWithLocale, getFormattedSizeParts, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getNodesWithoutComments, getOptionScrollPosition, isBoolean, isMac, isNull, isUndefined, isWithin, kbqDisableLegacyValidationDirectiveProvider, kbqErrorStateMatcherProvider, kbqFilesizeFormatterConfigurationProvider, kbqHighlightMark, kbqInjectNativeElement, kbqLocaleServiceLangAttrNameProvider, kbqSelectAnimations, kbqSelectScrollStrategyProviderFactory, leftIconClassName, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, normalizeNumber, numberByParts, ptBRFormattersData, ptBRLocaleData, rightIconClassName, ruRUFormattersData, ruRULocaleData, selectEvents, tkTMFormattersData, tkTMLocaleData, toBoolean, validationTooltipHideDelay, validationTooltipShowDelay };
5317
5341
  //# sourceMappingURL=koobiq-components-core.mjs.map