@podlite/to-jsx 0.0.18 → 0.0.20

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/esm/index.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import { PodNode, PodliteExport } from '@podlite/schema';
3
+ export declare type CreateElement = typeof React.createElement;
4
+ export interface WrapElement {
5
+ (node: PodNode, children: React.ReactChild, ctx: any): JSX.Element;
6
+ }
7
+ export declare const Podlite: React.FC<{
8
+ [key: string]: any;
9
+ children?: string;
10
+ file?: string;
11
+ plugins?: any;
12
+ wrapElement?: WrapElement;
13
+ tree?: PodliteExport;
14
+ }>;
15
+ export declare const TestPodlite: ({ children, ...options }: {
16
+ [x: string]: any;
17
+ children: any;
18
+ }) => React.JSX.Element;
19
+ export declare const makeTestPodlite: (podlite?: import("@podlite/schema").Podlite) => ({ children, ...options }: {
20
+ [x: string]: any;
21
+ children: any;
22
+ }) => React.JSX.Element;
23
+ export default Podlite;
package/esm/index.js ADDED
@@ -0,0 +1,411 @@
1
+ import * as React from 'react';
2
+ import { createElement } from 'react';
3
+ import { podlite as podlite_core } from 'podlite';
4
+ import { getNodeId, parse, makeAttrs, emptyContent, content as nodeContent, setFn, subUse, toAny, isNamedBlock, isSemanticBlock, Writer, toAnyRules, frozenIds, } from '@podlite/schema';
5
+ import { pluginCleanLocation as clean_plugin } from '@podlite/schema';
6
+ const helperMakeReact = ({ wrapElement }) => {
7
+ let i_key_i = 0;
8
+ let mapByType = {};
9
+ const getIdForNode = ({ type = 'notype', name = 'noname' }) => {
10
+ const type_idx = `${type}_${name}`;
11
+ if (!mapByType[type_idx]) {
12
+ mapByType[type_idx] = 0;
13
+ }
14
+ ++mapByType[type_idx];
15
+ return `${type_idx}_${mapByType[type_idx]}`;
16
+ };
17
+ return function (src, node, children, extraProps = {}, ctx = {}) {
18
+ // for string return it
19
+ if (typeof node == 'string') {
20
+ return node;
21
+ }
22
+ const { ...attr } = node;
23
+ const key = 'type' in node && node.type ? getIdForNode(node) : ++i_key_i;
24
+ const result = typeof src === 'function'
25
+ ? src({ ...attr, key, children }, children)
26
+ : createElement(src, { ...extraProps, key }, children);
27
+ // // create react element and pass key
28
+ // if (!isValidElementType(src)) {
29
+ // throw new Error(`Bad React element for ${ruleName} rule `)
30
+ // }
31
+ if (typeof wrapElement === 'function') {
32
+ return wrapElement(node, result, ctx);
33
+ }
34
+ return result;
35
+ };
36
+ };
37
+ export const Podlite = ({ children, ...options }) => {
38
+ const result = podlite(children, options);
39
+ return result;
40
+ };
41
+ const mapToReact = (makeComponent) => {
42
+ const mkComponent = src => (writer, processor) => (node, ctx, interator) => {
43
+ // prepare extraProps for createElement
44
+ // add id attribute if exists
45
+ const id = getNodeId(node, ctx)?.replace(/\s/g, '-');
46
+ // check if node.content defined
47
+ return makeComponent(src, node, 'content' in node ? interator(node.content, { ...ctx }) : [], { id }, ctx);
48
+ };
49
+ // Handle nested block and :nested block attribute
50
+ const handleNested = (defaultHandler, implicitLevel) => {
51
+ return (writer, processor) => {
52
+ const defaultHandlerInited = defaultHandler(writer, processor);
53
+ return (node, ctx, interator) => {
54
+ const nesting = makeAttrs(node, ctx).getFirstValue('nested') || implicitLevel;
55
+ const children = defaultHandlerInited(node, ctx, interator);
56
+ // if no nesting needs - simply return children
57
+ if (!nesting) {
58
+ return children;
59
+ }
60
+ const arr = [...Array(nesting).keys()];
61
+ return arr.reduce(acc => makeComponent('blockquote', node, acc), children);
62
+ };
63
+ };
64
+ };
65
+ return {
66
+ pod: mkComponent('div'),
67
+ root: nodeContent,
68
+ data: emptyContent(),
69
+ ':ambient': emptyContent(),
70
+ ':code': mkComponent(({ children, key }) => (React.createElement("code", { key: key },
71
+ React.createElement("pre", null, children)))),
72
+ code: mkComponent(({ children, key }) => (React.createElement("code", { key: key },
73
+ React.createElement("pre", null, children)))),
74
+ image: nodeContent,
75
+ ':image': setFn((node, ctx) => {
76
+ return mkComponent(({ children, key }) => React.createElement("img", { key: key, src: node.src, alt: node.alt }));
77
+ }),
78
+ ':text': (writer, processor) => (node, ctx, interator) => {
79
+ return node.value;
80
+ },
81
+ ':verbatim': (writer, processor) => (node, ctx, interator) => {
82
+ return node.value;
83
+ },
84
+ 'head:block': subUse({
85
+ // inside head don't wrap into <p>
86
+ ':para': nodeContent,
87
+ }, setFn((node, ctx) => {
88
+ const { level } = node;
89
+ const id = getNodeId(node, ctx)?.replace(/\s/g, '-');
90
+ return mkComponent(({ level, children, key }) => createElement(`h${level}`, { key, id }, children));
91
+ })),
92
+ ':blankline': emptyContent(),
93
+ ':para': mkComponent('p'),
94
+ para: mkComponent('div'),
95
+ 'comment:block': emptyContent(),
96
+ defn: subUse([
97
+ // to avoid overlap para blocks handlers
98
+ // define general :para at first
99
+ { ':para': mkComponent('dd') },
100
+ { 'term:para': mkComponent('dt') },
101
+ ], nodeContent),
102
+ nested: handleNested(nodeContent, 1),
103
+ output: mkComponent(({ children, key }) => (React.createElement("pre", { key: key },
104
+ React.createElement("samp", null, children)))),
105
+ input: mkComponent(({ children, key }) => (React.createElement("pre", { key: key },
106
+ React.createElement("kbd", null, children)))),
107
+ // Directives
108
+ ':config': setFn((node, ctx) => {
109
+ // setup context
110
+ if (!ctx.hasOwnProperty('config'))
111
+ ctx.config = {};
112
+ //collect configs in context
113
+ ctx.config[node.name] = node.config;
114
+ return emptyContent();
115
+ }),
116
+ ':alias': setFn((node, ctx) => {
117
+ // set alias
118
+ if (!ctx.hasOwnProperty('alias'))
119
+ ctx.alias = {};
120
+ //collect configs in context
121
+ ctx.alias[node.name] = node.replacement;
122
+ return emptyContent();
123
+ }),
124
+ // Formatting codes
125
+ 'A<>': (writer, processor) => (node, ctx, interator) => {
126
+ let term = node.content;
127
+ if (typeof term !== 'string' && 'value' in term) {
128
+ term = term.value;
129
+ }
130
+ //get replacement text
131
+ if (!(ctx.alias && ctx.alias.hasOwnProperty(term))) {
132
+ return makeComponent(({ children, key }) => React.createElement("code", { key: key },
133
+ "A<",
134
+ children,
135
+ ">"), node, interator(node.content, ctx));
136
+ }
137
+ else {
138
+ const src = ctx.alias[term].join('\n');
139
+ const tree_1 = processor(src);
140
+ // now clean locations
141
+ const tree = clean_plugin()(tree_1);
142
+ if (tree[0].type === 'para') {
143
+ return interator(tree[0].content, ctx);
144
+ }
145
+ else {
146
+ return interator(tree, ctx);
147
+ }
148
+ }
149
+ },
150
+ 'B<>': mkComponent('strong'),
151
+ 'C<>': mkComponent('code'),
152
+ 'E<>': (writer, processor) => (node, ctx, interator) => {
153
+ if ('content' in node && Array.isArray(node.content))
154
+ return node.content
155
+ .filter(e => e && e.type == 'number')
156
+ .map(element => {
157
+ return String.fromCharCode(element.value);
158
+ })
159
+ .join('');
160
+ },
161
+ 'I<>': mkComponent('i'),
162
+ 'K<>': mkComponent('kbd'),
163
+ /**
164
+ * CSS rules for footnotes
165
+
166
+ .footnote a {
167
+ text-decoration: none;
168
+ }
169
+ .footnotes {
170
+ border-top-style: solid;
171
+ border-top-width: 1px;
172
+ border-top-color: #eee;
173
+ }
174
+ */
175
+ 'N<>': (writer, processor) => {
176
+ writer.addListener('end', () => {
177
+ if (!writer.hasOwnProperty('FOOTNOTES')) {
178
+ return;
179
+ }
180
+ const footnotes = writer.FOOTNOTES;
181
+ if (footnotes.length < 1) {
182
+ return;
183
+ } // if empty footnotes
184
+ if (!writer.hasOwnProperty('postInterator')) {
185
+ writer.postInterator = [];
186
+ }
187
+ const FootNotes = makeComponent(({ children, key }) => (React.createElement("div", { key: `${key}_FOOTNOTES`, className: "footnotes" }, footnotes.map((footnote, id) => {
188
+ return (React.createElement("p", { key: id },
189
+ React.createElement("sup", { id: footnote.fnId, className: "footnote" },
190
+ React.createElement("a", { href: `#${footnote.fnRefId}` },
191
+ "[",
192
+ footnote.gid,
193
+ "]")),
194
+ footnote.make()));
195
+ }))), {});
196
+ writer.postInterator.push(FootNotes);
197
+ });
198
+ return (node, ctx, interator) => {
199
+ // skip empty notes
200
+ if (node.content.length < 1) {
201
+ return;
202
+ }
203
+ if (!writer.hasOwnProperty('gid')) {
204
+ writer.gid = 1;
205
+ }
206
+ // get foot note id
207
+ const gid = writer.gid++;
208
+ const fnRefId = `fnref:${gid}`;
209
+ const fnId = `fn:${gid}`;
210
+ if (!writer.hasOwnProperty('FOOTNOTES')) {
211
+ writer.FOOTNOTES = [];
212
+ }
213
+ writer.FOOTNOTES.push({
214
+ gid,
215
+ fnRefId,
216
+ fnId,
217
+ node,
218
+ make: () => {
219
+ return interator(node.content, ctx);
220
+ },
221
+ });
222
+ return makeComponent(({ children, key }) => (React.createElement("sup", { key: key, id: fnRefId, className: "footnote" },
223
+ React.createElement("a", { href: `#${fnId}` },
224
+ "[",
225
+ gid,
226
+ "]"))), node);
227
+ };
228
+ },
229
+ 'R<>': mkComponent('var'),
230
+ 'T<>': mkComponent('samp'),
231
+ 'D<>': (writer, processor) => (node, ctx, interator) => {
232
+ let { synonyms } = node;
233
+ let definition = [node.content[0]];
234
+ if (synonyms) {
235
+ definition = synonyms;
236
+ }
237
+ if (!writer.hasOwnProperty('DEFINITIONS')) {
238
+ writer.DEFINITIONS = [];
239
+ }
240
+ writer.DEFINITIONS.push({ definition });
241
+ return makeComponent('dfn', node, interator(node.content, ctx));
242
+ },
243
+ 'L<>': setFn((node, ctx) => {
244
+ let { meta } = node;
245
+ if (meta === null) {
246
+ meta = node.content;
247
+ }
248
+ //TODO: extract text from content array
249
+ if (Array.isArray(meta)) {
250
+ meta = meta[0];
251
+ }
252
+ if (meta && typeof meta !== 'string' && 'value' in meta) {
253
+ meta = meta.value;
254
+ }
255
+ return mkComponent(({ children, key }) => (React.createElement("a", { href: meta, key: key }, children)));
256
+ }),
257
+ 'S<>': (writer, processor) => (node, ctx, interator) => {
258
+ let content = node.content || '';
259
+ if (typeof content !== 'string' && 'value' in content) {
260
+ content = content.value;
261
+ }
262
+ const Content = content.split('').map((symbol, index) => {
263
+ if (symbol === ' ')
264
+ return '\u00a0';
265
+ if (symbol === '\n')
266
+ return React.createElement("br", { key: index });
267
+ return symbol;
268
+ });
269
+ return makeComponent(({ children, key }) => children, {}, Content);
270
+ },
271
+ 'V<>': nodeContent,
272
+ 'Z<>': emptyContent(),
273
+ 'U<>': mkComponent('u'),
274
+ 'X<>': (writer, processor) => (node, ctx, interator) => {
275
+ let { entry } = node;
276
+ if (entry === null && node.content.length > 0) {
277
+ //@ts-ignore
278
+ entry = [node.content[0]];
279
+ }
280
+ // else { return }
281
+ if (!writer.hasOwnProperty('INDEXTERMS')) {
282
+ writer.INDEXTERMS = [];
283
+ }
284
+ writer.INDEXTERMS.push({
285
+ entry,
286
+ });
287
+ return interator(node.content, ctx);
288
+ },
289
+ 'Delete<>': mkComponent('del'),
290
+ // table section
291
+ table: (writer, processor) => (node, ctx, interator) => {
292
+ const conf = makeAttrs(node, ctx);
293
+ let attr = { caption: '' };
294
+ if (conf.exists('caption')) {
295
+ const caption = conf.getFirstValue('caption');
296
+ attr.caption = caption;
297
+ }
298
+ if (typeof node === 'string') {
299
+ return node;
300
+ }
301
+ if (!('content' in node)) {
302
+ console.warn('[jsx] no content in node');
303
+ return '';
304
+ }
305
+ const id = getNodeId(node, ctx)?.replace(/\s/g, '-');
306
+ return makeComponent(({ key, children }) => {
307
+ return (React.createElement("table", { key: key, id: id },
308
+ React.createElement("caption", { className: "caption" }, attr.caption),
309
+ React.createElement("tbody", null, children)));
310
+ }, node, interator(node.content, { ...ctx }));
311
+ },
312
+ ':separator': emptyContent(),
313
+ table_row: mkComponent('tr'),
314
+ table_cell: mkComponent('td'),
315
+ table_head: subUse({
316
+ table_cell: mkComponent('th'),
317
+ }, mkComponent('tr')),
318
+ ':list': setFn((node, ctx) => node.list === 'ordered' ? mkComponent('ol') : node.list === 'variable' ? mkComponent('dl') : mkComponent('ul')),
319
+ 'item:block': (writer, processor) => (node, ctx, interator) => {
320
+ if (typeof node === 'string') {
321
+ return node;
322
+ }
323
+ if (!('content' in node)) {
324
+ console.warn('[jsx] no content in node');
325
+ return '';
326
+ }
327
+ // make text from first para
328
+ if (!(node.content instanceof Array)) {
329
+ console.error(node);
330
+ }
331
+ const id = getNodeId(node, ctx)?.replace(/\s/g, '-');
332
+ return makeComponent('li', node, interator(node.content, { ...ctx }), { id });
333
+ },
334
+ // table of content
335
+ ':toc': setFn((node, ctx) => {
336
+ const tocTitle = node.title;
337
+ return mkComponent(({ children, key }) => (React.createElement("div", { className: "toc", key: key },
338
+ tocTitle ? React.createElement("div", { className: "toctitle" }, tocTitle) : '',
339
+ children)));
340
+ }),
341
+ ':toc-list': setFn((node, ctx) => {
342
+ const { level } = node;
343
+ return mkComponent(({ children, key }) => (React.createElement("ul", { className: `toc-list listlevel${level}`, key: key }, children)));
344
+ }),
345
+ ':toc-item': subUse({
346
+ // inside head don't wrap into <p>
347
+ ':para': nodeContent,
348
+ }, setFn((node, ctx) => {
349
+ return mkComponent(({ children, key }) => (React.createElement("li", { className: "toc-item", key: key }, children)));
350
+ })),
351
+ };
352
+ };
353
+ function podlite(children, { file, plugins = () => { }, wrapElement, tree, }, ...args) {
354
+ const ast = (tree => {
355
+ if (tree)
356
+ return tree.interator;
357
+ let podlite = podlite_core({ importPlugins: true });
358
+ let treeAfterParsed = podlite.parse(children || file);
359
+ return podlite.toAst(treeAfterParsed);
360
+ })(tree);
361
+ // const ast = parse( children || content )
362
+ let i_key_i = 10000;
363
+ const makeComponent = helperMakeReact({ wrapElement });
364
+ const jsxPlugins = toAnyRules('toJSX', podlite_core({ importPlugins: true }).getPlugins());
365
+ // initialize each plugin
366
+ const jsxPluginInited = Object.fromEntries(Object.entries(jsxPlugins).map(([key, value]) => [key, value(makeComponent)]));
367
+ const rules = {
368
+ ...mapToReact(makeComponent),
369
+ ...plugins(makeComponent),
370
+ ...jsxPluginInited,
371
+ };
372
+ const writer = new Writer(s => { });
373
+ const res = toAny({ processor: parse })
374
+ .use({
375
+ '*:*': () => (node, ctx, interator) => {
376
+ // skip named blocks
377
+ if (isNamedBlock(node.name)) {
378
+ return null;
379
+ }
380
+ if (isSemanticBlock(node)) {
381
+ return makeComponent(({ key, children }) => {
382
+ return (React.createElement("div", { key: key },
383
+ React.createElement("h1", { className: node.name, key: key }, node.name),
384
+ interator(node.content, { ...ctx })));
385
+ }, node, interator(node.content, { ...ctx }));
386
+ }
387
+ console.warn('[podlite] Not supported: ' + JSON.stringify(node, null, 2));
388
+ return createElement('code', { key: ++i_key_i }, `not supported node:${JSON.stringify(node, null, 2)}`);
389
+ },
390
+ })
391
+ .use(rules)
392
+ .run(ast, writer);
393
+ // union main react elements and post processed via onEnd event
394
+ return new Array().concat(res.interator, writer.postInterator);
395
+ }
396
+ // this is a helper function for using in unit test
397
+ export const TestPodlite = ({ children, ...options }) => {
398
+ let podlite = podlite_core({ importPlugins: true });
399
+ // its replace all ids with "id"
400
+ let treeAfterParsed = frozenIds()(podlite.parse(children));
401
+ const tree = podlite.toAst(treeAfterParsed);
402
+ return React.createElement(Podlite, { ...{ children, ...options, tree: { interator: tree } } });
403
+ };
404
+ export const makeTestPodlite = (podlite = podlite_core({ importPlugins: true })) => ({ children, ...options }) => {
405
+ let treeAfterParsed = podlite.parse(children);
406
+ // its replace all ids with "id"
407
+ const tree = frozenIds()(podlite.toAst(treeAfterParsed));
408
+ return React.createElement(Podlite, { ...{ children, ...options, tree: { interator: tree } } });
409
+ };
410
+ export default Podlite;
411
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}