@player-ui/markdown-plugin 0.4.0--canary.143.5197
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/dist/index.cjs.js +302 -0
- package/dist/index.d.ts +140 -0
- package/dist/index.esm.js +298 -0
- package/dist/markdown-plugin.dev.js +26467 -0
- package/dist/markdown-plugin.prod.js +2 -0
- package/package.json +69 -0
- package/src/index.ts +54 -0
- package/src/types.ts +140 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/markdownParser.ts +53 -0
- package/src/utils/transformers.ts +327 -0
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import { NodeType, resolveDataRefsInString } from '@player-ui/player';
|
|
2
|
+
import { fromMarkdown } from 'mdast-util-from-markdown';
|
|
3
|
+
|
|
4
|
+
var __defProp$1 = Object.defineProperty;
|
|
5
|
+
var __defProps$1 = Object.defineProperties;
|
|
6
|
+
var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
|
|
7
|
+
var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
|
|
8
|
+
var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues$1 = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp$1.call(b, prop))
|
|
14
|
+
__defNormalProp$1(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols$1)
|
|
16
|
+
for (var prop of __getOwnPropSymbols$1(b)) {
|
|
17
|
+
if (__propIsEnum$1.call(b, prop))
|
|
18
|
+
__defNormalProp$1(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
|
|
23
|
+
function swapMarkdownType(asset) {
|
|
24
|
+
return __spreadProps$1(__spreadValues$1({}, asset), { type: "text" });
|
|
25
|
+
}
|
|
26
|
+
const textTransformer = ({ astNode, asset, mappers }) => {
|
|
27
|
+
const { value } = astNode;
|
|
28
|
+
return mappers.text({
|
|
29
|
+
originalAsset: asset,
|
|
30
|
+
value
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
const emphasisTransformer = ({
|
|
34
|
+
astNode,
|
|
35
|
+
asset,
|
|
36
|
+
mappers,
|
|
37
|
+
transformers: transformers2
|
|
38
|
+
}) => {
|
|
39
|
+
if (mappers.emphasis) {
|
|
40
|
+
const { children } = astNode;
|
|
41
|
+
const value = children.map((node) => transformers2[node.type]({ astNode: node, asset, mappers, transformers: transformers2 }));
|
|
42
|
+
return mappers.emphasis({
|
|
43
|
+
originalAsset: asset,
|
|
44
|
+
value
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return swapMarkdownType(asset);
|
|
48
|
+
};
|
|
49
|
+
const strongTransformer = ({
|
|
50
|
+
astNode,
|
|
51
|
+
asset,
|
|
52
|
+
mappers,
|
|
53
|
+
transformers: transformers2
|
|
54
|
+
}) => {
|
|
55
|
+
if (mappers.strong) {
|
|
56
|
+
const { children } = astNode;
|
|
57
|
+
const value = children.map((node) => transformers2[node.type]({ astNode: node, asset, mappers, transformers: transformers2 }));
|
|
58
|
+
return mappers.strong({
|
|
59
|
+
originalAsset: asset,
|
|
60
|
+
value
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return swapMarkdownType(asset);
|
|
64
|
+
};
|
|
65
|
+
const paragraphTransformer = ({
|
|
66
|
+
astNode,
|
|
67
|
+
asset,
|
|
68
|
+
mappers,
|
|
69
|
+
transformers: transformers2
|
|
70
|
+
}) => {
|
|
71
|
+
const { children } = astNode;
|
|
72
|
+
if (children.every(({ type }) => Boolean(mappers[type]))) {
|
|
73
|
+
const value = children.map((node) => transformers2[node.type]({ astNode: node, asset, mappers, transformers: transformers2 }));
|
|
74
|
+
return mappers.paragraph({
|
|
75
|
+
originalAsset: asset,
|
|
76
|
+
value
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return swapMarkdownType(asset);
|
|
80
|
+
};
|
|
81
|
+
const listTransformer = ({
|
|
82
|
+
astNode,
|
|
83
|
+
asset,
|
|
84
|
+
mappers,
|
|
85
|
+
transformers: transformers2
|
|
86
|
+
}) => {
|
|
87
|
+
if (mappers.list) {
|
|
88
|
+
const { children, ordered, start } = astNode;
|
|
89
|
+
const value = children.map((node) => transformers2[node.type]({ astNode: node, asset, mappers, transformers: transformers2 }));
|
|
90
|
+
return mappers.list({
|
|
91
|
+
originalAsset: asset,
|
|
92
|
+
value,
|
|
93
|
+
ordered: Boolean(ordered),
|
|
94
|
+
start: start || void 0
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
return swapMarkdownType(asset);
|
|
98
|
+
};
|
|
99
|
+
const listItemTransformer = ({
|
|
100
|
+
astNode,
|
|
101
|
+
asset,
|
|
102
|
+
mappers,
|
|
103
|
+
transformers: transformers2
|
|
104
|
+
}) => {
|
|
105
|
+
const { children } = astNode;
|
|
106
|
+
const value = children.map((node) => transformers2[node.type]({ astNode: node, asset, mappers, transformers: transformers2 }));
|
|
107
|
+
const mapper = mappers.listItem || mappers.paragraph;
|
|
108
|
+
return mapper({
|
|
109
|
+
originalAsset: asset,
|
|
110
|
+
value
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
const linkTransformer = ({
|
|
114
|
+
astNode,
|
|
115
|
+
asset,
|
|
116
|
+
mappers,
|
|
117
|
+
transformers: transformers2
|
|
118
|
+
}) => {
|
|
119
|
+
if (mappers.link) {
|
|
120
|
+
const { children, url } = astNode;
|
|
121
|
+
const value = children.map((node) => transformers2[node.type]({ astNode: node, asset, mappers, transformers: transformers2 }));
|
|
122
|
+
return mappers.link({
|
|
123
|
+
originalAsset: asset,
|
|
124
|
+
href: url,
|
|
125
|
+
value
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return swapMarkdownType(asset);
|
|
129
|
+
};
|
|
130
|
+
const imageTransformer = ({ astNode, asset, mappers }) => {
|
|
131
|
+
if (mappers.image) {
|
|
132
|
+
const { title, url, alt } = astNode;
|
|
133
|
+
return mappers.image({
|
|
134
|
+
originalAsset: asset,
|
|
135
|
+
src: url,
|
|
136
|
+
value: title || alt || ""
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return swapMarkdownType(asset);
|
|
140
|
+
};
|
|
141
|
+
const blockquoteTransformer = ({
|
|
142
|
+
astNode,
|
|
143
|
+
asset,
|
|
144
|
+
mappers,
|
|
145
|
+
transformers: transformers2
|
|
146
|
+
}) => {
|
|
147
|
+
if (mappers.blockquote) {
|
|
148
|
+
const { children } = astNode;
|
|
149
|
+
const value = children.map((node) => transformers2[node.type]({ astNode: node, asset, mappers, transformers: transformers2 }));
|
|
150
|
+
return mappers.blockquote({
|
|
151
|
+
originalAsset: asset,
|
|
152
|
+
value
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return swapMarkdownType(asset);
|
|
156
|
+
};
|
|
157
|
+
const inlineCodeTransformer = ({
|
|
158
|
+
astNode,
|
|
159
|
+
asset,
|
|
160
|
+
mappers
|
|
161
|
+
}) => {
|
|
162
|
+
if (mappers.inlineCode) {
|
|
163
|
+
const { value } = astNode;
|
|
164
|
+
return mappers.inlineCode({
|
|
165
|
+
originalAsset: asset,
|
|
166
|
+
value
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
return swapMarkdownType(asset);
|
|
170
|
+
};
|
|
171
|
+
const codeTransformer = ({ astNode, asset, mappers }) => {
|
|
172
|
+
if (mappers.code) {
|
|
173
|
+
const { value, lang } = astNode;
|
|
174
|
+
return mappers.code({
|
|
175
|
+
originalAsset: asset,
|
|
176
|
+
value,
|
|
177
|
+
lang: lang || void 0
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
return swapMarkdownType(asset);
|
|
181
|
+
};
|
|
182
|
+
const horizontalRuleTransformer = ({
|
|
183
|
+
asset,
|
|
184
|
+
mappers
|
|
185
|
+
}) => {
|
|
186
|
+
if (mappers.horizontalRule) {
|
|
187
|
+
return mappers.horizontalRule({
|
|
188
|
+
originalAsset: asset,
|
|
189
|
+
value: "---"
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
return swapMarkdownType(asset);
|
|
193
|
+
};
|
|
194
|
+
const headingTransformer = ({
|
|
195
|
+
astNode,
|
|
196
|
+
asset,
|
|
197
|
+
mappers,
|
|
198
|
+
transformers: transformers2
|
|
199
|
+
}) => {
|
|
200
|
+
if (mappers.heading) {
|
|
201
|
+
const { children, depth } = astNode;
|
|
202
|
+
const value = children.map((node) => transformers2[node.type]({ astNode: node, asset, mappers, transformers: transformers2 }));
|
|
203
|
+
return mappers.heading({
|
|
204
|
+
originalAsset: asset,
|
|
205
|
+
value,
|
|
206
|
+
depth
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
return swapMarkdownType(asset);
|
|
210
|
+
};
|
|
211
|
+
const transformers = {
|
|
212
|
+
horizontalRule: horizontalRuleTransformer,
|
|
213
|
+
text: textTransformer,
|
|
214
|
+
emphasis: emphasisTransformer,
|
|
215
|
+
strong: strongTransformer,
|
|
216
|
+
blockquote: blockquoteTransformer,
|
|
217
|
+
list: listTransformer,
|
|
218
|
+
listItem: listItemTransformer,
|
|
219
|
+
link: linkTransformer,
|
|
220
|
+
image: imageTransformer,
|
|
221
|
+
paragraph: paragraphTransformer,
|
|
222
|
+
code: codeTransformer,
|
|
223
|
+
heading: headingTransformer,
|
|
224
|
+
inlineCode: inlineCodeTransformer
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
function parseAssetMarkdownContent({
|
|
228
|
+
asset,
|
|
229
|
+
mappers,
|
|
230
|
+
parser
|
|
231
|
+
}) {
|
|
232
|
+
const { children } = fromMarkdown(asset.value);
|
|
233
|
+
return children.map((node) => {
|
|
234
|
+
const transformer = transformers[node.type];
|
|
235
|
+
const content = transformer({
|
|
236
|
+
astNode: node,
|
|
237
|
+
asset,
|
|
238
|
+
mappers,
|
|
239
|
+
transformers
|
|
240
|
+
});
|
|
241
|
+
return (parser == null ? void 0 : parser(content, children.length > 1 ? NodeType.Value : NodeType.Asset)) || null;
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
var __defProp = Object.defineProperty;
|
|
246
|
+
var __defProps = Object.defineProperties;
|
|
247
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
248
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
249
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
250
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
251
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
252
|
+
var __spreadValues = (a, b) => {
|
|
253
|
+
for (var prop in b || (b = {}))
|
|
254
|
+
if (__hasOwnProp.call(b, prop))
|
|
255
|
+
__defNormalProp(a, prop, b[prop]);
|
|
256
|
+
if (__getOwnPropSymbols)
|
|
257
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
258
|
+
if (__propIsEnum.call(b, prop))
|
|
259
|
+
__defNormalProp(a, prop, b[prop]);
|
|
260
|
+
}
|
|
261
|
+
return a;
|
|
262
|
+
};
|
|
263
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
264
|
+
class MarkdownPlugin {
|
|
265
|
+
constructor(mappers) {
|
|
266
|
+
this.name = "MarkdownPlugin";
|
|
267
|
+
this.mappers = mappers;
|
|
268
|
+
}
|
|
269
|
+
apply(player) {
|
|
270
|
+
player.hooks.view.tap(this.name, (view) => {
|
|
271
|
+
view.hooks.resolver.tap(this.name, (resolver) => {
|
|
272
|
+
resolver.hooks.beforeResolve.tap(this.name, (node, options) => {
|
|
273
|
+
if ((node == null ? void 0 : node.type) === NodeType.Asset && node.value.type === "markdown") {
|
|
274
|
+
const resolvedContent = resolveDataRefsInString(node.value.value, {
|
|
275
|
+
evaluate: options.evaluate,
|
|
276
|
+
model: options.data.model
|
|
277
|
+
});
|
|
278
|
+
const parsed = parseAssetMarkdownContent({
|
|
279
|
+
asset: __spreadProps(__spreadValues({}, node.value), {
|
|
280
|
+
value: resolvedContent
|
|
281
|
+
}),
|
|
282
|
+
mappers: this.mappers,
|
|
283
|
+
parser: options.parseNode
|
|
284
|
+
});
|
|
285
|
+
if (parsed.length === 1) {
|
|
286
|
+
return parsed[0];
|
|
287
|
+
}
|
|
288
|
+
return __spreadProps(__spreadValues({}, node), { nodeType: NodeType.MultiNode, values: parsed });
|
|
289
|
+
}
|
|
290
|
+
return node;
|
|
291
|
+
});
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
export { MarkdownPlugin };
|
|
298
|
+
//# sourceMappingURL=index.esm.js.map
|