@podlite/editor-react 0.0.72 → 0.0.74

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.
@@ -1,97 +0,0 @@
1
- import React, { useState, useEffect } from 'react';
2
- import { makeAttrs } from '@podlite/schema';
3
- import { codeToThemedHtml } from './shiki';
4
- const fcodeToTag = {
5
- B: 'strong',
6
- I: 'em',
7
- C: 'code',
8
- U: 'u',
9
- K: 'kbd',
10
- };
11
- export const extractPlainAndDecorations = (nodes) => {
12
- const decorations = [];
13
- let plain = '';
14
- const walk = (input) => {
15
- if (input == null)
16
- return;
17
- if (typeof input === 'string') {
18
- plain += input;
19
- return;
20
- }
21
- if (Array.isArray(input)) {
22
- for (const child of input)
23
- walk(child);
24
- return;
25
- }
26
- const node = input;
27
- if (node.type === 'text' && typeof node.value === 'string') {
28
- plain += node.value;
29
- return;
30
- }
31
- if (node.type === 'verbatim' && typeof node.value === 'string') {
32
- plain += node.value;
33
- return;
34
- }
35
- if (node.type === 'fcode' && typeof node.name === 'string') {
36
- const tagName = fcodeToTag[node.name] || 'span';
37
- const start = plain.length;
38
- walk(node.content);
39
- const end = plain.length;
40
- if (end > start) {
41
- decorations.push({
42
- start,
43
- end,
44
- tagName,
45
- properties: { class: `fc-${node.name}` },
46
- });
47
- }
48
- return;
49
- }
50
- if (node.content !== undefined) {
51
- walk(node.content);
52
- }
53
- else if (typeof node.text === 'string') {
54
- plain += node.text;
55
- }
56
- };
57
- walk(nodes);
58
- return { plain, decorations };
59
- };
60
- const HighlightedCode = React.memo(({ node, children, keyProp, ctx }) => {
61
- const conf = makeAttrs(node, ctx);
62
- const caption = conf.exists('caption') ? conf.getFirstValue('caption') : null;
63
- const lang = conf.getFirstValue('lang') || 'txt';
64
- const [html, setHtml] = useState(null);
65
- useEffect(() => {
66
- let cancelled = false;
67
- const highlight = async () => {
68
- try {
69
- const isDark = document.body.className.toLowerCase().includes('dark');
70
- const { plain, decorations } = extractPlainAndDecorations(node.content);
71
- const result = await codeToThemedHtml({
72
- code: plain,
73
- language: lang,
74
- theme: isDark ? 'dark' : 'light',
75
- decorations,
76
- });
77
- if (!cancelled)
78
- setHtml(result);
79
- }
80
- catch (e) {
81
- console.error('[podlite] shiki highlight error:', e);
82
- }
83
- };
84
- highlight();
85
- return () => {
86
- cancelled = true;
87
- };
88
- }, [lang, node.content]);
89
- return html ? (React.createElement(React.Fragment, null,
90
- React.createElement("code", { key: keyProp, className: "shiki", dangerouslySetInnerHTML: { __html: html } }),
91
- caption && React.createElement("div", { className: "caption" }, caption))) : (React.createElement(React.Fragment, null,
92
- React.createElement("pre", null,
93
- React.createElement("code", { key: keyProp }, children)),
94
- caption && React.createElement("div", { className: "caption" }, caption)));
95
- });
96
- export default HighlightedCode;
97
- //# sourceMappingURL=HighlightedCode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HighlightedCode.js","sourceRoot":"","sources":["../src/HighlightedCode.tsx"],"names":[],"mappings":"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"}
package/esm/shiki.d.ts DELETED
@@ -1,15 +0,0 @@
1
- import type { BundledLanguage, DecorationItem, Highlighter } from 'shiki';
2
- export type ExtendedLanguage = BundledLanguage | 'txt';
3
- export declare function normalizeLanguage(language?: string): Promise<ExtendedLanguage>;
4
- export declare function getHighlighter(language?: string): Promise<Highlighter>;
5
- export declare function codeToHtml({ code, language }: {
6
- code: string;
7
- language: string;
8
- }): Promise<string>;
9
- export declare function codeToThemedHtml({ code, language, theme, decorations, }: {
10
- code: string;
11
- language: string;
12
- theme?: 'light' | 'dark' | 'auto';
13
- decorations?: DecorationItem[];
14
- }): Promise<string>;
15
- export declare const isLanguageLoaded: (language: ExtendedLanguage) => boolean;
package/esm/shiki.js DELETED
@@ -1,147 +0,0 @@
1
- const loadShiki = () => import('shiki');
2
- // Configuration
3
- const CONFIG = {
4
- themes: {
5
- light: 'one-light',
6
- dark: 'github-dark',
7
- },
8
- initialLanguages: ['shell', 'txt'],
9
- };
10
- // Language aliases mapping
11
- const languageAliases = {
12
- text: 'txt',
13
- plaintext: 'txt',
14
- plain: 'txt',
15
- sh: 'shell',
16
- bash: 'shell',
17
- zsh: 'shell',
18
- shellscript: 'shell',
19
- 'shell-script': 'shell',
20
- console: 'shell',
21
- terminal: 'shell',
22
- js: 'javascript',
23
- node: 'javascript',
24
- nodejs: 'javascript',
25
- ts: 'typescript',
26
- py: 'python',
27
- python3: 'python',
28
- py3: 'python',
29
- rb: 'ruby',
30
- md: 'markdown',
31
- cpp: 'c++',
32
- cc: 'c++',
33
- cs: 'c#',
34
- csharp: 'c#',
35
- htm: 'html',
36
- yml: 'yaml',
37
- dockerfile: 'docker',
38
- styles: 'css',
39
- style: 'css',
40
- jsonc: 'json',
41
- json5: 'json',
42
- xaml: 'xml',
43
- xhtml: 'xml',
44
- svg: 'xml',
45
- mysql: 'sql',
46
- postgresql: 'sql',
47
- postgres: 'sql',
48
- pgsql: 'sql',
49
- plsql: 'sql',
50
- oracle: 'sql',
51
- };
52
- // Singleton state
53
- const state = {
54
- instance: null,
55
- initPromise: null,
56
- loadedLanguages: new Set(['txt']),
57
- pendingLoads: new Map(),
58
- warnedLanguages: new Set(),
59
- };
60
- // Normalize language to valid Shiki language
61
- export async function normalizeLanguage(language) {
62
- if (!language)
63
- return 'txt';
64
- const normalized = language.toLowerCase();
65
- const { bundledLanguages } = await loadShiki();
66
- if (normalized in bundledLanguages) {
67
- return normalized;
68
- }
69
- if (normalized in languageAliases) {
70
- return languageAliases[normalized];
71
- }
72
- if (!state.warnedLanguages.has(language)) {
73
- console.warn(`[podlite] shiki unrecognized language '${language}', defaulting to [txt]`);
74
- state.warnedLanguages.add(language);
75
- }
76
- return 'txt';
77
- }
78
- // Get or create highlighter instance
79
- async function getHighlighterInstance() {
80
- if (!state.initPromise) {
81
- state.initPromise = (async () => {
82
- const { createHighlighter } = await loadShiki();
83
- const instance = await createHighlighter({
84
- themes: Object.values(CONFIG.themes),
85
- langs: CONFIG.initialLanguages,
86
- });
87
- state.instance = instance;
88
- CONFIG.initialLanguages.forEach(lang => state.loadedLanguages.add(lang));
89
- return instance;
90
- })();
91
- }
92
- return state.initPromise;
93
- }
94
- // Load a language if not already loaded
95
- async function ensureLanguageLoaded(instance, lang) {
96
- if (state.loadedLanguages.has(lang))
97
- return;
98
- let pending = state.pendingLoads.get(lang);
99
- if (!pending) {
100
- pending = instance
101
- .loadLanguage(lang)
102
- .then(() => {
103
- state.loadedLanguages.add(lang);
104
- })
105
- .finally(() => state.pendingLoads.delete(lang));
106
- state.pendingLoads.set(lang, pending);
107
- }
108
- await pending;
109
- }
110
- // Main API: get highlighter with language loaded
111
- export async function getHighlighter(language) {
112
- const lang = await normalizeLanguage(language);
113
- const instance = await getHighlighterInstance();
114
- await ensureLanguageLoaded(instance, lang);
115
- return instance;
116
- }
117
- // Convenience: convert code to HTML with dual themes (CSS-based switching)
118
- export async function codeToHtml({ code, language }) {
119
- const lang = await normalizeLanguage(language);
120
- const highlighter = await getHighlighter(language);
121
- return highlighter.codeToHtml(code, {
122
- lang,
123
- themes: CONFIG.themes,
124
- });
125
- }
126
- // Convert code to HTML with explicit theme selection (for runtime theme detection)
127
- export async function codeToThemedHtml({ code, language, theme, decorations, }) {
128
- const lang = await normalizeLanguage(language);
129
- const highlighter = await getHighlighter(language);
130
- if (theme === 'light' || theme === 'dark') {
131
- return highlighter.codeToHtml(code, {
132
- lang,
133
- theme: CONFIG.themes[theme],
134
- decorations,
135
- });
136
- }
137
- return highlighter.codeToHtml(code, {
138
- lang,
139
- themes: CONFIG.themes,
140
- decorations,
141
- });
142
- }
143
- // Check if a language is loaded (sync — only meaningful after a prior async normalize)
144
- export const isLanguageLoaded = (language) => {
145
- return state.loadedLanguages.has(language);
146
- };
147
- //# sourceMappingURL=shiki.js.map
package/esm/shiki.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"shiki.js","sourceRoot":"","sources":["../src/shiki.tsx"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import React from 'react';
2
- type Decoration = {
3
- start: number;
4
- end: number;
5
- tagName: string;
6
- properties?: {
7
- class?: string;
8
- };
9
- };
10
- export declare const extractPlainAndDecorations: (nodes: unknown) => {
11
- plain: string;
12
- decorations: Decoration[];
13
- };
14
- export interface HighlightedCodeProps {
15
- node: any;
16
- children: React.ReactNode;
17
- keyProp: string;
18
- ctx: any;
19
- }
20
- declare const HighlightedCode: React.FC<HighlightedCodeProps>;
21
- export default HighlightedCode;
@@ -1,102 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractPlainAndDecorations = void 0;
4
- const tslib_1 = require("tslib");
5
- const react_1 = tslib_1.__importStar(require("react"));
6
- const schema_1 = require("@podlite/schema");
7
- const shiki_1 = require("./shiki");
8
- const fcodeToTag = {
9
- B: 'strong',
10
- I: 'em',
11
- C: 'code',
12
- U: 'u',
13
- K: 'kbd',
14
- };
15
- const extractPlainAndDecorations = (nodes) => {
16
- const decorations = [];
17
- let plain = '';
18
- const walk = (input) => {
19
- if (input == null)
20
- return;
21
- if (typeof input === 'string') {
22
- plain += input;
23
- return;
24
- }
25
- if (Array.isArray(input)) {
26
- for (const child of input)
27
- walk(child);
28
- return;
29
- }
30
- const node = input;
31
- if (node.type === 'text' && typeof node.value === 'string') {
32
- plain += node.value;
33
- return;
34
- }
35
- if (node.type === 'verbatim' && typeof node.value === 'string') {
36
- plain += node.value;
37
- return;
38
- }
39
- if (node.type === 'fcode' && typeof node.name === 'string') {
40
- const tagName = fcodeToTag[node.name] || 'span';
41
- const start = plain.length;
42
- walk(node.content);
43
- const end = plain.length;
44
- if (end > start) {
45
- decorations.push({
46
- start,
47
- end,
48
- tagName,
49
- properties: { class: `fc-${node.name}` },
50
- });
51
- }
52
- return;
53
- }
54
- if (node.content !== undefined) {
55
- walk(node.content);
56
- }
57
- else if (typeof node.text === 'string') {
58
- plain += node.text;
59
- }
60
- };
61
- walk(nodes);
62
- return { plain, decorations };
63
- };
64
- exports.extractPlainAndDecorations = extractPlainAndDecorations;
65
- const HighlightedCode = react_1.default.memo(({ node, children, keyProp, ctx }) => {
66
- const conf = (0, schema_1.makeAttrs)(node, ctx);
67
- const caption = conf.exists('caption') ? conf.getFirstValue('caption') : null;
68
- const lang = conf.getFirstValue('lang') || 'txt';
69
- const [html, setHtml] = (0, react_1.useState)(null);
70
- (0, react_1.useEffect)(() => {
71
- let cancelled = false;
72
- const highlight = async () => {
73
- try {
74
- const isDark = document.body.className.toLowerCase().includes('dark');
75
- const { plain, decorations } = (0, exports.extractPlainAndDecorations)(node.content);
76
- const result = await (0, shiki_1.codeToThemedHtml)({
77
- code: plain,
78
- language: lang,
79
- theme: isDark ? 'dark' : 'light',
80
- decorations,
81
- });
82
- if (!cancelled)
83
- setHtml(result);
84
- }
85
- catch (e) {
86
- console.error('[podlite] shiki highlight error:', e);
87
- }
88
- };
89
- highlight();
90
- return () => {
91
- cancelled = true;
92
- };
93
- }, [lang, node.content]);
94
- return html ? (react_1.default.createElement(react_1.default.Fragment, null,
95
- react_1.default.createElement("code", { key: keyProp, className: "shiki", dangerouslySetInnerHTML: { __html: html } }),
96
- caption && react_1.default.createElement("div", { className: "caption" }, caption))) : (react_1.default.createElement(react_1.default.Fragment, null,
97
- react_1.default.createElement("pre", null,
98
- react_1.default.createElement("code", { key: keyProp }, children)),
99
- caption && react_1.default.createElement("div", { className: "caption" }, caption)));
100
- });
101
- exports.default = HighlightedCode;
102
- //# sourceMappingURL=HighlightedCode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HighlightedCode.js","sourceRoot":"","sources":["../src/HighlightedCode.tsx"],"names":[],"mappings":"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"}
package/lib/shiki.d.ts DELETED
@@ -1,15 +0,0 @@
1
- import type { BundledLanguage, DecorationItem, Highlighter } from 'shiki';
2
- export type ExtendedLanguage = BundledLanguage | 'txt';
3
- export declare function normalizeLanguage(language?: string): Promise<ExtendedLanguage>;
4
- export declare function getHighlighter(language?: string): Promise<Highlighter>;
5
- export declare function codeToHtml({ code, language }: {
6
- code: string;
7
- language: string;
8
- }): Promise<string>;
9
- export declare function codeToThemedHtml({ code, language, theme, decorations, }: {
10
- code: string;
11
- language: string;
12
- theme?: 'light' | 'dark' | 'auto';
13
- decorations?: DecorationItem[];
14
- }): Promise<string>;
15
- export declare const isLanguageLoaded: (language: ExtendedLanguage) => boolean;
package/lib/shiki.js DELETED
@@ -1,188 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.isLanguageLoaded = void 0;
37
- exports.normalizeLanguage = normalizeLanguage;
38
- exports.getHighlighter = getHighlighter;
39
- exports.codeToHtml = codeToHtml;
40
- exports.codeToThemedHtml = codeToThemedHtml;
41
- const loadShiki = () => Promise.resolve().then(() => __importStar(require('shiki')));
42
- // Configuration
43
- const CONFIG = {
44
- themes: {
45
- light: 'one-light',
46
- dark: 'github-dark',
47
- },
48
- initialLanguages: ['shell', 'txt'],
49
- };
50
- // Language aliases mapping
51
- const languageAliases = {
52
- text: 'txt',
53
- plaintext: 'txt',
54
- plain: 'txt',
55
- sh: 'shell',
56
- bash: 'shell',
57
- zsh: 'shell',
58
- shellscript: 'shell',
59
- 'shell-script': 'shell',
60
- console: 'shell',
61
- terminal: 'shell',
62
- js: 'javascript',
63
- node: 'javascript',
64
- nodejs: 'javascript',
65
- ts: 'typescript',
66
- py: 'python',
67
- python3: 'python',
68
- py3: 'python',
69
- rb: 'ruby',
70
- md: 'markdown',
71
- cpp: 'c++',
72
- cc: 'c++',
73
- cs: 'c#',
74
- csharp: 'c#',
75
- htm: 'html',
76
- yml: 'yaml',
77
- dockerfile: 'docker',
78
- styles: 'css',
79
- style: 'css',
80
- jsonc: 'json',
81
- json5: 'json',
82
- xaml: 'xml',
83
- xhtml: 'xml',
84
- svg: 'xml',
85
- mysql: 'sql',
86
- postgresql: 'sql',
87
- postgres: 'sql',
88
- pgsql: 'sql',
89
- plsql: 'sql',
90
- oracle: 'sql',
91
- };
92
- // Singleton state
93
- const state = {
94
- instance: null,
95
- initPromise: null,
96
- loadedLanguages: new Set(['txt']),
97
- pendingLoads: new Map(),
98
- warnedLanguages: new Set(),
99
- };
100
- // Normalize language to valid Shiki language
101
- async function normalizeLanguage(language) {
102
- if (!language)
103
- return 'txt';
104
- const normalized = language.toLowerCase();
105
- const { bundledLanguages } = await loadShiki();
106
- if (normalized in bundledLanguages) {
107
- return normalized;
108
- }
109
- if (normalized in languageAliases) {
110
- return languageAliases[normalized];
111
- }
112
- if (!state.warnedLanguages.has(language)) {
113
- console.warn(`[podlite] shiki unrecognized language '${language}', defaulting to [txt]`);
114
- state.warnedLanguages.add(language);
115
- }
116
- return 'txt';
117
- }
118
- // Get or create highlighter instance
119
- async function getHighlighterInstance() {
120
- if (!state.initPromise) {
121
- state.initPromise = (async () => {
122
- const { createHighlighter } = await loadShiki();
123
- const instance = await createHighlighter({
124
- themes: Object.values(CONFIG.themes),
125
- langs: CONFIG.initialLanguages,
126
- });
127
- state.instance = instance;
128
- CONFIG.initialLanguages.forEach(lang => state.loadedLanguages.add(lang));
129
- return instance;
130
- })();
131
- }
132
- return state.initPromise;
133
- }
134
- // Load a language if not already loaded
135
- async function ensureLanguageLoaded(instance, lang) {
136
- if (state.loadedLanguages.has(lang))
137
- return;
138
- let pending = state.pendingLoads.get(lang);
139
- if (!pending) {
140
- pending = instance
141
- .loadLanguage(lang)
142
- .then(() => {
143
- state.loadedLanguages.add(lang);
144
- })
145
- .finally(() => state.pendingLoads.delete(lang));
146
- state.pendingLoads.set(lang, pending);
147
- }
148
- await pending;
149
- }
150
- // Main API: get highlighter with language loaded
151
- async function getHighlighter(language) {
152
- const lang = await normalizeLanguage(language);
153
- const instance = await getHighlighterInstance();
154
- await ensureLanguageLoaded(instance, lang);
155
- return instance;
156
- }
157
- // Convenience: convert code to HTML with dual themes (CSS-based switching)
158
- async function codeToHtml({ code, language }) {
159
- const lang = await normalizeLanguage(language);
160
- const highlighter = await getHighlighter(language);
161
- return highlighter.codeToHtml(code, {
162
- lang,
163
- themes: CONFIG.themes,
164
- });
165
- }
166
- // Convert code to HTML with explicit theme selection (for runtime theme detection)
167
- async function codeToThemedHtml({ code, language, theme, decorations, }) {
168
- const lang = await normalizeLanguage(language);
169
- const highlighter = await getHighlighter(language);
170
- if (theme === 'light' || theme === 'dark') {
171
- return highlighter.codeToHtml(code, {
172
- lang,
173
- theme: CONFIG.themes[theme],
174
- decorations,
175
- });
176
- }
177
- return highlighter.codeToHtml(code, {
178
- lang,
179
- themes: CONFIG.themes,
180
- decorations,
181
- });
182
- }
183
- // Check if a language is loaded (sync — only meaningful after a prior async normalize)
184
- const isLanguageLoaded = (language) => {
185
- return state.loadedLanguages.has(language);
186
- };
187
- exports.isLanguageLoaded = isLanguageLoaded;
188
- //# sourceMappingURL=shiki.js.map
package/lib/shiki.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"shiki.js","sourceRoot":"","sources":["../src/shiki.tsx"],"names":[],"mappings":"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"}