snice 3.4.0 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/templates/base/package.json +2 -2
- package/bin/templates/social/package.json +2 -2
- package/bin/templates/social/src/styles/global.css +56 -47
- package/dist/components/avatar/snice-avatar.d.ts +2 -2
- package/dist/components/avatar/snice-avatar.js +20 -21
- package/dist/components/avatar/snice-avatar.js.map +1 -1
- package/dist/components/calendar/snice-calendar.d.ts +8 -2
- package/dist/components/calendar/snice-calendar.js +160 -82
- package/dist/components/calendar/snice-calendar.js.map +1 -1
- package/dist/components/chart/snice-chart.js +50 -18
- package/dist/components/chart/snice-chart.js.map +1 -1
- package/dist/components/checkbox/snice-checkbox.d.ts +4 -1
- package/dist/components/checkbox/snice-checkbox.js +46 -17
- package/dist/components/checkbox/snice-checkbox.js.map +1 -1
- package/dist/components/code-block/highlighter.d.ts +5 -0
- package/dist/components/code-block/highlighter.js +137 -0
- package/dist/components/code-block/highlighter.js.map +1 -0
- package/dist/components/code-block/highlighters/highlight.d.ts +64 -0
- package/dist/components/code-block/highlighters/highlight.js +108 -0
- package/dist/components/code-block/highlighters/highlight.js.map +1 -0
- package/dist/components/code-block/highlighters/prism.d.ts +41 -0
- package/dist/components/code-block/highlighters/prism.js +73 -0
- package/dist/components/code-block/highlighters/prism.js.map +1 -0
- package/dist/components/code-block/snice-code-block.d.ts +19 -1
- package/dist/components/code-block/snice-code-block.js +128 -29
- package/dist/components/code-block/snice-code-block.js.map +1 -1
- package/dist/components/code-block/snice-code-block.types.d.ts +15 -1
- package/dist/components/color-picker/snice-color-picker.d.ts +1 -0
- package/dist/components/color-picker/snice-color-picker.js +17 -6
- package/dist/components/color-picker/snice-color-picker.js.map +1 -1
- package/dist/components/date-picker/snice-date-picker.d.ts +1 -0
- package/dist/components/date-picker/snice-date-picker.js +16 -5
- package/dist/components/date-picker/snice-date-picker.js.map +1 -1
- package/dist/components/doc/snice-doc.d.ts +27 -73
- package/dist/components/doc/snice-doc.js +385 -534
- package/dist/components/doc/snice-doc.js.map +1 -1
- package/dist/components/draw/snice-draw.d.ts +4 -0
- package/dist/components/draw/snice-draw.js +134 -14
- package/dist/components/draw/snice-draw.js.map +1 -1
- package/dist/components/draw/snice-draw.types.d.ts +5 -0
- package/dist/components/file-upload/snice-file-upload.js +1 -1
- package/dist/components/input/snice-input.d.ts +2 -0
- package/dist/components/input/snice-input.js +34 -9
- package/dist/components/input/snice-input.js.map +1 -1
- package/dist/components/kanban/snice-kanban.d.ts +13 -1
- package/dist/components/kanban/snice-kanban.js +191 -36
- package/dist/components/kanban/snice-kanban.js.map +1 -1
- package/dist/components/kanban/snice-kanban.types.d.ts +11 -1
- package/dist/components/kpi/snice-kpi.js +5 -1
- package/dist/components/kpi/snice-kpi.js.map +1 -1
- package/dist/components/layout/snice-layout-sidebar.js +1 -1
- package/dist/components/layout/snice-layout-sidebar.js.map +1 -1
- package/dist/components/layout/snice-layout.js +1 -1
- package/dist/components/layout/snice-layout.js.map +1 -1
- package/dist/components/location/snice-location.js +1 -1
- package/dist/components/location/snice-location.js.map +1 -1
- package/dist/components/radio/snice-radio.d.ts +1 -0
- package/dist/components/radio/snice-radio.js +17 -6
- package/dist/components/radio/snice-radio.js.map +1 -1
- package/dist/components/select/snice-select.d.ts +2 -0
- package/dist/components/select/snice-select.js +48 -19
- package/dist/components/select/snice-select.js.map +1 -1
- package/dist/components/slider/snice-slider.d.ts +2 -0
- package/dist/components/slider/snice-slider.js +34 -14
- package/dist/components/slider/snice-slider.js.map +1 -1
- package/dist/components/snice-cell-HZ2iIBIC.js +4 -0
- package/dist/components/snice-cell-HZ2iIBIC.js.map +1 -0
- package/dist/components/split-pane/snice-split-pane.js +1 -1
- package/dist/components/split-pane/snice-split-pane.js.map +1 -1
- package/dist/components/switch/snice-switch.d.ts +1 -0
- package/dist/components/switch/snice-switch.js +16 -6
- package/dist/components/switch/snice-switch.js.map +1 -1
- package/dist/components/table/snice-cell-actions.js +1 -1
- package/dist/components/table/snice-cell-actions.js.map +1 -1
- package/dist/components/table/snice-cell-boolean.js +1 -1
- package/dist/components/table/snice-cell-color.js +1 -1
- package/dist/components/table/snice-cell-color.js.map +1 -1
- package/dist/components/table/snice-cell-currency.js +1 -1
- package/dist/components/table/snice-cell-date.js +1 -1
- package/dist/components/table/snice-cell-duration.js +1 -1
- package/dist/components/table/snice-cell-email.js +1 -1
- package/dist/components/table/snice-cell-email.js.map +1 -1
- package/dist/components/table/snice-cell-filesize.js +1 -1
- package/dist/components/table/snice-cell-image.js +1 -1
- package/dist/components/table/snice-cell-image.js.map +1 -1
- package/dist/components/table/snice-cell-json.js +1 -1
- package/dist/components/table/snice-cell-json.js.map +1 -1
- package/dist/components/table/snice-cell-link.js +1 -1
- package/dist/components/table/snice-cell-link.js.map +1 -1
- package/dist/components/table/snice-cell-location.js +1 -1
- package/dist/components/table/snice-cell-location.js.map +1 -1
- package/dist/components/table/snice-cell-number.js +1 -1
- package/dist/components/table/snice-cell-percentage.js +1 -1
- package/dist/components/table/snice-cell-percentage.js.map +1 -1
- package/dist/components/table/snice-cell-phone.js +1 -1
- package/dist/components/table/snice-cell-phone.js.map +1 -1
- package/dist/components/table/snice-cell-progress.js +3 -3
- package/dist/components/table/snice-cell-progress.js.map +1 -1
- package/dist/components/table/snice-cell-rating.js +2 -2
- package/dist/components/table/snice-cell-rating.js.map +1 -1
- package/dist/components/table/snice-cell-sparkline.js +2 -2
- package/dist/components/table/snice-cell-sparkline.js.map +1 -1
- package/dist/components/table/snice-cell-status.js +1 -1
- package/dist/components/table/snice-cell-status.js.map +1 -1
- package/dist/components/table/snice-cell-tag.js +1 -1
- package/dist/components/table/snice-cell-tag.js.map +1 -1
- package/dist/components/table/snice-cell-text.js +1 -1
- package/dist/components/table/snice-cell.js +15 -10
- package/dist/components/table/snice-cell.js.map +1 -1
- package/dist/components/table/snice-header.js +1 -1
- package/dist/components/table/snice-header.js.map +1 -1
- package/dist/components/table/snice-row.js +2 -2
- package/dist/components/table/snice-row.js.map +1 -1
- package/dist/components/table/snice-table.d.ts +1 -0
- package/dist/components/table/snice-table.js +24 -4
- package/dist/components/table/snice-table.js.map +1 -1
- package/dist/components/terminal/snice-terminal.d.ts +40 -0
- package/dist/components/terminal/snice-terminal.js +371 -0
- package/dist/components/terminal/snice-terminal.js.map +1 -0
- package/dist/components/terminal/snice-terminal.types.d.ts +20 -24
- package/dist/components/textarea/snice-textarea.d.ts +2 -0
- package/dist/components/textarea/snice-textarea.js +25 -6
- package/dist/components/textarea/snice-textarea.js.map +1 -1
- package/dist/components/theme/theme.css +16 -0
- package/dist/components/tree/snice-tree-item.d.ts +18 -4
- package/dist/components/tree/snice-tree-item.js +271 -88
- package/dist/components/tree/snice-tree-item.js.map +1 -1
- package/dist/components/tree/snice-tree-item.types.d.ts +3 -0
- package/dist/components/tree/snice-tree.d.ts +18 -2
- package/dist/components/tree/snice-tree.js +422 -56
- package/dist/components/tree/snice-tree.js.map +1 -1
- package/dist/components/tree/snice-tree.types.d.ts +1 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.js +4 -2
- package/dist/components/virtual-scroller/snice-virtual-scroller.js.map +1 -1
- package/dist/index.cjs +42 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +42 -23
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +42 -23
- package/dist/index.iife.js.map +1 -1
- package/dist/render-tracker.d.ts +1 -0
- package/dist/symbols.cjs +13 -14
- package/dist/symbols.cjs.map +1 -1
- package/dist/symbols.esm.js +13 -14
- package/dist/symbols.esm.js.map +1 -1
- package/dist/template.d.ts +1 -0
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/docs/ai/api.md +37 -4
- package/docs/ai/components/doc.md +41 -106
- package/docs/ai/components/kanban.md +31 -9
- package/docs/ai/components/kpi.md +15 -0
- package/docs/components/doc.md +96 -212
- package/docs/components/kanban.md +119 -4
- package/docs/components/kpi.md +27 -0
- package/package.json +4 -1
- package/dist/components/actions/snice-actions.d.ts +0 -28
- package/dist/components/actions/snice-actions.js +0 -220
- package/dist/components/actions/snice-actions.js.map +0 -1
- package/dist/components/actions/snice-actions.types.d.ts +0 -27
- package/dist/components/doc/snice-doc.types.d.ts +0 -118
- package/dist/components/gantt/snice-gantt.d.ts +0 -29
- package/dist/components/gantt/snice-gantt.js +0 -268
- package/dist/components/gantt/snice-gantt.js.map +0 -1
- package/dist/components/gantt/snice-gantt.types.d.ts +0 -23
- package/dist/components/snice-cell-C0slgOpe.js +0 -4
- package/dist/components/snice-cell-C0slgOpe.js.map +0 -1
- package/dist/components/stat/snice-stat.d.ts +0 -14
- package/dist/components/stat/snice-stat.js +0 -140
- package/dist/components/stat/snice-stat.js.map +0 -1
- package/dist/components/stat/snice-stat.types.d.ts +0 -12
- package/docs/ai/components/actions.md +0 -81
- package/docs/ai/components/gantt.md +0 -95
- package/docs/ai/components/stat.md +0 -29
- package/docs/components/actions.md +0 -317
- package/docs/components/gantt.md +0 -347
- package/docs/components/stat.md +0 -45
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in syntax highlighter for common languages
|
|
3
|
+
* Simple regex-based highlighter - no external dependencies
|
|
4
|
+
*/
|
|
5
|
+
// Use placeholder tokens to avoid regex conflicts
|
|
6
|
+
const MARKERS = {
|
|
7
|
+
start: '\x00SPAN_START\x00',
|
|
8
|
+
end: '\x00SPAN_END\x00',
|
|
9
|
+
quote: '\x00QUOTE\x00'
|
|
10
|
+
};
|
|
11
|
+
function wrapToken(text, tokenClass) {
|
|
12
|
+
return `${MARKERS.start}${tokenClass}${MARKERS.quote}${text}${MARKERS.end}`;
|
|
13
|
+
}
|
|
14
|
+
function finalizeSyntax(code) {
|
|
15
|
+
return code
|
|
16
|
+
.replace(new RegExp(MARKERS.start, 'g'), '<span class="token ')
|
|
17
|
+
.replace(new RegExp(MARKERS.quote, 'g'), '">')
|
|
18
|
+
.replace(new RegExp(MARKERS.end, 'g'), '</span>');
|
|
19
|
+
}
|
|
20
|
+
function highlightCode(code, language) {
|
|
21
|
+
let highlighted;
|
|
22
|
+
switch (language.toLowerCase()) {
|
|
23
|
+
case 'javascript':
|
|
24
|
+
case 'js':
|
|
25
|
+
case 'typescript':
|
|
26
|
+
case 'ts':
|
|
27
|
+
highlighted = highlightJavaScript(code);
|
|
28
|
+
break;
|
|
29
|
+
case 'html':
|
|
30
|
+
case 'xml':
|
|
31
|
+
highlighted = highlightHTML(code);
|
|
32
|
+
break;
|
|
33
|
+
case 'css':
|
|
34
|
+
highlighted = highlightCSS(code);
|
|
35
|
+
break;
|
|
36
|
+
case 'json':
|
|
37
|
+
highlighted = highlightJSON(code);
|
|
38
|
+
break;
|
|
39
|
+
case 'python':
|
|
40
|
+
case 'py':
|
|
41
|
+
highlighted = highlightPython(code);
|
|
42
|
+
break;
|
|
43
|
+
case 'bash':
|
|
44
|
+
case 'sh':
|
|
45
|
+
case 'shell':
|
|
46
|
+
highlighted = highlightBash(code);
|
|
47
|
+
break;
|
|
48
|
+
default:
|
|
49
|
+
return code;
|
|
50
|
+
}
|
|
51
|
+
return finalizeSyntax(highlighted);
|
|
52
|
+
}
|
|
53
|
+
function highlightJavaScript(code) {
|
|
54
|
+
return code
|
|
55
|
+
// Strings
|
|
56
|
+
.replace(/(["'`])(?:(?=(\\?))\2.)*?\1/g, (match) => wrapToken(match, 'string'))
|
|
57
|
+
// Comments
|
|
58
|
+
.replace(/(\/\/.*$)/gm, (match) => wrapToken(match, 'comment'))
|
|
59
|
+
.replace(/(\/\*[\s\S]*?\*\/)/g, (match) => wrapToken(match, 'comment'))
|
|
60
|
+
// Keywords
|
|
61
|
+
.replace(/\b(async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|export|extends|finally|for|from|function|if|import|in|instanceof|let|new|of|return|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/g, (match) => wrapToken(match, 'keyword'))
|
|
62
|
+
// Built-in objects
|
|
63
|
+
.replace(/\b(Array|Boolean|Date|Error|Function|JSON|Math|Number|Object|Promise|Proxy|RegExp|String|Symbol|Map|Set|WeakMap|WeakSet|console|document|window)\b/g, (match) => wrapToken(match, 'builtin'))
|
|
64
|
+
// Boolean/null/undefined
|
|
65
|
+
.replace(/\b(true|false|null|undefined|NaN|Infinity)\b/g, (match) => wrapToken(match, 'constant'))
|
|
66
|
+
// Numbers
|
|
67
|
+
.replace(/\b(\d+\.?\d*)\b/g, (match) => wrapToken(match, 'number'));
|
|
68
|
+
}
|
|
69
|
+
function highlightHTML(code) {
|
|
70
|
+
return code
|
|
71
|
+
// Comments first
|
|
72
|
+
.replace(/(<!--[\s\S]*?-->)/g, (match) => wrapToken(match, 'comment'))
|
|
73
|
+
// Tag names
|
|
74
|
+
.replace(/(<\/?)([\w-]+)/g, (match, bracket, tagName) => bracket + wrapToken(tagName, 'tag'))
|
|
75
|
+
// Attribute names
|
|
76
|
+
.replace(/\s([\w-]+)=/g, (match, attrName) => ' ' + wrapToken(attrName, 'attr-name') + '=')
|
|
77
|
+
// Attribute values
|
|
78
|
+
.replace(/=("|")([^"&]*)("|")/g, (match, q1, value, q2) => '=' + q1 + wrapToken(value, 'attr-value') + q2);
|
|
79
|
+
}
|
|
80
|
+
function highlightCSS(code) {
|
|
81
|
+
return code
|
|
82
|
+
// Comments
|
|
83
|
+
.replace(/(\/\*[\s\S]*?\*\/)/g, (match) => wrapToken(match, 'comment'))
|
|
84
|
+
// Properties
|
|
85
|
+
.replace(/([\w-]+)(?=\s*:)/g, (match) => wrapToken(match, 'property'))
|
|
86
|
+
// Important
|
|
87
|
+
.replace(/!important/g, (match) => wrapToken(match, 'important'))
|
|
88
|
+
// Numbers
|
|
89
|
+
.replace(/\b(\d+\.?\d*)(px|em|rem|%|vh|vw|s|ms)?\b/g, (match) => wrapToken(match, 'number'));
|
|
90
|
+
}
|
|
91
|
+
function highlightJSON(code) {
|
|
92
|
+
return code
|
|
93
|
+
// Keys
|
|
94
|
+
.replace(/"([\w-]+)"(?=\s*:)/g, (match, key) => '"' + wrapToken(key, 'property') + '"')
|
|
95
|
+
// String values
|
|
96
|
+
.replace(/:\s*"([^"]*)"/g, (match, value) => ': "' + wrapToken(value, 'string') + '"')
|
|
97
|
+
// Numbers
|
|
98
|
+
.replace(/:\s*(\d+\.?\d*)/g, (match, num) => ': ' + wrapToken(num, 'number'))
|
|
99
|
+
// Booleans/null
|
|
100
|
+
.replace(/\b(true|false|null)\b/g, (match) => wrapToken(match, 'constant'));
|
|
101
|
+
}
|
|
102
|
+
function highlightPython(code) {
|
|
103
|
+
return code
|
|
104
|
+
// Strings (protect from other replacements)
|
|
105
|
+
.replace(/("""[\s\S]*?"""|\'\'\'[\s\S]*?\'\'\')/g, (match) => wrapToken(match, 'string'))
|
|
106
|
+
.replace(/(["'])(?:(?=(\\?))\2.)*?\1/g, (match) => wrapToken(match, 'string'))
|
|
107
|
+
// Comments
|
|
108
|
+
.replace(/(#.*$)/gm, (match) => wrapToken(match, 'comment'))
|
|
109
|
+
// Decorators
|
|
110
|
+
.replace(/@[\w.]+/g, (match) => wrapToken(match, 'tag'))
|
|
111
|
+
// Keywords
|
|
112
|
+
.replace(/\b(and|as|assert|async|await|break|class|continue|def|del|elif|else|except|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|raise|return|try|while|with|yield)\b/g, (match) => wrapToken(match, 'keyword'))
|
|
113
|
+
// Built-ins
|
|
114
|
+
.replace(/\b(abs|all|any|ascii|bin|bool|bytearray|bytes|callable|chr|classmethod|compile|complex|delattr|dict|dir|divmod|enumerate|eval|exec|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|isinstance|issubclass|iter|len|list|locals|map|max|memoryview|min|next|object|oct|open|ord|pow|print|property|range|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|vars|zip)\b/g, (match) => wrapToken(match, 'builtin'))
|
|
115
|
+
// Boolean/None
|
|
116
|
+
.replace(/\b(True|False|None)\b/g, (match) => wrapToken(match, 'constant'))
|
|
117
|
+
// Numbers
|
|
118
|
+
.replace(/\b(\d+\.?\d*)\b/g, (match) => wrapToken(match, 'number'));
|
|
119
|
+
}
|
|
120
|
+
function highlightBash(code) {
|
|
121
|
+
return code
|
|
122
|
+
// Strings
|
|
123
|
+
.replace(/(["'])(?:(?=(\\?))\2.)*?\1/g, (match) => wrapToken(match, 'string'))
|
|
124
|
+
// Comments
|
|
125
|
+
.replace(/(#.*$)/gm, (match) => wrapToken(match, 'comment'))
|
|
126
|
+
// Variables
|
|
127
|
+
.replace(/\$\{?[\w]+\}?/g, (match) => wrapToken(match, 'attr-name'))
|
|
128
|
+
// Keywords
|
|
129
|
+
.replace(/\b(if|then|else|elif|fi|case|esac|for|select|while|until|do|done|in|function|time)\b/g, (match) => wrapToken(match, 'keyword'))
|
|
130
|
+
// Commands
|
|
131
|
+
.replace(/\b(echo|cd|ls|mkdir|rm|cp|mv|cat|grep|sed|awk|find|chmod|chown|sudo|export|source)\b/g, (match) => wrapToken(match, 'builtin'))
|
|
132
|
+
// Numbers
|
|
133
|
+
.replace(/\b(\d+)\b/g, (match) => wrapToken(match, 'number'));
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export { highlightCode };
|
|
137
|
+
//# sourceMappingURL=highlighter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlighter.js","sources":["../../../../components/code-block/highlighter.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* highlight.js integration for snice-code-block
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* 1. Install highlight.js: npm install highlight.js
|
|
6
|
+
* 2. Import this file and highlight.js with your desired languages/theme
|
|
7
|
+
* 3. Call setupHighlightJs()
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import hljs from 'highlight.js';
|
|
12
|
+
* import 'highlight.js/styles/github-dark.css';
|
|
13
|
+
* import { setupHighlightJs } from './highlighters/highlight';
|
|
14
|
+
*
|
|
15
|
+
* setupHighlightJs(hljs);
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @example With specific languages
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import hljs from 'highlight.js/lib/core';
|
|
21
|
+
* import javascript from 'highlight.js/lib/languages/javascript';
|
|
22
|
+
* import typescript from 'highlight.js/lib/languages/typescript';
|
|
23
|
+
* import 'highlight.js/styles/atom-one-dark.css';
|
|
24
|
+
* import { setupHighlightJs } from './highlighters/highlight';
|
|
25
|
+
*
|
|
26
|
+
* hljs.registerLanguage('javascript', javascript);
|
|
27
|
+
* hljs.registerLanguage('typescript', typescript);
|
|
28
|
+
*
|
|
29
|
+
* setupHighlightJs(hljs);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
import type { HighlighterFunction } from '../snice-code-block.types';
|
|
33
|
+
interface HighlightJsInstance {
|
|
34
|
+
highlight: (code: string, options: {
|
|
35
|
+
language: string;
|
|
36
|
+
}) => {
|
|
37
|
+
value: string;
|
|
38
|
+
};
|
|
39
|
+
highlightAuto: (code: string) => {
|
|
40
|
+
value: string;
|
|
41
|
+
};
|
|
42
|
+
listLanguages: () => string[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Create a highlight.js highlighter function
|
|
46
|
+
*/
|
|
47
|
+
export declare function createHighlightJsHighlighter(hljs: HighlightJsInstance): HighlighterFunction;
|
|
48
|
+
/**
|
|
49
|
+
* Create a highlight.js highlighter with auto-detection fallback
|
|
50
|
+
*/
|
|
51
|
+
export declare function createHighlightJsHighlighterWithAuto(hljs: HighlightJsInstance): HighlighterFunction;
|
|
52
|
+
/**
|
|
53
|
+
* Setup highlight.js as the global highlighter for all code blocks
|
|
54
|
+
*/
|
|
55
|
+
export declare function setupHighlightJs(hljs: HighlightJsInstance, useAutoDetection?: boolean): void;
|
|
56
|
+
/**
|
|
57
|
+
* Language aliases mapping common names to highlight.js language names
|
|
58
|
+
*/
|
|
59
|
+
export declare const languageAliases: Record<string, string>;
|
|
60
|
+
/**
|
|
61
|
+
* Create a highlight.js highlighter with language alias support
|
|
62
|
+
*/
|
|
63
|
+
export declare function createHighlightJsHighlighterWithAliases(hljs: HighlightJsInstance): HighlighterFunction;
|
|
64
|
+
export {};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { SniceCodeBlock } from '../snice-code-block.js';
|
|
2
|
+
import 'tslib';
|
|
3
|
+
import 'snice';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* highlight.js integration for snice-code-block
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* 1. Install highlight.js: npm install highlight.js
|
|
10
|
+
* 2. Import this file and highlight.js with your desired languages/theme
|
|
11
|
+
* 3. Call setupHighlightJs()
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import hljs from 'highlight.js';
|
|
16
|
+
* import 'highlight.js/styles/github-dark.css';
|
|
17
|
+
* import { setupHighlightJs } from './highlighters/highlight';
|
|
18
|
+
*
|
|
19
|
+
* setupHighlightJs(hljs);
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @example With specific languages
|
|
23
|
+
* ```typescript
|
|
24
|
+
* import hljs from 'highlight.js/lib/core';
|
|
25
|
+
* import javascript from 'highlight.js/lib/languages/javascript';
|
|
26
|
+
* import typescript from 'highlight.js/lib/languages/typescript';
|
|
27
|
+
* import 'highlight.js/styles/atom-one-dark.css';
|
|
28
|
+
* import { setupHighlightJs } from './highlighters/highlight';
|
|
29
|
+
*
|
|
30
|
+
* hljs.registerLanguage('javascript', javascript);
|
|
31
|
+
* hljs.registerLanguage('typescript', typescript);
|
|
32
|
+
*
|
|
33
|
+
* setupHighlightJs(hljs);
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
/**
|
|
37
|
+
* Create a highlight.js highlighter function
|
|
38
|
+
*/
|
|
39
|
+
function createHighlightJsHighlighter(hljs) {
|
|
40
|
+
return (code, language) => {
|
|
41
|
+
try {
|
|
42
|
+
const result = hljs.highlight(code, { language });
|
|
43
|
+
return result.value;
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
console.warn(`highlight.js: Language '${language}' not supported`, err);
|
|
47
|
+
return code;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create a highlight.js highlighter with auto-detection fallback
|
|
53
|
+
*/
|
|
54
|
+
function createHighlightJsHighlighterWithAuto(hljs) {
|
|
55
|
+
return (code, language) => {
|
|
56
|
+
try {
|
|
57
|
+
const result = hljs.highlight(code, { language });
|
|
58
|
+
return result.value;
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
console.warn(`highlight.js: Language '${language}' not supported, using auto-detection`);
|
|
62
|
+
const result = hljs.highlightAuto(code);
|
|
63
|
+
return result.value;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Setup highlight.js as the global highlighter for all code blocks
|
|
69
|
+
*/
|
|
70
|
+
function setupHighlightJs(hljs, useAutoDetection = false) {
|
|
71
|
+
const highlighter = useAutoDetection
|
|
72
|
+
? createHighlightJsHighlighterWithAuto(hljs)
|
|
73
|
+
: createHighlightJsHighlighter(hljs);
|
|
74
|
+
SniceCodeBlock.setGlobalHighlighter(highlighter);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Language aliases mapping common names to highlight.js language names
|
|
78
|
+
*/
|
|
79
|
+
const languageAliases = {
|
|
80
|
+
'js': 'javascript',
|
|
81
|
+
'ts': 'typescript',
|
|
82
|
+
'jsx': 'javascript',
|
|
83
|
+
'tsx': 'typescript',
|
|
84
|
+
'py': 'python',
|
|
85
|
+
'rb': 'ruby',
|
|
86
|
+
'sh': 'bash',
|
|
87
|
+
'yml': 'yaml',
|
|
88
|
+
'md': 'markdown',
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Create a highlight.js highlighter with language alias support
|
|
92
|
+
*/
|
|
93
|
+
function createHighlightJsHighlighterWithAliases(hljs) {
|
|
94
|
+
return (code, language) => {
|
|
95
|
+
const resolvedLanguage = languageAliases[language] || language;
|
|
96
|
+
try {
|
|
97
|
+
const result = hljs.highlight(code, { language: resolvedLanguage });
|
|
98
|
+
return result.value;
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
console.warn(`highlight.js: Language '${resolvedLanguage}' not supported`, err);
|
|
102
|
+
return code;
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export { createHighlightJsHighlighter, createHighlightJsHighlighterWithAliases, createHighlightJsHighlighterWithAuto, languageAliases, setupHighlightJs };
|
|
108
|
+
//# sourceMappingURL=highlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.js","sources":["../../../../../components/code-block/highlighters/highlight.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;AAWH;;AAEG;AACG,SAAU,4BAA4B,CAAC,IAAyB,EAAA;AACpE,IAAA,OAAO,CAAC,IAAY,EAAE,QAAgB,KAAI;AACxC,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;YACjD,OAAO,MAAM,CAAC,KAAK;QACrB;QAAE,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,IAAI,CAAC,CAAA,wBAAA,EAA2B,QAAQ,CAAA,eAAA,CAAiB,EAAE,GAAG,CAAC;AACvE,YAAA,OAAO,IAAI;QACb;AACF,IAAA,CAAC;AACH;AAEA;;AAEG;AACG,SAAU,oCAAoC,CAAC,IAAyB,EAAA;AAC5E,IAAA,OAAO,CAAC,IAAY,EAAE,QAAgB,KAAI;AACxC,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;YACjD,OAAO,MAAM,CAAC,KAAK;QACrB;QAAE,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,CAAC,IAAI,CAAC,2BAA2B,QAAQ,CAAA,qCAAA,CAAuC,CAAC;YACxF,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACvC,OAAO,MAAM,CAAC,KAAK;QACrB;AACF,IAAA,CAAC;AACH;AAEA;;AAEG;SACa,gBAAgB,CAAC,IAAyB,EAAE,gBAAgB,GAAG,KAAK,EAAA;IAClF,MAAM,WAAW,GAAG;AAClB,UAAE,oCAAoC,CAAC,IAAI;AAC3C,UAAE,4BAA4B,CAAC,IAAI,CAAC;AAEtC,IAAA,cAAc,CAAC,oBAAoB,CAAC,WAAW,CAAC;AAClD;AAEA;;AAEG;AACI,MAAM,eAAe,GAA2B;AACrD,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,IAAI,EAAE,UAAU;;AAGlB;;AAEG;AACG,SAAU,uCAAuC,CAAC,IAAyB,EAAA;AAC/E,IAAA,OAAO,CAAC,IAAY,EAAE,QAAgB,KAAI;QACxC,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,QAAQ;AAC9D,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;YACnE,OAAO,MAAM,CAAC,KAAK;QACrB;QAAE,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,IAAI,CAAC,CAAA,wBAAA,EAA2B,gBAAgB,CAAA,eAAA,CAAiB,EAAE,GAAG,CAAC;AAC/E,YAAA,OAAO,IAAI;QACb;AACF,IAAA,CAAC;AACH;;;;"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prism.js integration for snice-code-block
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* 1. Install Prism: npm install prismjs
|
|
6
|
+
* 2. Import this file and Prism with your desired languages/themes
|
|
7
|
+
* 3. Call setupPrismHighlighter()
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import Prism from 'prismjs';
|
|
12
|
+
* import 'prismjs/components/prism-javascript';
|
|
13
|
+
* import 'prismjs/components/prism-typescript';
|
|
14
|
+
* import 'prismjs/themes/prism-tomorrow.css';
|
|
15
|
+
* import { setupPrismHighlighter } from './highlighters/prism';
|
|
16
|
+
*
|
|
17
|
+
* setupPrismHighlighter(Prism);
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
import type { HighlighterFunction } from '../snice-code-block.types';
|
|
21
|
+
interface PrismInstance {
|
|
22
|
+
highlight: (code: string, grammar: any, language: string) => string;
|
|
23
|
+
languages: Record<string, any>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a Prism highlighter function
|
|
27
|
+
*/
|
|
28
|
+
export declare function createPrismHighlighter(prism: PrismInstance): HighlighterFunction;
|
|
29
|
+
/**
|
|
30
|
+
* Setup Prism as the global highlighter for all code blocks
|
|
31
|
+
*/
|
|
32
|
+
export declare function setupPrismHighlighter(prism: PrismInstance): void;
|
|
33
|
+
/**
|
|
34
|
+
* Language aliases mapping common names to Prism language names
|
|
35
|
+
*/
|
|
36
|
+
export declare const languageAliases: Record<string, string>;
|
|
37
|
+
/**
|
|
38
|
+
* Create a Prism highlighter with language alias support
|
|
39
|
+
*/
|
|
40
|
+
export declare function createPrismHighlighterWithAliases(prism: PrismInstance): HighlighterFunction;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { SniceCodeBlock } from '../snice-code-block.js';
|
|
2
|
+
import 'tslib';
|
|
3
|
+
import 'snice';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Prism.js integration for snice-code-block
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* 1. Install Prism: npm install prismjs
|
|
10
|
+
* 2. Import this file and Prism with your desired languages/themes
|
|
11
|
+
* 3. Call setupPrismHighlighter()
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import Prism from 'prismjs';
|
|
16
|
+
* import 'prismjs/components/prism-javascript';
|
|
17
|
+
* import 'prismjs/components/prism-typescript';
|
|
18
|
+
* import 'prismjs/themes/prism-tomorrow.css';
|
|
19
|
+
* import { setupPrismHighlighter } from './highlighters/prism';
|
|
20
|
+
*
|
|
21
|
+
* setupPrismHighlighter(Prism);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Create a Prism highlighter function
|
|
26
|
+
*/
|
|
27
|
+
function createPrismHighlighter(prism) {
|
|
28
|
+
return (code, language) => {
|
|
29
|
+
const grammar = prism.languages[language];
|
|
30
|
+
if (!grammar) {
|
|
31
|
+
console.warn(`Prism: Language '${language}' not loaded`);
|
|
32
|
+
return code;
|
|
33
|
+
}
|
|
34
|
+
return prism.highlight(code, grammar, language);
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Setup Prism as the global highlighter for all code blocks
|
|
39
|
+
*/
|
|
40
|
+
function setupPrismHighlighter(prism) {
|
|
41
|
+
SniceCodeBlock.setGlobalHighlighter(createPrismHighlighter(prism));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Language aliases mapping common names to Prism language names
|
|
45
|
+
*/
|
|
46
|
+
const languageAliases = {
|
|
47
|
+
'js': 'javascript',
|
|
48
|
+
'ts': 'typescript',
|
|
49
|
+
'jsx': 'jsx',
|
|
50
|
+
'tsx': 'tsx',
|
|
51
|
+
'py': 'python',
|
|
52
|
+
'rb': 'ruby',
|
|
53
|
+
'sh': 'bash',
|
|
54
|
+
'yml': 'yaml',
|
|
55
|
+
'md': 'markdown',
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Create a Prism highlighter with language alias support
|
|
59
|
+
*/
|
|
60
|
+
function createPrismHighlighterWithAliases(prism) {
|
|
61
|
+
return (code, language) => {
|
|
62
|
+
const resolvedLanguage = languageAliases[language] || language;
|
|
63
|
+
const grammar = prism.languages[resolvedLanguage];
|
|
64
|
+
if (!grammar) {
|
|
65
|
+
console.warn(`Prism: Language '${resolvedLanguage}' not loaded`);
|
|
66
|
+
return code;
|
|
67
|
+
}
|
|
68
|
+
return prism.highlight(code, grammar, resolvedLanguage);
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export { createPrismHighlighter, createPrismHighlighterWithAliases, languageAliases, setupPrismHighlighter };
|
|
73
|
+
//# sourceMappingURL=prism.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prism.js","sources":["../../../../../components/code-block/highlighters/prism.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;;;;;;;;;;;;;;;;AAkBG;AAUH;;AAEG;AACG,SAAU,sBAAsB,CAAC,KAAoB,EAAA;AACzD,IAAA,OAAO,CAAC,IAAY,EAAE,QAAgB,KAAI;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,CAAC,IAAI,CAAC,oBAAoB,QAAQ,CAAA,YAAA,CAAc,CAAC;AACxD,YAAA,OAAO,IAAI;QACb;QACA,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC;AACjD,IAAA,CAAC;AACH;AAEA;;AAEG;AACG,SAAU,qBAAqB,CAAC,KAAoB,EAAA;IACxD,cAAc,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACpE;AAEA;;AAEG;AACI,MAAM,eAAe,GAA2B;AACrD,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,IAAI,EAAE,UAAU;;AAGlB;;AAEG;AACG,SAAU,iCAAiC,CAAC,KAAoB,EAAA;AACpE,IAAA,OAAO,CAAC,IAAY,EAAE,QAAgB,KAAI;QACxC,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,QAAQ;QAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,CAAC,IAAI,CAAC,oBAAoB,gBAAgB,CAAA,YAAA,CAAc,CAAC;AAChE,YAAA,OAAO,IAAI;QACb;QACA,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC;AACzD,IAAA,CAAC;AACH;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CodeLanguage, SniceCodeBlockElement } from './snice-code-block.types';
|
|
1
|
+
import type { CodeLanguage, SniceCodeBlockElement, HighlighterFunction } from './snice-code-block.types';
|
|
2
2
|
export declare class SniceCodeBlock extends HTMLElement implements SniceCodeBlockElement {
|
|
3
3
|
code: string;
|
|
4
4
|
language: CodeLanguage;
|
|
@@ -7,9 +7,27 @@ export declare class SniceCodeBlock extends HTMLElement implements SniceCodeBloc
|
|
|
7
7
|
highlightLines: number[];
|
|
8
8
|
copyable: boolean;
|
|
9
9
|
filename: string;
|
|
10
|
+
highlighter?: HighlighterFunction;
|
|
10
11
|
private copied;
|
|
12
|
+
private highlightedCode;
|
|
13
|
+
private codeElement?;
|
|
14
|
+
private static globalHighlighter?;
|
|
11
15
|
private dispatchCopyEvent;
|
|
16
|
+
private dispatchBeforeHighlightEvent;
|
|
17
|
+
private dispatchAfterHighlightEvent;
|
|
18
|
+
static setGlobalHighlighter(highlighter: HighlighterFunction): void;
|
|
19
|
+
onReady(): Promise<void>;
|
|
20
|
+
private escapeHtml;
|
|
21
|
+
private updateCodeDisplay;
|
|
12
22
|
render(): import("snice").TemplateResult;
|
|
13
23
|
styles(): import("snice").CSSResult;
|
|
14
24
|
copy(): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Set highlighter for this instance
|
|
27
|
+
*/
|
|
28
|
+
setHighlighter(highlighter: HighlighterFunction): void;
|
|
29
|
+
/**
|
|
30
|
+
* Manually trigger syntax highlighting
|
|
31
|
+
*/
|
|
32
|
+
highlight(): Promise<void>;
|
|
15
33
|
}
|