@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.
@@ -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