@kyndryl-design-system/shidoka-applications 2.120.3 → 2.120.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.
@@ -324,6 +324,12 @@ pre.line-numbers .line-numbers-rows > span:before {
324
324
  transform: rotate(180deg);
325
325
  }
326
326
 
327
+ .code-view__container.shidoka-syntax-theme pre[class*=language-]::selection,
328
+ .code-view__container.shidoka-syntax-theme code[class*=language-] ::selection {
329
+ background-color: light-dark(rgba(0, 0, 0, 0.3), rgba(255, 255, 255, 0.3));
330
+ color: inherit;
331
+ }
332
+
327
333
  .code-view__container:hover .code-view__copy-button {
328
334
  opacity: 1;
329
335
  visibility: visible;
@@ -1 +1 @@
1
- {"version":3,"file":"blockCodeView.js","sources":["../../../../src/components/reusable/blockCodeView/blockCodeView.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { html, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { deepmerge } from 'deepmerge-ts';\n\nimport Prism from 'prismjs';\nimport 'prismjs/plugins/autoloader/prism-autoloader';\nimport 'prismjs/plugins/line-numbers/prism-line-numbers';\n\nimport copyIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/20/copy.svg';\nimport checkmarkIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/20/checkmark.svg';\nimport chevronDown from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-down.svg';\n\nimport '../button';\n\nimport BlockCodeViewStyles from './blockCodeView.scss?inline';\nimport ShidokaSyntaxTheme from '../../../common/scss/shidoka-syntax-theme.scss?inline';\n\ninterface LanguageMatch {\n language: string;\n relevance: number;\n}\n\nconst _defaultTextStrings = {\n collapsed: 'Collapsed',\n expanded: 'Expanded',\n};\n\ntype PrismWithAutoloader = typeof Prism & {\n plugins?: {\n autoloader?: {\n languages_path?: string;\n };\n };\n};\n\nconst prismWithAutoloader = Prism as PrismWithAutoloader;\n\nif (prismWithAutoloader.plugins?.autoloader) {\n prismWithAutoloader.plugins.autoloader.languages_path =\n 'https://cdn.jsdelivr.net/npm/prismjs@1/components/';\n}\n\nconst LANGUAGE_SPECIFIC_TOKENS: Record<string, string[]> = {\n markup: ['<', '>', '/', 'div', 'span', 'class', 'id'],\n html: ['<', '>', '/', 'div', 'span', 'class', 'id'],\n css: ['{', '}', ':', ';', '#', '.'],\n javascript: ['function', 'const', 'let', 'var', '=>'],\n typescript: ['interface', 'type', ':', 'as'],\n python: ['def', 'import', 'from', 'class'],\n java: ['public', 'private', 'class', 'void'],\n};\n\n/**\n * `<kyn-block-code-view>` component to display `<code>` snippets as standalone single-/multi-line block elements.\n * @fires on-copy - Emits when the copy button is clicked.\n */\n@customElement('kyn-block-code-view')\nexport class BlockCodeView extends LitElement {\n static override styles = [\n unsafeCSS(BlockCodeViewStyles),\n unsafeCSS(ShidokaSyntaxTheme),\n ];\n\n /** Sets background and text theming. */\n @property({ type: String })\n accessor darkTheme: 'light' | 'dark' | 'default' = 'default';\n\n /** If empty string, attempt language syntax auto-detection. Setting a value will override auto-detection and manually configure desired language. */\n @property({ type: String })\n accessor language = '';\n\n /** Optionally display line numbers. */\n @property({ type: Boolean })\n accessor lineNumbers = false;\n\n /** Sets the starting line number when lineNumbers is true. Must be a positive integer. */\n @property({ type: Number })\n accessor startLineNumber = 1;\n\n /** Customizable max-height setting for code snippet container. */\n @property({ type: Number })\n accessor maxHeight: number | null = null;\n\n /**\n * Enables a full-height flush layout intended for pane/rail containers where the code view\n * should occupy the entire available height.\n */\n @property({ type: Boolean, reflect: true })\n accessor flush = false;\n\n /** Optionally displayed label above code snippet container. */\n @property({ type: String })\n accessor codeViewLabel = '';\n\n /** Optionally display button to copy code snippet. */\n @property({ type: Boolean })\n accessor copyOptionVisible = false;\n\n /** Optionally display button to expand code snippet container. */\n @property({ type: Boolean })\n accessor codeViewExpandable = false;\n\n /** Sets copy code button text (optional). */\n @property({ type: String })\n accessor copyButtonText = '';\n\n /** Sets copy button description attr value. */\n @property({ type: String })\n accessor copyButtonDescriptionAttr = '';\n\n /** Sets code snippet for display -- NOTE: original formatting is preserved. */\n @property({ type: String })\n accessor codeSnippet = '';\n\n /** Text string customization. */\n @property({ type: Object })\n accessor textStrings = _defaultTextStrings;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n private accessor _textStrings = _defaultTextStrings;\n\n /** Auto-detect whether code snippet is single line (boolean) -- styled accordingly (boolean).\n * @internal\n */\n @state()\n private accessor _isSingleLine = false;\n\n /** Auto-detect whether code snippet exceeds the max-height allowance (boolean).\n * @internal\n */\n @state()\n private accessor hasOverflow = false;\n\n /** Value indicating whether overflow code sample is expanded (boolean).\n * @internal\n */\n @state()\n private accessor codeExpanded = false;\n\n /** Copy key-values to communicate copy button styling and state.\n * @internal\n */\n @state()\n private accessor _copyState = { copied: false, text: '' };\n\n /** Detected language for the code snippet.\n * @internal\n */\n @state()\n private accessor _effectiveLanguage = '';\n\n /** Code snippet fits into the height of the container -- no expansion needed.\n * @internal\n */\n @state()\n private accessor _codeFitsContainerOnLoad = true;\n\n /** If expandable -- height of the container when fully expanded.\n * @internal\n */\n @state()\n private accessor _expandedHeight: number | null = null;\n\n override updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('darkTheme')) this.requestUpdate();\n\n const codeChanged =\n changedProperties.has('codeSnippet') ||\n changedProperties.has('language') ||\n changedProperties.has('maxHeight');\n\n // race condition guard: force complete re-highlighting when line numbers toggle\n if (changedProperties.has('lineNumbers')) {\n setTimeout(() => {\n this.highlightCode();\n this.checkOverflow();\n }, 0);\n } else if (codeChanged) {\n this.highlightCode();\n this.checkOverflow();\n }\n\n if (changedProperties.has('copyButtonText')) {\n this._copyState = { ...this._copyState, text: this.copyButtonText };\n }\n\n if (changedProperties.has('startLineNumber')) {\n // Ensure startLineNumber is at least 1\n if (this.startLineNumber < 1) {\n this.startLineNumber = 1;\n }\n this.highlightCode();\n }\n\n super.updated(changedProperties);\n }\n\n override render() {\n const containerStyle = `${this.getContainerStyle()};`;\n return html`\n ${this.codeViewLabel\n ? html`<div class=\"code-view__label\">\n <label>${this.codeViewLabel}</label>\n </div>`\n : null}\n <div class=\"${this.getContainerClasses()}\" style=\"${containerStyle}\">\n <div class=\"code-snippet-wrapper\">\n <pre\n @keydown=${this.handleKeypress}\n role=\"region\"\n class=${this.lineNumbers && !this._isSingleLine\n ? 'line-numbers'\n : 'no-line-numbers'}\n data-start=${ifDefined(\n this.lineNumbers ? Math.max(1, this.startLineNumber) : undefined\n )}\n >\n <code tabindex=\"0\" class=\"language-${this\n ._effectiveLanguage}\"></code>\n </pre>\n </div>\n ${this.renderCopyButton()} ${this.renderExpandButton()}\n </div>\n `;\n }\n\n private getContainerClasses() {\n return classMap({\n 'code-view__container': true,\n 'single-line': this._isSingleLine,\n 'multi-line': !this._isSingleLine,\n 'copy-button-text-true':\n this.copyButtonText && this.copyButtonText.length > 0,\n 'copy-button-text-false': !this.copyButtonText,\n 'shidoka-syntax-theme': true,\n 'shidoka-syntax-theme--dark': this.darkTheme === 'dark',\n 'shidoka-syntax-theme--light': this.darkTheme === 'light',\n 'expanded-code-view': this.codeExpanded,\n 'has-overflow': this.hasOverflow,\n 'copy-active': this._copyState?.copied,\n });\n }\n\n private renderCopyButton() {\n if (!this.copyOptionVisible) return null;\n return html`\n <kyn-button\n class=\"code-view__copy-button\"\n kind=\"secondary\"\n size=\"small\"\n iconPosition=\"left\"\n ?disabled=${this._copyState.copied}\n description=${ifDefined(this.copyButtonDescriptionAttr)}\n @click=${this.copyCode}\n >\n <span slot=\"icon\" class=\"copy-icon\">\n ${this._copyState.copied\n ? unsafeSVG(checkmarkIcon)\n : unsafeSVG(copyIcon)}\n </span>\n ${this._copyState.text\n ? html`<span class=\"copy-text\">${this._copyState.text}</span>`\n : null}\n </kyn-button>\n `;\n }\n\n private renderExpandButton() {\n if (\n !this.codeViewExpandable ||\n (!this.hasOverflow && this._codeFitsContainerOnLoad)\n )\n return null;\n return html`\n <kyn-button\n class=\"code-view__expand-button\"\n kind=\"ghost\"\n size=\"small\"\n iconPosition=\"left\"\n outlineOnly\n description=${this.codeExpanded\n ? this._textStrings.collapsed\n : this._textStrings.expanded}\n @click=${this.expandCodeView}\n >\n <span slot=\"icon\" class=\"expand-icon\">${unsafeSVG(chevronDown)}</span>\n </kyn-button>\n `;\n }\n\n override willUpdate(changedProps: Map<string, unknown>) {\n if (changedProps.has('codeExpanded')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n }\n\n private highlightCode() {\n const processedCode = this.removeLeadingWhitespace(this.codeSnippet);\n this._isSingleLine = processedCode.trim().split('\\n').length === 1;\n this._effectiveLanguage =\n this.language || this.detectLanguage(processedCode);\n\n const preEl = this.shadowRoot?.querySelector('pre');\n const codeEl = preEl?.querySelector('code');\n\n if (!codeEl || !preEl) return;\n\n const existingLineNumbers = preEl.querySelector('.line-numbers-rows');\n if (existingLineNumbers) {\n existingLineNumbers.remove();\n }\n\n codeEl.className = `language-${this._effectiveLanguage}`;\n codeEl.textContent = processedCode;\n\n if (this.lineNumbers && !this._isSingleLine) {\n preEl.classList.add('line-numbers');\n preEl.setAttribute('data-start', String(this.startLineNumber));\n } else {\n preEl.classList.remove('line-numbers');\n preEl.removeAttribute('data-start');\n }\n\n setTimeout(() => {\n Prism.highlightElement(codeEl);\n\n setTimeout(() => {\n if (this.lineNumbers) {\n try {\n if ((Prism as any).plugins?.lineNumbers) {\n if (!preEl.querySelector('.line-numbers-rows')) {\n (Prism as any).hooks.run('complete', { element: codeEl });\n (Prism as any).plugins.lineNumbers.resize(preEl);\n }\n }\n\n if (!preEl.querySelector('.line-numbers-rows')) {\n this.addLineNumbers(preEl, codeEl);\n }\n } catch (e) {\n console.warn('Line numbers initialization error:', e);\n this.addLineNumbers(preEl, codeEl);\n }\n }\n\n this.checkOverflow();\n }, 50);\n }, 0);\n }\n\n private addLineNumbers(preEl: HTMLElement, codeEl: HTMLElement) {\n if (preEl.querySelector('.line-numbers-rows')) return;\n\n const linesCount = (codeEl.textContent || '').split('\\n').length;\n const startLineNumber = Math.max(\n 1,\n parseInt(preEl.getAttribute('data-start') || '1', 10)\n );\n\n const lineNumbersWrapper = document.createElement('span');\n lineNumbersWrapper.className = 'line-numbers-rows';\n\n const spans = Array(linesCount).fill('<span></span>').join('');\n lineNumbersWrapper.innerHTML = spans;\n\n preEl.appendChild(lineNumbersWrapper);\n preEl.style.counterReset = `linenumber ${startLineNumber - 1}`;\n }\n\n private detectLanguage(code: string): string {\n if (!code.trim()) return 'plaintext';\n\n const languages = [\n 'markup',\n 'html',\n 'xml',\n 'svg',\n 'mathml',\n 'css',\n 'javascript',\n 'typescript',\n 'python',\n 'java',\n 'c',\n 'cpp',\n ];\n let bestMatch: LanguageMatch = { language: 'plaintext', relevance: 0 };\n\n for (const lang of languages) {\n if (Prism.languages[lang]) {\n const tokens = Prism.tokenize(code, Prism.languages[lang]);\n const relevance = this.calculateRelevance(tokens, lang);\n if (relevance > bestMatch.relevance) {\n bestMatch = { language: lang, relevance };\n }\n }\n }\n\n return bestMatch.language === 'markup'\n ? this.determineMarkupLanguage(code)\n : bestMatch.language;\n }\n\n private calculateRelevance(\n tokens: (string | Prism.Token)[],\n language: string\n ): number {\n return tokens.reduce((relevance, token) => {\n if (typeof token !== 'string') {\n relevance += this.getTokenRelevance(token, language);\n }\n return relevance;\n }, 0);\n }\n\n private getTokenRelevance(token: Prism.Token, language: string): number {\n let relevance =\n 1 +\n (token.alias ? (Array.isArray(token.alias) ? token.alias.length : 1) : 0);\n if (this.isLanguageSpecificToken(token, language)) relevance += 2;\n if (token.content) {\n if (Array.isArray(token.content)) {\n relevance += token.content.reduce(\n (acc, t) =>\n acc +\n (typeof t === 'string' ? 0 : this.getTokenRelevance(t, language)),\n 0\n );\n } else if (typeof token.content !== 'string') {\n relevance += this.getTokenRelevance(token.content, language);\n }\n }\n return relevance;\n }\n\n private isLanguageSpecificToken(\n token: Prism.Token,\n language: string\n ): boolean {\n const specificTokens = LANGUAGE_SPECIFIC_TOKENS[language] || [];\n return specificTokens.some((t) => token.content.toString().includes(t));\n }\n\n private determineMarkupLanguage(code: string): string {\n if (/<\\/?[a-z][\\s\\S]*>/i.test(code)) return 'html';\n if (/<\\?xml/i.test(code)) return 'xml';\n if (/<svg/i.test(code)) return 'svg';\n if (/<math/i.test(code)) return 'mathml';\n return 'markup';\n }\n\n private checkOverflow() {\n setTimeout(() => {\n requestAnimationFrame(() => {\n const container = this.shadowRoot?.querySelector(\n '.code-snippet-wrapper'\n ) as HTMLElement;\n const pre = container?.querySelector('pre') as HTMLElement;\n if (pre && container) {\n const naturalHeight = pre.scrollHeight;\n const calcHeight = this.codeExpanded\n ? this._expandedHeight || container.clientHeight\n : this.maxHeight !== null\n ? this.maxHeight\n : container.clientHeight;\n\n this.hasOverflow = naturalHeight > calcHeight;\n this._codeFitsContainerOnLoad =\n naturalHeight <= (this.maxHeight || container.clientHeight);\n }\n });\n }, 100);\n }\n\n private removeLeadingWhitespace(code: string): string {\n if (!code) return '';\n const lines = code.split('\\n');\n const minIndent = lines.reduce((min, line) => {\n const match = line.match(/^[ \\t]*/);\n const indent = match ? match[0].length : 0;\n return line.trim().length ? Math.min(min, indent) : min;\n }, Infinity);\n return lines\n .map((line) => line.slice(minIndent))\n .join('\\n')\n .trim();\n }\n\n private formatExampleCode(code: string) {\n return { code };\n }\n\n private copyCode(e: Event) {\n const originalText = this._copyState.text;\n navigator.clipboard\n .writeText(this.codeSnippet)\n .then(() => {\n this._copyState = {\n copied: true,\n text: originalText.length > 1 ? 'Copied!' : '',\n };\n this.requestUpdate();\n this.dispatchEvent(\n new CustomEvent('on-copy', {\n detail: {\n origEvent: e,\n fullSnippet: this.formatExampleCode(this.codeSnippet),\n },\n })\n );\n setTimeout(() => {\n this._copyState = { copied: false, text: originalText };\n this.requestUpdate();\n }, 5000);\n })\n .catch((err) => console.error('Failed to copy code:', err));\n }\n\n private getContainerStyle(): string {\n if (this.codeExpanded) {\n return this._expandedHeight\n ? `max-height: ${this._expandedHeight}px`\n : '';\n }\n return this.maxHeight !== null ? `max-height: ${this.maxHeight}px` : '';\n }\n\n private expandCodeView() {\n this.codeExpanded = !this.codeExpanded;\n\n if (this.codeExpanded) {\n const pre = this.shadowRoot?.querySelector('pre') as HTMLElement;\n this._expandedHeight = pre?.scrollHeight || null;\n } else {\n this._expandedHeight = null;\n }\n\n this.requestUpdate();\n setTimeout(() => this.checkOverflow(), 0);\n }\n\n private handleKeypress(e: KeyboardEvent) {\n const pre = e.currentTarget as HTMLPreElement;\n const scrollAmount = 40;\n\n const isVerticallyScrollable = pre.scrollHeight > pre.clientHeight;\n const isHorizontallyScrollable = pre.scrollWidth > pre.clientWidth;\n\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n if (isVerticallyScrollable) {\n pre.scrollTop += e.key === 'ArrowDown' ? scrollAmount : -scrollAmount;\n e.preventDefault();\n }\n } else if (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {\n if (isHorizontallyScrollable) {\n pre.scrollLeft += e.key === 'ArrowRight' ? scrollAmount : -scrollAmount;\n e.preventDefault();\n }\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-block-code-view': BlockCodeView;\n }\n}\n"],"names":["_defaultTextStrings","collapsed","expanded","prismWithAutoloader","Prism","plugins","_a","autoloader","languages_path","LANGUAGE_SPECIFIC_TOKENS","markup","html","css","javascript","typescript","python","java","BlockCodeView","customElement","LitElement","_classThis","_classSuper","darkTheme","__classPrivateFieldGet","this","_BlockCodeView_darkTheme_accessor_storage","value","__classPrivateFieldSet","language","_BlockCodeView_language_accessor_storage","lineNumbers","_BlockCodeView_lineNumbers_accessor_storage","startLineNumber","_BlockCodeView_startLineNumber_accessor_storage","maxHeight","_BlockCodeView_maxHeight_accessor_storage","flush","_BlockCodeView_flush_accessor_storage","codeViewLabel","_BlockCodeView_codeViewLabel_accessor_storage","copyOptionVisible","_BlockCodeView_copyOptionVisible_accessor_storage","codeViewExpandable","_BlockCodeView_codeViewExpandable_accessor_storage","copyButtonText","_BlockCodeView_copyButtonText_accessor_storage","copyButtonDescriptionAttr","_BlockCodeView_copyButtonDescriptionAttr_accessor_storage","codeSnippet","_BlockCodeView_codeSnippet_accessor_storage","textStrings","_BlockCodeView_textStrings_accessor_storage","_textStrings","_BlockCodeView__textStrings_accessor_storage","_isSingleLine","_BlockCodeView__isSingleLine_accessor_storage","hasOverflow","_BlockCodeView_hasOverflow_accessor_storage","codeExpanded","_BlockCodeView_codeExpanded_accessor_storage","_copyState","_BlockCodeView__copyState_accessor_storage","_effectiveLanguage","_BlockCodeView__effectiveLanguage_accessor_storage","_codeFitsContainerOnLoad","_BlockCodeView__codeFitsContainerOnLoad_accessor_storage","_expandedHeight","_BlockCodeView__expandedHeight_accessor_storage","updated","changedProperties","has","requestUpdate","codeChanged","setTimeout","highlightCode","checkOverflow","text","super","render","containerStyle","getContainerStyle","getContainerClasses","handleKeypress","ifDefined","Math","max","undefined","renderCopyButton","renderExpandButton","classMap","length","copied","copyCode","unsafeSVG","checkmarkIcon","copyIcon","expandCodeView","chevronDown","willUpdate","changedProps","deepmerge","processedCode","removeLeadingWhitespace","trim","split","detectLanguage","preEl","shadowRoot","querySelector","codeEl","existingLineNumbers","remove","className","textContent","classList","add","setAttribute","String","removeAttribute","highlightElement","hooks","run","element","resize","addLineNumbers","e","console","warn","linesCount","parseInt","getAttribute","lineNumbersWrapper","document","createElement","spans","Array","fill","join","innerHTML","appendChild","style","counterReset","code","languages","bestMatch","relevance","lang","tokens","tokenize","calculateRelevance","determineMarkupLanguage","reduce","token","getTokenRelevance","alias","isArray","isLanguageSpecificToken","content","acc","t","some","toString","includes","test","requestAnimationFrame","container","pre","naturalHeight","scrollHeight","calcHeight","clientHeight","lines","minIndent","min","line","match","indent","Infinity","map","slice","formatExampleCode","originalText","navigator","clipboard","writeText","then","dispatchEvent","CustomEvent","detail","origEvent","fullSnippet","catch","err","error","currentTarget","isVerticallyScrollable","isHorizontallyScrollable","scrollWidth","clientWidth","key","scrollTop","preventDefault","scrollLeft","set","__runInitializers","_darkTheme_initializers","_darkTheme_extraInitializers","_language_initializers","_language_extraInitializers","_lineNumbers_initializers","_lineNumbers_extraInitializers","_startLineNumber_initializers","_startLineNumber_extraInitializers","_maxHeight_initializers","_maxHeight_extraInitializers","_flush_initializers","_flush_extraInitializers","_codeViewLabel_initializers","_codeViewLabel_extraInitializers","_copyOptionVisible_initializers","_copyOptionVisible_extraInitializers","_codeViewExpandable_initializers","_codeViewExpandable_extraInitializers","_copyButtonText_initializers","_copyButtonText_extraInitializers","_copyButtonDescriptionAttr_initializers","_copyButtonDescriptionAttr_extraInitializers","_codeSnippet_initializers","_codeSnippet_extraInitializers","_textStrings_initializers","_textStrings_extraInitializers","__textStrings_initializers","__textStrings_extraInitializers","__isSingleLine_initializers","__isSingleLine_extraInitializers","_hasOverflow_initializers","_hasOverflow_extraInitializers","_codeExpanded_initializers","_codeExpanded_extraInitializers","__copyState_initializers","__copyState_extraInitializers","__effectiveLanguage_initializers","__effectiveLanguage_extraInitializers","__codeFitsContainerOnLoad_initializers","__codeFitsContainerOnLoad_extraInitializers","__expandedHeight_initializers","_darkTheme_decorators","property","type","_language_decorators","_lineNumbers_decorators","Boolean","_startLineNumber_decorators","Number","_maxHeight_decorators","reflect","_codeViewLabel_decorators","_copyOptionVisible_decorators","_codeViewExpandable_decorators","_copyButtonText_decorators","_copyButtonDescriptionAttr_decorators","_codeSnippet_decorators","_textStrings_decorators","Object","__textStrings_decorators","state","__isSingleLine_decorators","_hasOverflow_decorators","_codeExpanded_decorators","__copyState_decorators","__effectiveLanguage_decorators","__codeFitsContainerOnLoad_decorators","__expandedHeight_decorators","__esDecorate","kind","name","static","private","access","obj","get","metadata","_metadata","_flush_decorators","__expandedHeight_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","BlockCodeViewStyles","ShidokaSyntaxTheme"],"mappings":"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"}
1
+ {"version":3,"file":"blockCodeView.js","sources":["../../../../src/components/reusable/blockCodeView/blockCodeView.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { html, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { deepmerge } from 'deepmerge-ts';\n\nimport Prism from 'prismjs';\nimport 'prismjs/plugins/autoloader/prism-autoloader';\nimport 'prismjs/plugins/line-numbers/prism-line-numbers';\n\nimport copyIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/20/copy.svg';\nimport checkmarkIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/20/checkmark.svg';\nimport chevronDown from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-down.svg';\n\nimport '../button';\n\nimport BlockCodeViewStyles from './blockCodeView.scss?inline';\nimport ShidokaSyntaxTheme from '../../../common/scss/shidoka-syntax-theme.scss?inline';\n\ninterface LanguageMatch {\n language: string;\n relevance: number;\n}\n\nconst _defaultTextStrings = {\n collapsed: 'Collapsed',\n expanded: 'Expanded',\n};\n\ntype PrismWithAutoloader = typeof Prism & {\n plugins?: {\n autoloader?: {\n languages_path?: string;\n };\n };\n};\n\nconst prismWithAutoloader = Prism as PrismWithAutoloader;\n\nif (prismWithAutoloader.plugins?.autoloader) {\n prismWithAutoloader.plugins.autoloader.languages_path =\n 'https://cdn.jsdelivr.net/npm/prismjs@1/components/';\n}\n\nconst LANGUAGE_SPECIFIC_TOKENS: Record<string, string[]> = {\n markup: ['<', '>', '/', 'div', 'span', 'class', 'id'],\n html: ['<', '>', '/', 'div', 'span', 'class', 'id'],\n css: ['{', '}', ':', ';', '#', '.'],\n javascript: ['function', 'const', 'let', 'var', '=>'],\n typescript: ['interface', 'type', ':', 'as'],\n python: ['def', 'import', 'from', 'class'],\n java: ['public', 'private', 'class', 'void'],\n};\n\n/**\n * `<kyn-block-code-view>` component to display `<code>` snippets as standalone single-/multi-line block elements.\n * @fires on-copy - Emits when the copy button is clicked.\n */\n@customElement('kyn-block-code-view')\nexport class BlockCodeView extends LitElement {\n static override styles = [\n unsafeCSS(BlockCodeViewStyles),\n unsafeCSS(ShidokaSyntaxTheme),\n ];\n\n /** Sets background and text theming. */\n @property({ type: String })\n accessor darkTheme: 'light' | 'dark' | 'default' = 'default';\n\n /** If empty string, attempt language syntax auto-detection. Setting a value will override auto-detection and manually configure desired language. */\n @property({ type: String })\n accessor language = '';\n\n /** Optionally display line numbers. */\n @property({ type: Boolean })\n accessor lineNumbers = false;\n\n /** Sets the starting line number when lineNumbers is true. Must be a positive integer. */\n @property({ type: Number })\n accessor startLineNumber = 1;\n\n /** Customizable max-height setting for code snippet container. */\n @property({ type: Number })\n accessor maxHeight: number | null = null;\n\n /**\n * Enables a full-height flush layout intended for pane/rail containers where the code view\n * should occupy the entire available height.\n */\n @property({ type: Boolean, reflect: true })\n accessor flush = false;\n\n /** Optionally displayed label above code snippet container. */\n @property({ type: String })\n accessor codeViewLabel = '';\n\n /** Optionally display button to copy code snippet. */\n @property({ type: Boolean })\n accessor copyOptionVisible = false;\n\n /** Optionally display button to expand code snippet container. */\n @property({ type: Boolean })\n accessor codeViewExpandable = false;\n\n /** Sets copy code button text (optional). */\n @property({ type: String })\n accessor copyButtonText = '';\n\n /** Sets copy button description attr value. */\n @property({ type: String })\n accessor copyButtonDescriptionAttr = '';\n\n /** Sets code snippet for display -- NOTE: original formatting is preserved. */\n @property({ type: String })\n accessor codeSnippet = '';\n\n /** Text string customization. */\n @property({ type: Object })\n accessor textStrings = _defaultTextStrings;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n private accessor _textStrings = _defaultTextStrings;\n\n /** Auto-detect whether code snippet is single line (boolean) -- styled accordingly (boolean).\n * @internal\n */\n @state()\n private accessor _isSingleLine = false;\n\n /** Auto-detect whether code snippet exceeds the max-height allowance (boolean).\n * @internal\n */\n @state()\n private accessor hasOverflow = false;\n\n /** Value indicating whether overflow code sample is expanded (boolean).\n * @internal\n */\n @state()\n private accessor codeExpanded = false;\n\n /** Copy key-values to communicate copy button styling and state.\n * @internal\n */\n @state()\n private accessor _copyState = { copied: false, text: '' };\n\n /** Detected language for the code snippet.\n * @internal\n */\n @state()\n private accessor _effectiveLanguage = '';\n\n /** Code snippet fits into the height of the container -- no expansion needed.\n * @internal\n */\n @state()\n private accessor _codeFitsContainerOnLoad = true;\n\n /** If expandable -- height of the container when fully expanded.\n * @internal\n */\n @state()\n private accessor _expandedHeight: number | null = null;\n\n override updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('darkTheme')) this.requestUpdate();\n\n const codeChanged =\n changedProperties.has('codeSnippet') ||\n changedProperties.has('language') ||\n changedProperties.has('maxHeight');\n\n // race condition guard: force complete re-highlighting when line numbers toggle\n if (changedProperties.has('lineNumbers')) {\n setTimeout(() => {\n this.highlightCode();\n this.checkOverflow();\n }, 0);\n } else if (codeChanged) {\n this.highlightCode();\n this.checkOverflow();\n }\n\n if (changedProperties.has('copyButtonText')) {\n this._copyState = { ...this._copyState, text: this.copyButtonText };\n }\n\n if (changedProperties.has('startLineNumber')) {\n // Ensure startLineNumber is at least 1\n if (this.startLineNumber < 1) {\n this.startLineNumber = 1;\n }\n this.highlightCode();\n }\n\n super.updated(changedProperties);\n }\n\n override render() {\n const containerStyle = `${this.getContainerStyle()};`;\n return html`\n ${this.codeViewLabel\n ? html`<div class=\"code-view__label\">\n <label>${this.codeViewLabel}</label>\n </div>`\n : null}\n <div class=\"${this.getContainerClasses()}\" style=\"${containerStyle}\">\n <div class=\"code-snippet-wrapper\">\n <pre\n @keydown=${this.handleKeypress}\n role=\"region\"\n class=${this.lineNumbers && !this._isSingleLine\n ? 'line-numbers'\n : 'no-line-numbers'}\n data-start=${ifDefined(\n this.lineNumbers ? Math.max(1, this.startLineNumber) : undefined\n )}\n >\n <code tabindex=\"0\" class=\"language-${this\n ._effectiveLanguage}\"></code>\n </pre>\n </div>\n ${this.renderCopyButton()} ${this.renderExpandButton()}\n </div>\n `;\n }\n\n private getContainerClasses() {\n return classMap({\n 'code-view__container': true,\n 'single-line': this._isSingleLine,\n 'multi-line': !this._isSingleLine,\n 'copy-button-text-true':\n this.copyButtonText && this.copyButtonText.length > 0,\n 'copy-button-text-false': !this.copyButtonText,\n 'shidoka-syntax-theme': true,\n 'shidoka-syntax-theme--dark': this.darkTheme === 'dark',\n 'shidoka-syntax-theme--light': this.darkTheme === 'light',\n 'expanded-code-view': this.codeExpanded,\n 'has-overflow': this.hasOverflow,\n 'copy-active': this._copyState?.copied,\n });\n }\n\n private renderCopyButton() {\n if (!this.copyOptionVisible) return null;\n return html`\n <kyn-button\n class=\"code-view__copy-button\"\n kind=\"secondary\"\n size=\"small\"\n iconPosition=\"left\"\n ?disabled=${this._copyState.copied}\n description=${ifDefined(this.copyButtonDescriptionAttr)}\n @click=${this.copyCode}\n >\n <span slot=\"icon\" class=\"copy-icon\">\n ${this._copyState.copied\n ? unsafeSVG(checkmarkIcon)\n : unsafeSVG(copyIcon)}\n </span>\n ${this._copyState.text\n ? html`<span class=\"copy-text\">${this._copyState.text}</span>`\n : null}\n </kyn-button>\n `;\n }\n\n private renderExpandButton() {\n if (\n !this.codeViewExpandable ||\n (!this.hasOverflow && this._codeFitsContainerOnLoad)\n )\n return null;\n return html`\n <kyn-button\n class=\"code-view__expand-button\"\n kind=\"ghost\"\n size=\"small\"\n iconPosition=\"left\"\n outlineOnly\n description=${this.codeExpanded\n ? this._textStrings.collapsed\n : this._textStrings.expanded}\n @click=${this.expandCodeView}\n >\n <span slot=\"icon\" class=\"expand-icon\">${unsafeSVG(chevronDown)}</span>\n </kyn-button>\n `;\n }\n\n override willUpdate(changedProps: Map<string, unknown>) {\n if (changedProps.has('codeExpanded')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n }\n\n private highlightCode() {\n const processedCode = this.removeLeadingWhitespace(this.codeSnippet);\n this._isSingleLine = processedCode.trim().split('\\n').length === 1;\n this._effectiveLanguage =\n this.language || this.detectLanguage(processedCode);\n\n const preEl = this.shadowRoot?.querySelector('pre');\n const codeEl = preEl?.querySelector('code');\n\n if (!codeEl || !preEl) return;\n\n const existingLineNumbers = preEl.querySelector('.line-numbers-rows');\n if (existingLineNumbers) {\n existingLineNumbers.remove();\n }\n\n codeEl.className = `language-${this._effectiveLanguage}`;\n codeEl.textContent = processedCode;\n\n if (this.lineNumbers && !this._isSingleLine) {\n preEl.classList.add('line-numbers');\n preEl.setAttribute('data-start', String(this.startLineNumber));\n } else {\n preEl.classList.remove('line-numbers');\n preEl.removeAttribute('data-start');\n }\n\n setTimeout(() => {\n Prism.highlightElement(codeEl);\n\n setTimeout(() => {\n if (this.lineNumbers) {\n try {\n if ((Prism as any).plugins?.lineNumbers) {\n if (!preEl.querySelector('.line-numbers-rows')) {\n (Prism as any).hooks.run('complete', { element: codeEl });\n (Prism as any).plugins.lineNumbers.resize(preEl);\n }\n }\n\n if (!preEl.querySelector('.line-numbers-rows')) {\n this.addLineNumbers(preEl, codeEl);\n }\n } catch (e) {\n console.warn('Line numbers initialization error:', e);\n this.addLineNumbers(preEl, codeEl);\n }\n }\n\n this.checkOverflow();\n }, 50);\n }, 0);\n }\n\n private addLineNumbers(preEl: HTMLElement, codeEl: HTMLElement) {\n if (preEl.querySelector('.line-numbers-rows')) return;\n\n const linesCount = (codeEl.textContent || '').split('\\n').length;\n const startLineNumber = Math.max(\n 1,\n parseInt(preEl.getAttribute('data-start') || '1', 10)\n );\n\n const lineNumbersWrapper = document.createElement('span');\n lineNumbersWrapper.className = 'line-numbers-rows';\n\n const spans = Array(linesCount).fill('<span></span>').join('');\n lineNumbersWrapper.innerHTML = spans;\n\n preEl.appendChild(lineNumbersWrapper);\n preEl.style.counterReset = `linenumber ${startLineNumber - 1}`;\n }\n\n private detectLanguage(code: string): string {\n if (!code.trim()) return 'plaintext';\n\n const languages = [\n 'markup',\n 'html',\n 'xml',\n 'svg',\n 'mathml',\n 'css',\n 'javascript',\n 'typescript',\n 'python',\n 'java',\n 'c',\n 'cpp',\n ];\n let bestMatch: LanguageMatch = { language: 'plaintext', relevance: 0 };\n\n for (const lang of languages) {\n if (Prism.languages[lang]) {\n const tokens = Prism.tokenize(code, Prism.languages[lang]);\n const relevance = this.calculateRelevance(tokens, lang);\n if (relevance > bestMatch.relevance) {\n bestMatch = { language: lang, relevance };\n }\n }\n }\n\n return bestMatch.language === 'markup'\n ? this.determineMarkupLanguage(code)\n : bestMatch.language;\n }\n\n private calculateRelevance(\n tokens: (string | Prism.Token)[],\n language: string\n ): number {\n return tokens.reduce((relevance, token) => {\n if (typeof token !== 'string') {\n relevance += this.getTokenRelevance(token, language);\n }\n return relevance;\n }, 0);\n }\n\n private getTokenRelevance(token: Prism.Token, language: string): number {\n let relevance =\n 1 +\n (token.alias ? (Array.isArray(token.alias) ? token.alias.length : 1) : 0);\n if (this.isLanguageSpecificToken(token, language)) relevance += 2;\n if (token.content) {\n if (Array.isArray(token.content)) {\n relevance += token.content.reduce(\n (acc, t) =>\n acc +\n (typeof t === 'string' ? 0 : this.getTokenRelevance(t, language)),\n 0\n );\n } else if (typeof token.content !== 'string') {\n relevance += this.getTokenRelevance(token.content, language);\n }\n }\n return relevance;\n }\n\n private isLanguageSpecificToken(\n token: Prism.Token,\n language: string\n ): boolean {\n const specificTokens = LANGUAGE_SPECIFIC_TOKENS[language] || [];\n return specificTokens.some((t) => token.content.toString().includes(t));\n }\n\n private determineMarkupLanguage(code: string): string {\n if (/<\\/?[a-z][\\s\\S]*>/i.test(code)) return 'html';\n if (/<\\?xml/i.test(code)) return 'xml';\n if (/<svg/i.test(code)) return 'svg';\n if (/<math/i.test(code)) return 'mathml';\n return 'markup';\n }\n\n private checkOverflow() {\n setTimeout(() => {\n requestAnimationFrame(() => {\n const container = this.shadowRoot?.querySelector(\n '.code-snippet-wrapper'\n ) as HTMLElement;\n const pre = container?.querySelector('pre') as HTMLElement;\n if (pre && container) {\n const naturalHeight = pre.scrollHeight;\n const calcHeight = this.codeExpanded\n ? this._expandedHeight || container.clientHeight\n : this.maxHeight !== null\n ? this.maxHeight\n : container.clientHeight;\n\n this.hasOverflow = naturalHeight > calcHeight;\n this._codeFitsContainerOnLoad =\n naturalHeight <= (this.maxHeight || container.clientHeight);\n }\n });\n }, 100);\n }\n\n private removeLeadingWhitespace(code: string): string {\n if (!code) return '';\n const lines = code.split('\\n');\n const minIndent = lines.reduce((min, line) => {\n const match = line.match(/^[ \\t]*/);\n const indent = match ? match[0].length : 0;\n return line.trim().length ? Math.min(min, indent) : min;\n }, Infinity);\n return lines\n .map((line) => line.slice(minIndent))\n .join('\\n')\n .trim();\n }\n\n private formatExampleCode(code: string) {\n return { code };\n }\n\n private copyCode(e: Event) {\n const originalText = this._copyState.text;\n navigator.clipboard\n .writeText(this.codeSnippet)\n .then(() => {\n this._copyState = {\n copied: true,\n text: originalText.length > 1 ? 'Copied!' : '',\n };\n this.requestUpdate();\n this.dispatchEvent(\n new CustomEvent('on-copy', {\n detail: {\n origEvent: e,\n fullSnippet: this.formatExampleCode(this.codeSnippet),\n },\n })\n );\n setTimeout(() => {\n this._copyState = { copied: false, text: originalText };\n this.requestUpdate();\n }, 5000);\n })\n .catch((err) => console.error('Failed to copy code:', err));\n }\n\n private getContainerStyle(): string {\n if (this.codeExpanded) {\n return this._expandedHeight\n ? `max-height: ${this._expandedHeight}px`\n : '';\n }\n return this.maxHeight !== null ? `max-height: ${this.maxHeight}px` : '';\n }\n\n private expandCodeView() {\n this.codeExpanded = !this.codeExpanded;\n\n if (this.codeExpanded) {\n const pre = this.shadowRoot?.querySelector('pre') as HTMLElement;\n this._expandedHeight = pre?.scrollHeight || null;\n } else {\n this._expandedHeight = null;\n }\n\n this.requestUpdate();\n setTimeout(() => this.checkOverflow(), 0);\n }\n\n private handleKeypress(e: KeyboardEvent) {\n const pre = e.currentTarget as HTMLPreElement;\n const scrollAmount = 40;\n\n const isVerticallyScrollable = pre.scrollHeight > pre.clientHeight;\n const isHorizontallyScrollable = pre.scrollWidth > pre.clientWidth;\n\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n if (isVerticallyScrollable) {\n pre.scrollTop += e.key === 'ArrowDown' ? scrollAmount : -scrollAmount;\n e.preventDefault();\n }\n } else if (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {\n if (isHorizontallyScrollable) {\n pre.scrollLeft += e.key === 'ArrowRight' ? scrollAmount : -scrollAmount;\n e.preventDefault();\n }\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-block-code-view': BlockCodeView;\n }\n}\n"],"names":["_defaultTextStrings","collapsed","expanded","prismWithAutoloader","Prism","plugins","_a","autoloader","languages_path","LANGUAGE_SPECIFIC_TOKENS","markup","html","css","javascript","typescript","python","java","BlockCodeView","customElement","LitElement","_classThis","_classSuper","darkTheme","__classPrivateFieldGet","this","_BlockCodeView_darkTheme_accessor_storage","value","__classPrivateFieldSet","language","_BlockCodeView_language_accessor_storage","lineNumbers","_BlockCodeView_lineNumbers_accessor_storage","startLineNumber","_BlockCodeView_startLineNumber_accessor_storage","maxHeight","_BlockCodeView_maxHeight_accessor_storage","flush","_BlockCodeView_flush_accessor_storage","codeViewLabel","_BlockCodeView_codeViewLabel_accessor_storage","copyOptionVisible","_BlockCodeView_copyOptionVisible_accessor_storage","codeViewExpandable","_BlockCodeView_codeViewExpandable_accessor_storage","copyButtonText","_BlockCodeView_copyButtonText_accessor_storage","copyButtonDescriptionAttr","_BlockCodeView_copyButtonDescriptionAttr_accessor_storage","codeSnippet","_BlockCodeView_codeSnippet_accessor_storage","textStrings","_BlockCodeView_textStrings_accessor_storage","_textStrings","_BlockCodeView__textStrings_accessor_storage","_isSingleLine","_BlockCodeView__isSingleLine_accessor_storage","hasOverflow","_BlockCodeView_hasOverflow_accessor_storage","codeExpanded","_BlockCodeView_codeExpanded_accessor_storage","_copyState","_BlockCodeView__copyState_accessor_storage","_effectiveLanguage","_BlockCodeView__effectiveLanguage_accessor_storage","_codeFitsContainerOnLoad","_BlockCodeView__codeFitsContainerOnLoad_accessor_storage","_expandedHeight","_BlockCodeView__expandedHeight_accessor_storage","updated","changedProperties","has","requestUpdate","codeChanged","setTimeout","highlightCode","checkOverflow","text","super","render","containerStyle","getContainerStyle","getContainerClasses","handleKeypress","ifDefined","Math","max","undefined","renderCopyButton","renderExpandButton","classMap","length","copied","copyCode","unsafeSVG","checkmarkIcon","copyIcon","expandCodeView","chevronDown","willUpdate","changedProps","deepmerge","processedCode","removeLeadingWhitespace","trim","split","detectLanguage","preEl","shadowRoot","querySelector","codeEl","existingLineNumbers","remove","className","textContent","classList","add","setAttribute","String","removeAttribute","highlightElement","hooks","run","element","resize","addLineNumbers","e","console","warn","linesCount","parseInt","getAttribute","lineNumbersWrapper","document","createElement","spans","Array","fill","join","innerHTML","appendChild","style","counterReset","code","languages","bestMatch","relevance","lang","tokens","tokenize","calculateRelevance","determineMarkupLanguage","reduce","token","getTokenRelevance","alias","isArray","isLanguageSpecificToken","content","acc","t","some","toString","includes","test","requestAnimationFrame","container","pre","naturalHeight","scrollHeight","calcHeight","clientHeight","lines","minIndent","min","line","match","indent","Infinity","map","slice","formatExampleCode","originalText","navigator","clipboard","writeText","then","dispatchEvent","CustomEvent","detail","origEvent","fullSnippet","catch","err","error","currentTarget","isVerticallyScrollable","isHorizontallyScrollable","scrollWidth","clientWidth","key","scrollTop","preventDefault","scrollLeft","set","__runInitializers","_darkTheme_initializers","_darkTheme_extraInitializers","_language_initializers","_language_extraInitializers","_lineNumbers_initializers","_lineNumbers_extraInitializers","_startLineNumber_initializers","_startLineNumber_extraInitializers","_maxHeight_initializers","_maxHeight_extraInitializers","_flush_initializers","_flush_extraInitializers","_codeViewLabel_initializers","_codeViewLabel_extraInitializers","_copyOptionVisible_initializers","_copyOptionVisible_extraInitializers","_codeViewExpandable_initializers","_codeViewExpandable_extraInitializers","_copyButtonText_initializers","_copyButtonText_extraInitializers","_copyButtonDescriptionAttr_initializers","_copyButtonDescriptionAttr_extraInitializers","_codeSnippet_initializers","_codeSnippet_extraInitializers","_textStrings_initializers","_textStrings_extraInitializers","__textStrings_initializers","__textStrings_extraInitializers","__isSingleLine_initializers","__isSingleLine_extraInitializers","_hasOverflow_initializers","_hasOverflow_extraInitializers","_codeExpanded_initializers","_codeExpanded_extraInitializers","__copyState_initializers","__copyState_extraInitializers","__effectiveLanguage_initializers","__effectiveLanguage_extraInitializers","__codeFitsContainerOnLoad_initializers","__codeFitsContainerOnLoad_extraInitializers","__expandedHeight_initializers","_darkTheme_decorators","property","type","_language_decorators","_lineNumbers_decorators","Boolean","_startLineNumber_decorators","Number","_maxHeight_decorators","reflect","_codeViewLabel_decorators","_copyOptionVisible_decorators","_codeViewExpandable_decorators","_copyButtonText_decorators","_copyButtonDescriptionAttr_decorators","_codeSnippet_decorators","_textStrings_decorators","Object","__textStrings_decorators","state","__isSingleLine_decorators","_hasOverflow_decorators","_codeExpanded_decorators","__copyState_decorators","__effectiveLanguage_decorators","__codeFitsContainerOnLoad_decorators","__expandedHeight_decorators","__esDecorate","kind","name","static","private","access","obj","get","metadata","_metadata","_flush_decorators","__expandedHeight_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","BlockCodeViewStyles","ShidokaSyntaxTheme"],"mappings":"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"}