@knapsack/rendering-utils 5.0.0--canary.6593.d6350c3.0 → 5.0.0--canary.7791.86072ba.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/.lintstagedrc.mjs +2 -2
- package/.turbo/turbo-build.log +1 -4
- package/.turbo/turbo-lint.log +1 -4
- package/.turbo/turbo-test.log +38 -41
- package/CHANGELOG.md +142 -0
- package/dist/blocks-to-html.d.ts +1 -1
- package/dist/blocks-to-html.d.ts.map +1 -1
- package/dist/blocks-to-html.js +55 -16
- package/dist/blocks-to-html.js.map +1 -1
- package/dist/rendering.d.ts.map +1 -1
- package/dist/rendering.js +7 -10
- package/dist/rendering.js.map +1 -1
- package/dist/slot-layout-options-utils.js +4 -4
- package/dist/slot-layout-options-utils.js.map +1 -1
- package/package.json +13 -14
- package/src/blocks-to-html.ts +65 -8
- package/src/rendering.ts +35 -32
- package/vitest.config.ts +7 -0
- package/.eslintignore +0 -1
- package/.eslintrc.cjs +0 -9
- package/ava.config.cjs +0 -3
package/.lintstagedrc.mjs
CHANGED
package/.turbo/turbo-build.log
CHANGED
package/.turbo/turbo-lint.log
CHANGED
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,47 +1,44 @@
|
|
|
1
|
+
$ vitest run
|
|
1
2
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
✔ blocksToHtml - empty array
|
|
7
|
-
✔ blocksToHtml - single divider-block
|
|
8
|
-
✔ blocksToHtml - single text-editor block
|
|
9
|
-
✔ blocksToHtml - single code-snippet block
|
|
10
|
-
✔ blocksToHtml - single callout block
|
|
11
|
-
✔ blocksToHtml - single callout block with error type
|
|
12
|
-
✔ blocksToHtml - single image-block with single image
|
|
13
|
-
✔ blocksToHtml - single image-block with multiple images
|
|
14
|
-
✔ blocksToHtml - single image-block with no images
|
|
15
|
-
✔ blocksToHtml - single image-block with empty images array
|
|
16
|
-
✔ blocksToHtml - single video block
|
|
17
|
-
✔ blocksToHtml - single files-list block with image files
|
|
18
|
-
✔ blocksToHtml - single files-list block with non-image files
|
|
19
|
-
✔ blocksToHtml - single files-list block with mixed files
|
|
20
|
-
✔ blocksToHtml - single files-list block with empty array
|
|
21
|
-
✔ blocksToHtml - single shortcut-tiles block
|
|
22
|
-
✔ blocksToHtml - single shortcut-tiles block with empty shortcuts
|
|
23
|
-
✔ blocksToHtml - single shortcut-tiles block with no image
|
|
24
|
-
✔ blocksToHtml - single shortcut-tiles block with link but no name
|
|
25
|
-
✔ blocksToHtml - block with no data
|
|
26
|
-
✔ blocksToHtml - file extensions detection for images
|
|
27
|
-
✔ blocksToHtml - case insensitive file extension detection
|
|
28
|
-
✔ blocksToHtml - files with no extension
|
|
29
|
-
✔ blocksToHtml - unknown block type throws error
|
|
30
|
-
marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.
|
|
3
|
+
[1m[30m[46m RUN [49m[39m[22m [36mv4.1.9 [39m[90m/home/runner/work/app-monorepo/app-monorepo/libs/rendering-utils[39m
|
|
4
|
+
|
|
5
|
+
[90mstderr[2m | src/blocks-to-html.test.ts[2m > [22m[2mblocksToHtml - single markdown-block with string
|
|
6
|
+
[22m[39mmarked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.
|
|
31
7
|
marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.
|
|
32
|
-
|
|
8
|
+
|
|
9
|
+
[90mstderr[2m | src/blocks-to-html.test.ts[2m > [22m[2mblocksToHtml - single markdown-block with array
|
|
10
|
+
[22m[39mmarked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.
|
|
33
11
|
marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.
|
|
34
|
-
|
|
12
|
+
|
|
13
|
+
[90mstderr[2m | src/blocks-to-html.test.ts[2m > [22m[2mblocksToHtml - single markdown-block with empty string
|
|
14
|
+
[22m[39mmarked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.
|
|
35
15
|
marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.
|
|
36
|
-
|
|
16
|
+
|
|
17
|
+
[90mstderr[2m | src/blocks-to-html.test.ts[2m > [22m[2mblocksToHtml - single markdown-block with undefined md
|
|
18
|
+
[22m[39mmarked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.
|
|
37
19
|
marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.
|
|
38
|
-
|
|
20
|
+
|
|
21
|
+
[90mstderr[2m | src/blocks-to-html.test.ts[2m > [22m[2mblocksToHtml - text-editor with unknown TipTap node type does not throw
|
|
22
|
+
[22m[39m[blocks-to-html] TipTap render failed for block "test-1" (text-editor): RangeError: Unknown node type: this-node-type-does-not-exist
|
|
23
|
+
at Schema.nodeType (file:///home/runner/work/app-monorepo/app-monorepo/node_modules/[4m.pnpm[24m/prosemirror-model@1.25.7/node_modules/[4mprosemirror-model[24m/dist/index.js:2490:19)
|
|
24
|
+
at Function.fromJSON (file:///home/runner/work/app-monorepo/app-monorepo/node_modules/[4m.pnpm[24m/prosemirror-model@1.25.7/node_modules/[4mprosemirror-model[24m/dist/index.js:1530:27)
|
|
25
|
+
at Schema.nodeFromJSON (file:///home/runner/work/app-monorepo/app-monorepo/node_modules/[4m.pnpm[24m/prosemirror-model@1.25.7/node_modules/[4mprosemirror-model[24m/dist/index.js:2448:42)
|
|
26
|
+
at Array.map (<anonymous>)
|
|
27
|
+
at Function.fromJSON (file:///home/runner/work/app-monorepo/app-monorepo/node_modules/[4m.pnpm[24m/prosemirror-model@1.25.7/node_modules/[4mprosemirror-model[24m/dist/index.js:314:41)
|
|
28
|
+
at Function.fromJSON (file:///home/runner/work/app-monorepo/app-monorepo/node_modules/[4m.pnpm[24m/prosemirror-model@1.25.7/node_modules/[4mprosemirror-model[24m/dist/index.js:1529:32)
|
|
29
|
+
at generateHTML (file:///home/runner/work/app-monorepo/app-monorepo/node_modules/[4m.pnpm[24m/@tiptap+html@3.24.0_@tiptap+core@3.24.0_@tiptap+pm@3.24.0__@tiptap+pm@3.24.0_happy-dom@_5581d52037c54da583424e26a68fd3a3/node_modules/[4m@tiptap/html[24m/dist/server/index.js:54:28)
|
|
30
|
+
at convertTipTapJsonToHtml (/home/runner/work/app-monorepo/app-monorepo/libs/tiptap-utils/src/tiptap-utils.ts:27:22)
|
|
31
|
+
at tiptapToHtmlSafe [90m(/home/runner/work/app-monorepo/app-monorepo/libs/rendering-utils/[39msrc/blocks-to-html.ts:43:12[90m)[39m
|
|
32
|
+
at blockToHtml [90m(/home/runner/work/app-monorepo/app-monorepo/libs/rendering-utils/[39msrc/blocks-to-html.ts:65:14[90m)[39m
|
|
33
|
+
|
|
34
|
+
[90mstderr[2m | src/blocks-to-html.test.ts[2m > [22m[2mblocksToHtml - multiple different block types
|
|
35
|
+
[22m[39mmarked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.
|
|
39
36
|
marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
37
|
+
|
|
38
|
+
[32m✓[39m src/blocks-to-html.test.ts [2m([22m[2m34 tests[22m[2m)[22m[32m 195[2mms[22m[39m
|
|
39
|
+
|
|
40
|
+
[2m Test Files [22m [1m[32m1 passed[39m[22m[90m (1)[39m
|
|
41
|
+
[2m Tests [22m [1m[32m34 passed[39m[22m[90m (34)[39m
|
|
42
|
+
[2m Start at [22m 20:06:26
|
|
43
|
+
[2m Duration [22m 1.84s[2m (transform 274ms, setup 0ms, import 1.41s, tests 195ms, environment 0ms)[22m
|
|
44
|
+
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,145 @@
|
|
|
1
|
+
# v4.89.8 (Fri Feb 20 2026)
|
|
2
|
+
|
|
3
|
+
### Release Notes
|
|
4
|
+
|
|
5
|
+
#### KSP-7685: Synthetic Data for Conflict Enrichment/Resolution testing ([#7154](https://github.com/knapsack-labs/app-monorepo/pull/7154))
|
|
6
|
+
|
|
7
|
+
* **Documentation**
|
|
8
|
+
* Added synthetic multi-source test fixtures including component documentation, design tokens, and brand guidelines for comprehensive testing coverage.
|
|
9
|
+
|
|
10
|
+
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
#### 🐛 Bug Fix
|
|
15
|
+
|
|
16
|
+
- Merged latest in ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
17
|
+
- Fixed indentation erros ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
18
|
+
- merge latest in ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
19
|
+
- Merge branch 'latest' into sxa/KSP-7037-tests-v2 ([@sxalexander](https://github.com/sxalexander))
|
|
20
|
+
- Use node: protocol prefix in all .lintstagedrc.mjs files ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
21
|
+
- Migrated ESLint config to flat config format (ESLint 9) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
22
|
+
|
|
23
|
+
#### 🏠 Internal
|
|
24
|
+
|
|
25
|
+
- KSP-5516 Upgraded prettier to v3.8.1 and fix async API usage [#7191](https://github.com/knapsack-labs/app-monorepo/pull/7191) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
26
|
+
- KSP-7685: Synthetic Data for Conflict Enrichment/Resolution testing [#7154](https://github.com/knapsack-labs/app-monorepo/pull/7154) ([@sxalexander](https://github.com/sxalexander))
|
|
27
|
+
- KSP-5524 Migrated ESLint config to flat config format (ESLint 9) [#7162](https://github.com/knapsack-labs/app-monorepo/pull/7162) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
28
|
+
|
|
29
|
+
#### Authors: 2
|
|
30
|
+
|
|
31
|
+
- [@EmmanuelVelez](https://github.com/EmmanuelVelez)
|
|
32
|
+
- Sam Alexander ([@sxalexander](https://github.com/sxalexander))
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
# v4.89.7 (Fri Feb 06 2026)
|
|
37
|
+
|
|
38
|
+
#### 🐛 Bug Fix
|
|
39
|
+
|
|
40
|
+
- Merge branch 'latest' into feature/ksp-6555-remove-app-client-watchers-for-files-in-data-directory ([@EvanLovely](https://github.com/EvanLovely))
|
|
41
|
+
- Merge branch 'latest' into feature/ksp-6555-remove-app-client-watchers-for-files-in-data-directory ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
42
|
+
|
|
43
|
+
#### 🏠 Internal
|
|
44
|
+
|
|
45
|
+
- KSP-6106 Added consistent-type-imports rule with inline type syntax [#7128](https://github.com/knapsack-labs/app-monorepo/pull/7128) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
46
|
+
- KSP-7692: expand server actions body size limit [#7097](https://github.com/knapsack-labs/app-monorepo/pull/7097) ([@illepic](https://github.com/illepic))
|
|
47
|
+
- KSP-7623 resolved some of react-hooks/set-state-in-effect lint errors and enab… [#7077](https://github.com/knapsack-labs/app-monorepo/pull/7077) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
48
|
+
|
|
49
|
+
#### Authors: 3
|
|
50
|
+
|
|
51
|
+
- [@EmmanuelVelez](https://github.com/EmmanuelVelez)
|
|
52
|
+
- Christopher Bloom ([@illepic](https://github.com/illepic))
|
|
53
|
+
- Evan Lovely ([@EvanLovely](https://github.com/EvanLovely))
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
# v4.89.4 (Mon Jan 05 2026)
|
|
58
|
+
|
|
59
|
+
#### 🏠 Internal
|
|
60
|
+
|
|
61
|
+
- KSP-6086 normalize error and log metadata for api domains [#6997](https://github.com/knapsack-labs/app-monorepo/pull/6997) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
62
|
+
|
|
63
|
+
#### Authors: 1
|
|
64
|
+
|
|
65
|
+
- [@EmmanuelVelez](https://github.com/EmmanuelVelez)
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
# v4.89.3 (Thu Dec 11 2025)
|
|
70
|
+
|
|
71
|
+
#### 🐛 Bug Fix
|
|
72
|
+
|
|
73
|
+
- KSP-6536 Fixed align token metrics counting with UI logic for variables and collections [#6778](https://github.com/knapsack-labs/app-monorepo/pull/6778) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
74
|
+
- Merge branch 'latest' into feature/ksp-6536-metrics-not-computing-tokens-and-variables-correctly ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
75
|
+
- Merge remote-tracking branch 'origin/feature/ksp-6536-metrics-not-computing-tokens-and-variables-correctly' into feature/ksp-6536-metrics-not-computing-tokens-and-variables-correctly ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
76
|
+
|
|
77
|
+
#### Authors: 1
|
|
78
|
+
|
|
79
|
+
- [@EmmanuelVelez](https://github.com/EmmanuelVelez)
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
# v4.89.1 (Wed Dec 10 2025)
|
|
84
|
+
|
|
85
|
+
#### 🐛 Bug Fix
|
|
86
|
+
|
|
87
|
+
- Merge remote-tracking branch 'origin/latest' into KSP-6900_mcp_onboarding_pages ([@brittanysmart](https://github.com/brittanysmart))
|
|
88
|
+
|
|
89
|
+
#### Authors: 1
|
|
90
|
+
|
|
91
|
+
- Brittany Smart ([@brittanysmart](https://github.com/brittanysmart))
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
# v4.87.9 (Thu Nov 20 2025)
|
|
96
|
+
|
|
97
|
+
#### 🏠 Internal
|
|
98
|
+
|
|
99
|
+
- fix(deps): update dependency @types/node to ^20.19.25 [#6803](https://github.com/knapsack-labs/app-monorepo/pull/6803) ([@renovate[bot]](https://github.com/renovate[bot]))
|
|
100
|
+
|
|
101
|
+
#### Authors: 1
|
|
102
|
+
|
|
103
|
+
- [@renovate[bot]](https://github.com/renovate[bot])
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
# v4.87.7 (Mon Nov 10 2025)
|
|
108
|
+
|
|
109
|
+
#### 🏠 Internal
|
|
110
|
+
|
|
111
|
+
- fix(deps): update typescript [#6863](https://github.com/knapsack-labs/app-monorepo/pull/6863) ([@renovate[bot]](https://github.com/renovate[bot]))
|
|
112
|
+
|
|
113
|
+
#### Authors: 1
|
|
114
|
+
|
|
115
|
+
- [@renovate[bot]](https://github.com/renovate[bot])
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
# v4.87.6 (Wed Nov 05 2025)
|
|
120
|
+
|
|
121
|
+
#### 🏠 Internal
|
|
122
|
+
|
|
123
|
+
- Add comprehensive testing for remaining frameworks and MUI lib [#6876](https://github.com/knapsack-labs/app-monorepo/pull/6876) ([@mabry1985](https://github.com/mabry1985))
|
|
124
|
+
|
|
125
|
+
#### Authors: 1
|
|
126
|
+
|
|
127
|
+
- Josh Mabry ([@mabry1985](https://github.com/mabry1985))
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
# v4.87.4 (Fri Oct 31 2025)
|
|
132
|
+
|
|
133
|
+
#### 🏠 Internal
|
|
134
|
+
|
|
135
|
+
- adds wider testing to angular renderer [#6871](https://github.com/knapsack-labs/app-monorepo/pull/6871) ([@mabry1985](https://github.com/mabry1985))
|
|
136
|
+
|
|
137
|
+
#### Authors: 1
|
|
138
|
+
|
|
139
|
+
- Josh Mabry ([@mabry1985](https://github.com/mabry1985))
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
1
143
|
# v4.87.3 (Thu Oct 30 2025)
|
|
2
144
|
|
|
3
145
|
#### 🐛 Bug Fix
|
package/dist/blocks-to-html.d.ts
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
* @module @knapsack/rendering-utils/blocks-to-html
|
|
4
4
|
* @description Convert Knapsack Blocks to html
|
|
5
5
|
*/
|
|
6
|
-
import { BlockConfig } from '@knapsack/types';
|
|
6
|
+
import { type BlockConfig } from '@knapsack/types';
|
|
7
7
|
export declare function blocksToHtml(blocks: BlockConfig[]): Promise<string>;
|
|
8
8
|
//# sourceMappingURL=blocks-to-html.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks-to-html.d.ts","sourceRoot":"","sources":["../src/blocks-to-html.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"blocks-to-html.d.ts","sourceRoot":"","sources":["../src/blocks-to-html.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAuKnD,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAMzE"}
|
package/dist/blocks-to-html.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @module @knapsack/rendering-utils/blocks-to-html
|
|
4
4
|
* @description Convert Knapsack Blocks to html
|
|
5
5
|
*/
|
|
6
|
-
import { convertTipTapJsonToHtml } from '@knapsack/tiptap-utils';
|
|
6
|
+
import { convertTipTapJsonToHtml, } from '@knapsack/tiptap-utils';
|
|
7
7
|
import os from 'node:os';
|
|
8
8
|
import domPurify from 'isomorphic-dompurify';
|
|
9
9
|
const EOL = os.EOL || '\n';
|
|
@@ -20,36 +20,77 @@ function escapeAttr(val = '') {
|
|
|
20
20
|
.replace(/</g, '<')
|
|
21
21
|
.replace(/>/g, '>');
|
|
22
22
|
}
|
|
23
|
+
// TipTap's generateHTML throws (e.g. RangeError: Unknown node type) when
|
|
24
|
+
// stored prose JSON references a node type not registered in the schema.
|
|
25
|
+
// That's schema drift, not a programming bug — treat it like the video
|
|
26
|
+
// guard below and degrade to empty content so the rest of the document
|
|
27
|
+
// still renders.
|
|
28
|
+
function tiptapToHtmlSafe(content, blockId, blockType) {
|
|
29
|
+
try {
|
|
30
|
+
return convertTipTapJsonToHtml(content);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
console.error(`[blocks-to-html] TipTap render failed for block "${blockId}" (${blockType}):`, err);
|
|
34
|
+
return '';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const GUIDELINE_LABELS = {
|
|
38
|
+
do: 'Do',
|
|
39
|
+
dont: "Don't",
|
|
40
|
+
caution: 'Caution',
|
|
41
|
+
};
|
|
23
42
|
async function blockToHtml(b) {
|
|
24
|
-
var _a, _b, _c;
|
|
25
43
|
if (!b.data)
|
|
26
44
|
return '';
|
|
27
45
|
switch (b.blockType) {
|
|
28
46
|
case 'code-snippet':
|
|
29
47
|
case 'table':
|
|
30
48
|
case 'text-editor':
|
|
31
|
-
return
|
|
49
|
+
return tiptapToHtmlSafe(b.data.content, b.id, b.blockType);
|
|
50
|
+
case 'guidelines': {
|
|
51
|
+
const guidelines = b.data.guidelines ?? [];
|
|
52
|
+
if (guidelines.length === 0)
|
|
53
|
+
return '';
|
|
54
|
+
const sections = guidelines
|
|
55
|
+
.map((g) => {
|
|
56
|
+
const label = GUIDELINE_LABELS[g.type] ?? g.type;
|
|
57
|
+
const parts = [`<h4>${escapeAttr(label)}</h4>`];
|
|
58
|
+
if (g.image?.src) {
|
|
59
|
+
const alt = g.image.alt ?? g.image.title ?? label;
|
|
60
|
+
parts.push(`<img src="${escapeAttr(g.image.src)}" alt="${escapeAttr(alt)}" />`);
|
|
61
|
+
}
|
|
62
|
+
if (g.content) {
|
|
63
|
+
const inner = tiptapToHtmlSafe(g.content, `${b.id}--${g.id}`, b.blockType);
|
|
64
|
+
if (inner)
|
|
65
|
+
parts.push(inner);
|
|
66
|
+
}
|
|
67
|
+
return `<section data-guideline-type="${escapeAttr(g.type)}">${parts.join('')}</section>`;
|
|
68
|
+
})
|
|
69
|
+
.join(EOL);
|
|
70
|
+
return sections;
|
|
71
|
+
}
|
|
32
72
|
case 'markdown-block':
|
|
33
|
-
return mdToHtml(Array.isArray(b.data.md) ? b.data.md.join(EOL) : (
|
|
73
|
+
return mdToHtml(Array.isArray(b.data.md) ? b.data.md.join(EOL) : (b.data.md ?? ''));
|
|
34
74
|
case 'divider-block':
|
|
35
75
|
return '<hr />';
|
|
36
76
|
case 'callout': {
|
|
37
77
|
const type = `<span>${escapeAttr(b.data.type)}</span>`;
|
|
38
|
-
const content =
|
|
78
|
+
const content = tiptapToHtmlSafe(b.data.content, b.id, b.blockType);
|
|
39
79
|
return `<blockquote>${type}: ${content}</blockquote>`;
|
|
40
80
|
}
|
|
41
81
|
case 'image-block':
|
|
42
|
-
return (
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return `<video src="${escapeAttr(
|
|
82
|
+
return (b.data.images
|
|
83
|
+
?.map((i) => `<img src="${escapeAttr(i.src)}" alt="${escapeAttr(i.caption ?? '')}" />`)
|
|
84
|
+
.join(EOL + EOL) ?? '');
|
|
85
|
+
case 'video': {
|
|
86
|
+
const url = b.data.video?.url;
|
|
87
|
+
return url ? `<video src="${escapeAttr(url)}" />` : '';
|
|
88
|
+
}
|
|
48
89
|
case 'files-list':
|
|
49
90
|
return b.data.files
|
|
50
91
|
.map((f) => {
|
|
51
92
|
const ext = f.toLowerCase().split('.').pop();
|
|
52
|
-
if (['jpg', 'jpeg', 'png', 'gif', 'webp'].includes(ext
|
|
93
|
+
if (['jpg', 'jpeg', 'png', 'gif', 'webp'].includes(ext ?? '')) {
|
|
53
94
|
return `<img src="${escapeAttr(f)}" />${EOL}`;
|
|
54
95
|
}
|
|
55
96
|
return `<p><a href="${escapeAttr(f)}">${escapeAttr(f)}</a></p>`;
|
|
@@ -60,12 +101,11 @@ async function blockToHtml(b) {
|
|
|
60
101
|
case 'shortcut-tiles':
|
|
61
102
|
return b.data.shortcuts
|
|
62
103
|
.map((s) => {
|
|
63
|
-
var _a;
|
|
64
104
|
return [
|
|
65
105
|
`<strong>${escapeAttr(s.title)}</strong>`,
|
|
66
106
|
escapeAttr(s.description),
|
|
67
107
|
s.link
|
|
68
|
-
? `<a href="${escapeAttr(s.link.path)}">${escapeAttr(
|
|
108
|
+
? `<a href="${escapeAttr(s.link.path)}">${escapeAttr(s.link.name ?? s.link.path)}</a>`
|
|
69
109
|
: null,
|
|
70
110
|
s.image ? `<img src="${escapeAttr(s.image)}" />` : null,
|
|
71
111
|
]
|
|
@@ -83,7 +123,6 @@ async function blockToHtml(b) {
|
|
|
83
123
|
case 'whimsical-block':
|
|
84
124
|
case 'generic-iframe':
|
|
85
125
|
return `<iframe src="${escapeAttr(b.data.url)}" />`;
|
|
86
|
-
case 'guidelines': // @todo guidelines uses text-editor
|
|
87
126
|
case 'design-tokens':
|
|
88
127
|
case 'component-spec-block':
|
|
89
128
|
case 'design-src-component':
|
|
@@ -96,7 +135,7 @@ async function blockToHtml(b) {
|
|
|
96
135
|
case 'design-token-block':
|
|
97
136
|
return '';
|
|
98
137
|
default: {
|
|
99
|
-
throw new Error(`Unknown block type: "${b
|
|
138
|
+
throw new Error(`Unknown block type: "${b?.blockType}"`);
|
|
100
139
|
}
|
|
101
140
|
}
|
|
102
141
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks-to-html.js","sourceRoot":"","sources":["../src/blocks-to-html.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"blocks-to-html.js","sourceRoot":"","sources":["../src/blocks-to-html.ts"],"names":[],"mappings":"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"}
|
package/dist/rendering.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rendering.d.ts","sourceRoot":"","sources":["../src/rendering.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EAElB,MAAM,iBAAiB,CAAC;AAGzB,wBAAgB,gCAAgC,CAAC,EAC/C,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC;IAC7D,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;CACzD,GAAG,wBAAwB,
|
|
1
|
+
{"version":3,"file":"rendering.d.ts","sourceRoot":"","sources":["../src/rendering.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EAElB,MAAM,iBAAiB,CAAC;AAGzB,wBAAgB,gCAAgC,CAAC,EAC/C,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC;IAC7D,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;CACzD,GAAG,wBAAwB,CAsC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,IAAI,EACJ,oBAAoB,GACrB,EAAE;IACD,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC5C,oBAAoB,EAAE,MAAM,CAAC;CAC9B,GAAG,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC,CAyCxC"}
|
package/dist/rendering.js
CHANGED
|
@@ -4,11 +4,10 @@ import { convertSlotOptions } from './slot-layout-options-utils.js';
|
|
|
4
4
|
export function getContentStateFromAppClientData({ patterns, demosById, }) {
|
|
5
5
|
return {
|
|
6
6
|
patterns: Object.values(patterns).reduce((acc, pattern) => {
|
|
7
|
-
var _a, _b;
|
|
8
7
|
acc[pattern.id] = {
|
|
9
8
|
id: pattern.id,
|
|
10
|
-
templateDemos:
|
|
11
|
-
if (!
|
|
9
|
+
templateDemos: pattern.templates?.flatMap((t) => {
|
|
10
|
+
if (!t?.demoIds) {
|
|
12
11
|
return [];
|
|
13
12
|
}
|
|
14
13
|
return t.demoIds
|
|
@@ -21,14 +20,14 @@ export function getContentStateFromAppClientData({ patterns, demosById, }) {
|
|
|
21
20
|
};
|
|
22
21
|
})
|
|
23
22
|
.filter((d) => d.type === 'template');
|
|
24
|
-
})
|
|
25
|
-
templates:
|
|
23
|
+
}) || [],
|
|
24
|
+
templates: pattern.templates?.map(({ id, alias, path, templateLanguageId, spec }) => ({
|
|
26
25
|
id,
|
|
27
26
|
alias,
|
|
28
27
|
path,
|
|
29
28
|
templateLanguageId,
|
|
30
29
|
spec,
|
|
31
|
-
}))
|
|
30
|
+
})) || [],
|
|
32
31
|
};
|
|
33
32
|
return acc;
|
|
34
33
|
}, {}),
|
|
@@ -47,11 +46,9 @@ export function inlineDemoData({ demosById, demo, collectionsParentKey, }) {
|
|
|
47
46
|
return demo;
|
|
48
47
|
return produce(demo, (draft) => {
|
|
49
48
|
Object.entries(draft.data.slots || {}).forEach(([slotName, slottedDatas]) => {
|
|
50
|
-
|
|
51
|
-
var _b;
|
|
52
|
-
const slotOptions = (_a = draft.data.slotsOptions) === null || _a === void 0 ? void 0 : _a[slotName];
|
|
49
|
+
const slotOptions = draft.data.slotsOptions?.[slotName];
|
|
53
50
|
if (!isEmpty(slotOptions)) {
|
|
54
|
-
|
|
51
|
+
draft.data.slotsOptionsComputed ||= {};
|
|
55
52
|
draft.data.slotsOptionsComputed[slotName] = convertSlotOptions({
|
|
56
53
|
slotOptions,
|
|
57
54
|
collectionsParentKey,
|
package/dist/rendering.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../src/rendering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAML,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,MAAM,UAAU,gCAAgC,CAAC,EAC/C,QAAQ,EACR,SAAS,GAIV;IACC,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../src/rendering.ts"],"names":[],"mappings":"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"}
|
|
@@ -107,11 +107,11 @@ export function convertSlotOptions({ slotOptions: { cssClasses = [], wrappingEle
|
|
|
107
107
|
return acc;
|
|
108
108
|
const [paddingLeft, paddingRight] = tokenSrcValueInfo.value;
|
|
109
109
|
// Left
|
|
110
|
-
if (paddingLeft
|
|
110
|
+
if (paddingLeft?.kind) {
|
|
111
111
|
acc.styles.paddingLeft = tokenSrcValueInfoToValue(paddingLeft);
|
|
112
112
|
}
|
|
113
113
|
// Right
|
|
114
|
-
if (paddingRight
|
|
114
|
+
if (paddingRight?.kind) {
|
|
115
115
|
acc.styles.paddingRight = tokenSrcValueInfoToValue(paddingRight);
|
|
116
116
|
}
|
|
117
117
|
break;
|
|
@@ -122,11 +122,11 @@ export function convertSlotOptions({ slotOptions: { cssClasses = [], wrappingEle
|
|
|
122
122
|
return acc;
|
|
123
123
|
const [paddingTop, paddingBottom] = tokenSrcValueInfo.value;
|
|
124
124
|
// Top
|
|
125
|
-
if (paddingTop
|
|
125
|
+
if (paddingTop?.kind) {
|
|
126
126
|
acc.styles.paddingTop = tokenSrcValueInfoToValue(paddingTop);
|
|
127
127
|
}
|
|
128
128
|
// Bottom
|
|
129
|
-
if (paddingBottom
|
|
129
|
+
if (paddingBottom?.kind) {
|
|
130
130
|
acc.styles.paddingBottom = tokenSrcValueInfoToValue(paddingBottom);
|
|
131
131
|
}
|
|
132
132
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slot-layout-options-utils.js","sourceRoot":"","sources":["../src/slot-layout-options-utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"slot-layout-options-utils.js","sourceRoot":"","sources":["../src/slot-layout-options-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knapsack/rendering-utils",
|
|
3
3
|
"description": "",
|
|
4
|
-
"version": "5.0.0--canary.
|
|
4
|
+
"version": "5.0.0--canary.7791.86072ba.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": {
|
|
@@ -22,24 +22,23 @@
|
|
|
22
22
|
"build": "tsc",
|
|
23
23
|
"clean": "rm -rf ./dist",
|
|
24
24
|
"lint": "eslint ./",
|
|
25
|
-
"test": "
|
|
25
|
+
"test": "vitest run"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@knapsack/tiptap-utils": "5.0.0--canary.
|
|
29
|
-
"@knapsack/utils": "5.0.0--canary.
|
|
28
|
+
"@knapsack/tiptap-utils": "5.0.0--canary.7791.86072ba.0",
|
|
29
|
+
"@knapsack/utils": "5.0.0--canary.7791.86072ba.0",
|
|
30
30
|
"isomorphic-dompurify": "^1.13.0",
|
|
31
31
|
"marked": "^6.0.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@knapsack/eslint-config-starter": "5.0.0--canary.
|
|
35
|
-
"@knapsack/prettier-config": "5.0.0--canary.
|
|
36
|
-
"@knapsack/
|
|
37
|
-
"@knapsack/
|
|
38
|
-
"@
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"typescript": "^5.9.2"
|
|
34
|
+
"@knapsack/eslint-config-starter": "5.0.0--canary.7791.86072ba.0",
|
|
35
|
+
"@knapsack/prettier-config": "5.0.0--canary.7791.86072ba.0",
|
|
36
|
+
"@knapsack/types": "5.0.0--canary.7791.86072ba.0",
|
|
37
|
+
"@knapsack/typescript-config-starter": "5.0.0--canary.7791.86072ba.0",
|
|
38
|
+
"@types/node": "^22.19.11",
|
|
39
|
+
"eslint": "^9.20.0",
|
|
40
|
+
"typescript": "^5.9.3",
|
|
41
|
+
"vitest": "^4.1.9"
|
|
43
42
|
},
|
|
44
43
|
"license": "GPL-2.0-or-later",
|
|
45
44
|
"publishConfig": {
|
|
@@ -50,5 +49,5 @@
|
|
|
50
49
|
"directory": "libs/rendering-utils",
|
|
51
50
|
"type": "git"
|
|
52
51
|
},
|
|
53
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "86072ba9ee416b70b656ebf4fc91827c1d46b0d2"
|
|
54
53
|
}
|
package/src/blocks-to-html.ts
CHANGED
|
@@ -4,8 +4,11 @@
|
|
|
4
4
|
* @description Convert Knapsack Blocks to html
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { BlockConfig } from '@knapsack/types';
|
|
8
|
-
import {
|
|
7
|
+
import { type BlockConfig } from '@knapsack/types';
|
|
8
|
+
import {
|
|
9
|
+
convertTipTapJsonToHtml,
|
|
10
|
+
type JSONContent,
|
|
11
|
+
} from '@knapsack/tiptap-utils';
|
|
9
12
|
import os from 'node:os';
|
|
10
13
|
import domPurify from 'isomorphic-dompurify';
|
|
11
14
|
|
|
@@ -26,22 +29,75 @@ function escapeAttr(val = '') {
|
|
|
26
29
|
.replace(/>/g, '>');
|
|
27
30
|
}
|
|
28
31
|
|
|
32
|
+
// TipTap's generateHTML throws (e.g. RangeError: Unknown node type) when
|
|
33
|
+
// stored prose JSON references a node type not registered in the schema.
|
|
34
|
+
// That's schema drift, not a programming bug — treat it like the video
|
|
35
|
+
// guard below and degrade to empty content so the rest of the document
|
|
36
|
+
// still renders.
|
|
37
|
+
function tiptapToHtmlSafe(
|
|
38
|
+
content: JSONContent,
|
|
39
|
+
blockId: string,
|
|
40
|
+
blockType: string,
|
|
41
|
+
): string {
|
|
42
|
+
try {
|
|
43
|
+
return convertTipTapJsonToHtml(content);
|
|
44
|
+
} catch (err) {
|
|
45
|
+
console.error(
|
|
46
|
+
`[blocks-to-html] TipTap render failed for block "${blockId}" (${blockType}):`,
|
|
47
|
+
err,
|
|
48
|
+
);
|
|
49
|
+
return '';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const GUIDELINE_LABELS = {
|
|
54
|
+
do: 'Do',
|
|
55
|
+
dont: "Don't",
|
|
56
|
+
caution: 'Caution',
|
|
57
|
+
} as const;
|
|
58
|
+
|
|
29
59
|
async function blockToHtml(b: BlockConfig): Promise<string> {
|
|
30
60
|
if (!b.data) return '';
|
|
31
61
|
switch (b.blockType) {
|
|
32
62
|
case 'code-snippet':
|
|
33
63
|
case 'table':
|
|
34
64
|
case 'text-editor':
|
|
35
|
-
return
|
|
65
|
+
return tiptapToHtmlSafe(b.data.content, b.id, b.blockType);
|
|
66
|
+
case 'guidelines': {
|
|
67
|
+
const guidelines = b.data.guidelines ?? [];
|
|
68
|
+
if (guidelines.length === 0) return '';
|
|
69
|
+
const sections = guidelines
|
|
70
|
+
.map((g) => {
|
|
71
|
+
const label = GUIDELINE_LABELS[g.type] ?? g.type;
|
|
72
|
+
const parts: string[] = [`<h4>${escapeAttr(label)}</h4>`];
|
|
73
|
+
if (g.image?.src) {
|
|
74
|
+
const alt = g.image.alt ?? g.image.title ?? label;
|
|
75
|
+
parts.push(
|
|
76
|
+
`<img src="${escapeAttr(g.image.src)}" alt="${escapeAttr(alt)}" />`,
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
if (g.content) {
|
|
80
|
+
const inner = tiptapToHtmlSafe(
|
|
81
|
+
g.content,
|
|
82
|
+
`${b.id}--${g.id}`,
|
|
83
|
+
b.blockType,
|
|
84
|
+
);
|
|
85
|
+
if (inner) parts.push(inner);
|
|
86
|
+
}
|
|
87
|
+
return `<section data-guideline-type="${escapeAttr(g.type)}">${parts.join('')}</section>`;
|
|
88
|
+
})
|
|
89
|
+
.join(EOL);
|
|
90
|
+
return sections;
|
|
91
|
+
}
|
|
36
92
|
case 'markdown-block':
|
|
37
93
|
return mdToHtml(
|
|
38
|
-
Array.isArray(b.data.md) ? b.data.md.join(EOL) : b.data.md ?? '',
|
|
94
|
+
Array.isArray(b.data.md) ? b.data.md.join(EOL) : (b.data.md ?? ''),
|
|
39
95
|
);
|
|
40
96
|
case 'divider-block':
|
|
41
97
|
return '<hr />';
|
|
42
98
|
case 'callout': {
|
|
43
99
|
const type = `<span>${escapeAttr(b.data.type)}</span>`;
|
|
44
|
-
const content =
|
|
100
|
+
const content = tiptapToHtmlSafe(b.data.content, b.id, b.blockType);
|
|
45
101
|
return `<blockquote>${type}: ${content}</blockquote>`;
|
|
46
102
|
}
|
|
47
103
|
case 'image-block':
|
|
@@ -55,8 +111,10 @@ async function blockToHtml(b: BlockConfig): Promise<string> {
|
|
|
55
111
|
)
|
|
56
112
|
.join(EOL + EOL) ?? ''
|
|
57
113
|
);
|
|
58
|
-
case 'video':
|
|
59
|
-
|
|
114
|
+
case 'video': {
|
|
115
|
+
const url = b.data.video?.url;
|
|
116
|
+
return url ? `<video src="${escapeAttr(url)}" />` : '';
|
|
117
|
+
}
|
|
60
118
|
case 'files-list':
|
|
61
119
|
return b.data.files
|
|
62
120
|
.map((f) => {
|
|
@@ -96,7 +154,6 @@ async function blockToHtml(b: BlockConfig): Promise<string> {
|
|
|
96
154
|
case 'whimsical-block':
|
|
97
155
|
case 'generic-iframe':
|
|
98
156
|
return `<iframe src="${escapeAttr(b.data.url)}" />`;
|
|
99
|
-
case 'guidelines': // @todo guidelines uses text-editor
|
|
100
157
|
case 'design-tokens':
|
|
101
158
|
case 'component-spec-block':
|
|
102
159
|
case 'design-src-component':
|
package/src/rendering.ts
CHANGED
|
@@ -17,38 +17,41 @@ export function getContentStateFromAppClientData({
|
|
|
17
17
|
demosById: KsAppClientDataNoMeta['db']['demos']['byId'];
|
|
18
18
|
}): ContentStateForRendering {
|
|
19
19
|
return {
|
|
20
|
-
patterns: Object.values(patterns).reduce(
|
|
21
|
-
acc
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
(
|
|
42
|
-
id,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
20
|
+
patterns: Object.values(patterns).reduce(
|
|
21
|
+
(acc, pattern) => {
|
|
22
|
+
acc[pattern.id] = {
|
|
23
|
+
id: pattern.id,
|
|
24
|
+
templateDemos:
|
|
25
|
+
pattern.templates?.flatMap((t) => {
|
|
26
|
+
if (!t?.demoIds) {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
return t.demoIds
|
|
30
|
+
.map((demoId) => {
|
|
31
|
+
const demo = demosById[demoId];
|
|
32
|
+
return {
|
|
33
|
+
...demo,
|
|
34
|
+
templateId: t.id,
|
|
35
|
+
templateLanguageId: t.templateLanguageId,
|
|
36
|
+
};
|
|
37
|
+
})
|
|
38
|
+
.filter((d) => d.type === 'template');
|
|
39
|
+
}) || [],
|
|
40
|
+
templates:
|
|
41
|
+
pattern.templates?.map(
|
|
42
|
+
({ id, alias, path, templateLanguageId, spec }) => ({
|
|
43
|
+
id,
|
|
44
|
+
alias,
|
|
45
|
+
path,
|
|
46
|
+
templateLanguageId,
|
|
47
|
+
spec,
|
|
48
|
+
}),
|
|
49
|
+
) || [],
|
|
50
|
+
};
|
|
51
|
+
return acc;
|
|
52
|
+
},
|
|
53
|
+
{} as ContentStateForRendering['patterns'],
|
|
54
|
+
),
|
|
52
55
|
};
|
|
53
56
|
}
|
|
54
57
|
|
package/vitest.config.ts
ADDED
package/.eslintignore
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
dist
|
package/.eslintrc.cjs
DELETED
package/ava.config.cjs
DELETED