@kyndryl-design-system/shidoka-applications 2.120.2 → 2.120.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/reusable/blockCodeView/blockCodeView.js +1 -0
- package/components/reusable/blockCodeView/blockCodeView.js.map +1 -1
- package/components/reusable/inlineCodeView/inlineCodeView.js +4 -3
- package/components/reusable/inlineCodeView/inlineCodeView.js.map +1 -1
- package/custom-elements.json +1 -1
- package/package.json +1 -1
|
@@ -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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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as a,__classPrivateFieldSet as
|
|
1
|
+
import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as a,__classPrivateFieldSet as r}from"tslib";import{css as n,LitElement as o,unsafeCSS as s,html as l}from"lit";import{customElement as d,property as c}from"lit/decorators.js";import{classMap as h}from"lit/directives/class-map.js";var m=n`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -23,6 +23,7 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
23
23
|
border-radius: 2px;
|
|
24
24
|
background: var(--kd-color-code-view-background);
|
|
25
25
|
color: var(--kd-color-code-view-default);
|
|
26
|
+
user-select: text;
|
|
26
27
|
}
|
|
27
28
|
.inline-code-view::selection {
|
|
28
29
|
background-color: light-dark(rgba(0, 0, 0, 0.3), rgba(255, 255, 255, 0.3));
|
|
@@ -34,12 +35,12 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
|
|
|
34
35
|
}
|
|
35
36
|
.shidoka-syntax-theme--light {
|
|
36
37
|
color-scheme: light;
|
|
37
|
-
}`;let p=(()=>{var
|
|
38
|
+
}`;let p=(()=>{var n,p;let k,b,u,f,g=[d("kyn-inline-code-view")],v=[],y=o,x=[],w=[],S=[],z=[];return b=class extends y{get darkTheme(){return a(this,n,"f")}set darkTheme(e){r(this,n,e,"f")}get snippetFontSize(){return a(this,p,"f")}set snippetFontSize(e){r(this,p,e,"f")}render(){return l`
|
|
38
39
|
<code
|
|
39
40
|
class="${h({"inline-code-view":!0,"shidoka-syntax-theme":!0,"shidoka-syntax-theme--dark":"dark"===this.darkTheme,"shidoka-syntax-theme--light":"light"===this.darkTheme})}"
|
|
40
41
|
style="--inline-snippet-font-size: ${this.snippetFontSize};"
|
|
41
42
|
>
|
|
42
43
|
<slot></slot>
|
|
43
44
|
</code>
|
|
44
|
-
`}constructor(){super(...arguments),
|
|
45
|
+
`}constructor(){super(...arguments),n.set(this,i(this,x,"default")),p.set(this,(i(this,w),i(this,S,14))),i(this,z)}},n=new WeakMap,p=new WeakMap,e(b,"InlineCodeView"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=y[Symbol.metadata])&&void 0!==e?e:null):void 0;u=[c({type:String})],f=[c({type:Number})],t(b,null,u,{kind:"accessor",name:"darkTheme",static:!1,private:!1,access:{has:e=>"darkTheme"in e,get:e=>e.darkTheme,set:(e,t)=>{e.darkTheme=t}},metadata:i},x,w),t(b,null,f,{kind:"accessor",name:"snippetFontSize",static:!1,private:!1,access:{has:e=>"snippetFontSize"in e,get:e=>e.snippetFontSize,set:(e,t)=>{e.snippetFontSize=t}},metadata:i},S,z),t(null,k={value:b},g,{kind:"class",name:b.name,metadata:i},null,v),b=k.value,i&&Object.defineProperty(b,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),b.styles=s(m),i(b,v),b})();export{p as InlineCodeView};
|
|
45
46
|
//# sourceMappingURL=inlineCodeView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inlineCodeView.js","sources":["../../../../src/components/reusable/inlineCodeView/inlineCodeView.ts"],"sourcesContent":["import { html, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport InlineCodeViewStyles from './inlineCodeView.scss?inline';\n\n/**\n * `<kyn-inline-code-view>` component to display code snippets inline within HTML content.\n * @slot unnamed - inline code snippet slot.\n */ @customElement('kyn-inline-code-view')\nexport class InlineCodeView extends LitElement {\n static override styles = unsafeCSS(InlineCodeViewStyles);\n\n /** Sets background and text theming. */\n @property({ type: String })\n accessor darkTheme: 'light' | 'dark' | 'default' = 'default';\n\n /** Font size value (px) to match code snippet font-size of surrounding text (min, default 14px). */\n @property({ type: Number })\n accessor snippetFontSize = 14;\n\n override render() {\n return html`\n <code\n class=\"${classMap({\n 'inline-code-view': true,\n 'shidoka-syntax-theme': true,\n 'shidoka-syntax-theme--dark': this.darkTheme === 'dark',\n 'shidoka-syntax-theme--light': this.darkTheme === 'light',\n })}\"\n style=\"--inline-snippet-font-size: ${this.snippetFontSize};\"\n >\n <slot></slot>\n </code>\n `;\n }\n}\n"],"names":["InlineCodeView","customElement","LitElement","_classThis","_classSuper","darkTheme","__classPrivateFieldGet","this","_InlineCodeView_darkTheme_accessor_storage","value","__classPrivateFieldSet","snippetFontSize","_InlineCodeView_snippetFontSize_accessor_storage","render","html","classMap","set","__runInitializers","_darkTheme_initializers","_darkTheme_extraInitializers","_snippetFontSize_initializers","_darkTheme_decorators","property","type","String","_snippetFontSize_decorators","Number","__esDecorate","kind","name","static","private","access","has","obj","get","metadata","_metadata","_snippetFontSize_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","InlineCodeViewStyles"],"mappings":"
|
|
1
|
+
{"version":3,"file":"inlineCodeView.js","sources":["../../../../src/components/reusable/inlineCodeView/inlineCodeView.ts"],"sourcesContent":["import { html, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport InlineCodeViewStyles from './inlineCodeView.scss?inline';\n\n/**\n * `<kyn-inline-code-view>` component to display code snippets inline within HTML content.\n * @slot unnamed - inline code snippet slot.\n */ @customElement('kyn-inline-code-view')\nexport class InlineCodeView extends LitElement {\n static override styles = unsafeCSS(InlineCodeViewStyles);\n\n /** Sets background and text theming. */\n @property({ type: String })\n accessor darkTheme: 'light' | 'dark' | 'default' = 'default';\n\n /** Font size value (px) to match code snippet font-size of surrounding text (min, default 14px). */\n @property({ type: Number })\n accessor snippetFontSize = 14;\n\n override render() {\n return html`\n <code\n class=\"${classMap({\n 'inline-code-view': true,\n 'shidoka-syntax-theme': true,\n 'shidoka-syntax-theme--dark': this.darkTheme === 'dark',\n 'shidoka-syntax-theme--light': this.darkTheme === 'light',\n })}\"\n style=\"--inline-snippet-font-size: ${this.snippetFontSize};\"\n >\n <slot></slot>\n </code>\n `;\n }\n}\n"],"names":["InlineCodeView","customElement","LitElement","_classThis","_classSuper","darkTheme","__classPrivateFieldGet","this","_InlineCodeView_darkTheme_accessor_storage","value","__classPrivateFieldSet","snippetFontSize","_InlineCodeView_snippetFontSize_accessor_storage","render","html","classMap","set","__runInitializers","_darkTheme_initializers","_darkTheme_extraInitializers","_snippetFontSize_initializers","_darkTheme_decorators","property","type","String","_snippetFontSize_decorators","Number","__esDecorate","kind","name","static","private","access","has","obj","get","metadata","_metadata","_snippetFontSize_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","InlineCodeViewStyles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQG,IACUA,EAAc,6BADtBC,EAAc,gCACiBC,6BAARC,EAAA,cAAQC,EAKlC,aAASC,GAAS,OAAAC,EAAAC,KAAAC,EAAA,IAAA,CAAlB,aAASH,CAASI,GAAAC,EAAAH,KAAAC,EAAAC,EAAA,IAAA,CAIlB,mBAASE,GAAe,OAAAL,EAAAC,KAAAK,EAAA,IAAA,CAAxB,mBAASD,CAAeF,GAAAC,EAAAH,KAAAK,EAAAH,EAAA,IAAA,CAEf,MAAAI,GACP,OAAOC,CAAI;;iBAEEC,EAAS,CAChB,oBAAoB,EACpB,wBAAwB,EACxB,6BAAiD,SAAnBR,KAAKF,UACnC,8BAAkD,UAAnBE,KAAKF;6CAEDE,KAAKI;;;;KAKhD,mCApBSH,EAAAQ,IAAAT,KAAAU,EAAAV,KAAAW,EAA0C,YAI1CN,EAAAI,IAAAT,MAAAU,EAAAV,KAAAY,GAAAF,EAAAV,KAAAa,EAAkB,0MAL1BC,EAAA,CAAAC,EAAS,CAAEC,KAAMC,UAIjBC,EAAA,CAAAH,EAAS,CAAEC,KAAMG,UAHlBC,EAAAxB,EAAA,KAAAkB,EAAA,CAAAO,KAAA,WAAAC,KAAA,YAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,cAAAA,EAAAC,IAAAD,GAAAA,EAAS7B,UAASW,IAAA,CAAAkB,EAAAzB,KAAAyB,EAAT7B,UAASI,CAAA,GAAA2B,SAAAC,GAAAnB,EAAAC,GAIlBQ,EAAAxB,EAAA,KAAAsB,EAAA,CAAAG,KAAA,WAAAC,KAAA,kBAAAC,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,oBAAAA,EAAAC,IAAAD,GAAAA,EAASvB,gBAAeK,IAAA,CAAAkB,EAAAzB,KAAAyB,EAAfvB,gBAAeF,CAAA,GAAA2B,SAAAC,GAAAjB,EAAAkB,GAT1BX,EAAA,KAAAY,EAAA,CAAA9B,MAAAN,GAAAqC,EAAA,CAAAZ,KAAA,QAAAC,KAAA1B,EAAA0B,KAAAO,SAAAC,GAAA,KAAAI,iHACkBtC,EAAAuC,OAASC,EAAUC,GADxB3B,EAAAd,EAAAsC,MAAc"}
|