@ant-design/x-markdown-mini 0.1.0-beta.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.
Files changed (62) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +216 -0
  3. package/dist/components/Markdown/index.acss +103 -0
  4. package/dist/components/Markdown/index.axml +12 -0
  5. package/dist/components/Markdown/index.js +93 -0
  6. package/dist/components/Markdown/index.json +7 -0
  7. package/dist/components/MiniNodeRenderer/index.acss +11 -0
  8. package/dist/components/MiniNodeRenderer/index.axml +113 -0
  9. package/dist/components/MiniNodeRenderer/index.js +37 -0
  10. package/dist/components/MiniNodeRenderer/index.json +7 -0
  11. package/dist/components/MiniNodeRenderer/index.sjs +63 -0
  12. package/dist/es/Markdown/index.acss +103 -0
  13. package/dist/es/Markdown/index.axml +12 -0
  14. package/dist/es/Markdown/index.js +93 -0
  15. package/dist/es/Markdown/index.json +7 -0
  16. package/dist/es/MiniNodeRenderer/index.acss +11 -0
  17. package/dist/es/MiniNodeRenderer/index.axml +113 -0
  18. package/dist/es/MiniNodeRenderer/index.js +37 -0
  19. package/dist/es/MiniNodeRenderer/index.json +7 -0
  20. package/dist/es/MiniNodeRenderer/index.sjs +63 -0
  21. package/dist/index.d.mts +508 -0
  22. package/dist/index.d.ts +508 -0
  23. package/dist/index.js +3151 -0
  24. package/dist/index.mjs +3111 -0
  25. package/dist/miniprogram_dist/components/Markdown/index.js +85 -0
  26. package/dist/miniprogram_dist/components/Markdown/index.json +10 -0
  27. package/dist/miniprogram_dist/components/Markdown/index.wxml +11 -0
  28. package/dist/miniprogram_dist/components/Markdown/index.wxss +103 -0
  29. package/dist/miniprogram_dist/components/MiniNodeRenderer/index.js +39 -0
  30. package/dist/miniprogram_dist/components/MiniNodeRenderer/index.json +10 -0
  31. package/dist/miniprogram_dist/components/MiniNodeRenderer/index.wxml +112 -0
  32. package/dist/miniprogram_dist/components/MiniNodeRenderer/index.wxs +40 -0
  33. package/dist/miniprogram_dist/components/MiniNodeRenderer/index.wxss +11 -0
  34. package/dist/miniprogram_dist/es/Markdown/index.js +85 -0
  35. package/dist/miniprogram_dist/es/Markdown/index.json +10 -0
  36. package/dist/miniprogram_dist/es/Markdown/index.wxml +11 -0
  37. package/dist/miniprogram_dist/es/Markdown/index.wxss +103 -0
  38. package/dist/miniprogram_dist/es/MiniNodeRenderer/index.js +39 -0
  39. package/dist/miniprogram_dist/es/MiniNodeRenderer/index.json +10 -0
  40. package/dist/miniprogram_dist/es/MiniNodeRenderer/index.wxml +112 -0
  41. package/dist/miniprogram_dist/es/MiniNodeRenderer/index.wxs +40 -0
  42. package/dist/miniprogram_dist/es/MiniNodeRenderer/index.wxss +11 -0
  43. package/dist/miniprogram_dist/index.js +3151 -0
  44. package/dist/miniprogram_dist/plugins/CodeHighlight/index.js +8038 -0
  45. package/dist/miniprogram_dist/plugins/CodeHighlight/style.wxss +105 -0
  46. package/dist/miniprogram_dist/plugins/Latex/index.js +14728 -0
  47. package/dist/miniprogram_dist/plugins/Latex/style.wxss +648 -0
  48. package/dist/miniprogram_dist/shared/flattenInline.js +100 -0
  49. package/dist/plugins/CodeHighlight/index.d.mts +27 -0
  50. package/dist/plugins/CodeHighlight/index.d.ts +27 -0
  51. package/dist/plugins/CodeHighlight/index.js +8038 -0
  52. package/dist/plugins/CodeHighlight/index.mjs +8028 -0
  53. package/dist/plugins/CodeHighlight/style.acss +105 -0
  54. package/dist/plugins/Latex/index.d.mts +12 -0
  55. package/dist/plugins/Latex/index.d.ts +12 -0
  56. package/dist/plugins/Latex/index.js +14728 -0
  57. package/dist/plugins/Latex/index.mjs +14705 -0
  58. package/dist/plugins/Latex/style.acss +648 -0
  59. package/dist/shared/flattenInline.js +100 -0
  60. package/dist/types-CegkonfJ.d.mts +83 -0
  61. package/dist/types-CegkonfJ.d.ts +83 -0
  62. package/package.json +93 -0
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ // src/components/wechat/Markdown/index.ts
4
+ var import__ = require("../../index.js");
5
+ var import_flattenInline = require("../../shared/flattenInline.js");
6
+ Component({
7
+ options: {
8
+ multipleSlots: true,
9
+ styleIsolation: "shared"
10
+ },
11
+ properties: {
12
+ content: { type: String, value: "" },
13
+ streaming: { type: null, value: false },
14
+ selectable: { type: Boolean, value: true },
15
+ gfm: { type: null, value: null },
16
+ breaks: { type: null, value: null },
17
+ className: { type: String, value: "" },
18
+ extensions: { type: null, value: null },
19
+ components: { type: null, value: null },
20
+ footnote: { type: Boolean, value: false }
21
+ },
22
+ data: {
23
+ nodes: [],
24
+ slotComponents: []
25
+ },
26
+ md: null,
27
+ lifetimes: {
28
+ attached() {
29
+ this._build();
30
+ this._render();
31
+ },
32
+ detached() {
33
+ var _a;
34
+ (_a = this.md) == null ? void 0 : _a.reset();
35
+ this.md = null;
36
+ }
37
+ },
38
+ observers: {
39
+ // `components` / `footnote` are baked into the marked instance, rebuild on change.
40
+ "components, footnote"() {
41
+ if (this.md) {
42
+ this._build();
43
+ this._render();
44
+ }
45
+ },
46
+ "content, streaming, selectable, extensions, gfm, breaks"() {
47
+ if (this.md) this._render();
48
+ }
49
+ },
50
+ methods: {
51
+ _build() {
52
+ var _a, _b;
53
+ const components = (_a = this.data.components) != null ? _a : [];
54
+ const footnote = !!this.data.footnote;
55
+ const extensions = footnote ? [(0, import__.Footnote)()] : [];
56
+ (_b = this.md) == null ? void 0 : _b.reset();
57
+ this.md = new import__.XMarkdownMini({ escapeText: false, components, extensions });
58
+ const slotComponents = footnote ? components.concat(["footnote"]) : components;
59
+ this.setData({ slotComponents });
60
+ },
61
+ _render() {
62
+ var _a, _b, _c;
63
+ const data = this.data;
64
+ this.md.renderNodes({
65
+ content: data.content,
66
+ platform: "wechat",
67
+ streaming: data.streaming,
68
+ selectable: data.selectable,
69
+ gfm: (_a = data.gfm) != null ? _a : void 0,
70
+ breaks: (_b = data.breaks) != null ? _b : void 0,
71
+ extensions: (_c = data.extensions) != null ? _c : void 0,
72
+ onRenderStart: () => this.triggerEvent("renderstart"),
73
+ onRenderProgress: (payload) => this.triggerEvent("renderprogress", payload),
74
+ onRenderComplete: () => this.triggerEvent("rendercomplete"),
75
+ onPatch: (nodes) => this.setData({ nodes: (0, import_flattenInline.flattenInlineNodes)(nodes) })
76
+ });
77
+ },
78
+ _tap(e) {
79
+ this.triggerEvent("tap", e);
80
+ },
81
+ _appear(e) {
82
+ this.triggerEvent("appear", e);
83
+ }
84
+ }
85
+ });
@@ -0,0 +1,10 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "shared",
4
+ "usingComponents": {
5
+ "mini-node-renderer": "../MiniNodeRenderer/index"
6
+ },
7
+ "componentGenerics": {
8
+ "custom-slot": { "default": "view" }
9
+ }
10
+ }
@@ -0,0 +1,11 @@
1
+ <view class="md-root {{className}}">
2
+ <mini-node-renderer
3
+ generic:custom-slot="custom-slot"
4
+ nodes="{{nodes}}"
5
+ selectable="{{selectable}}"
6
+ animation="{{animation}}"
7
+ slotComponents="{{slotComponents}}"
8
+ bind:tap="_tap"
9
+ bind:appear="_appear"
10
+ />
11
+ </view>
@@ -0,0 +1,103 @@
1
+ .md-root {
2
+ display: block;
3
+ font-size: 28rpx;
4
+ line-height: 1.65;
5
+ color: #1f1f1f;
6
+ word-break: break-word;
7
+ }
8
+
9
+ .md-paragraph {
10
+ display: block;
11
+ margin: 0 0 16rpx;
12
+ }
13
+
14
+ .md-heading {
15
+ display: block;
16
+ font-weight: 600;
17
+ margin: 24rpx 0 12rpx;
18
+ line-height: 1.3;
19
+ }
20
+ .md-h1 { font-size: 44rpx; }
21
+ .md-h2 { font-size: 38rpx; }
22
+ .md-h3 { font-size: 34rpx; }
23
+ .md-h4 { font-size: 30rpx; }
24
+ .md-h5 { font-size: 28rpx; }
25
+ .md-h6 { font-size: 26rpx; color: #666; }
26
+
27
+ .md-list {
28
+ display: block;
29
+ margin: 8rpx 0 16rpx;
30
+ padding-left: 32rpx;
31
+ }
32
+ .md-list-item {
33
+ display: list-item;
34
+ margin: 4rpx 0;
35
+ }
36
+
37
+ .md-blockquote {
38
+ display: block;
39
+ margin: 12rpx 0;
40
+ padding: 8rpx 16rpx;
41
+ border-left: 6rpx solid #d9d9d9;
42
+ color: #555;
43
+ background: #fafafa;
44
+ }
45
+
46
+ .md-code-block {
47
+ display: block;
48
+ margin: 12rpx 0;
49
+ padding: 16rpx;
50
+ background: #f6f8fa;
51
+ border-radius: 8rpx;
52
+ overflow-x: auto;
53
+ }
54
+
55
+ .md-code {
56
+ display: block;
57
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
58
+ font-size: 26rpx;
59
+ white-space: pre;
60
+ }
61
+
62
+ .md-inline-code {
63
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
64
+ font-size: 26rpx;
65
+ background: #f3f3f3;
66
+ padding: 0 6rpx;
67
+ border-radius: 4rpx;
68
+ }
69
+
70
+ .md-strong { font-weight: 600; }
71
+ .md-em { font-style: italic; }
72
+
73
+ .md-link {
74
+ color: #1677ff;
75
+ text-decoration: underline;
76
+ }
77
+
78
+ .md-img {
79
+ display: block;
80
+ max-width: 100%;
81
+ }
82
+
83
+ .md-hr {
84
+ display: block;
85
+ height: 2rpx;
86
+ background: #e5e5e5;
87
+ margin: 16rpx 0;
88
+ }
89
+
90
+ .md-table {
91
+ display: block;
92
+ width: 100%;
93
+ margin: 12rpx 0;
94
+ border-collapse: collapse;
95
+ }
96
+ .md-th, .md-td {
97
+ display: table-cell;
98
+ padding: 8rpx 12rpx;
99
+ border: 1rpx solid #e5e5e5;
100
+ }
101
+ .md-th { background: #fafafa; font-weight: 600; }
102
+
103
+ .md-html { display: block; }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+
16
+ // src/components/wechat/MiniNodeRenderer/index.ts
17
+ var MiniNodeRenderer_exports = {};
18
+ module.exports = __toCommonJS(MiniNodeRenderer_exports);
19
+ Component({
20
+ options: {
21
+ multipleSlots: true,
22
+ styleIsolation: "shared"
23
+ },
24
+ properties: {
25
+ nodes: { type: Array, value: [] },
26
+ selectable: { type: Boolean, value: true },
27
+ animation: { type: Boolean, value: false },
28
+ // 自定义组件标签白名单:命中的节点交给抽象节点 <custom-slot>(由宿主提供)渲染。
29
+ slotComponents: { type: Array, value: [] }
30
+ },
31
+ methods: {
32
+ _tap(e) {
33
+ this.triggerEvent("tap", e, { bubbles: true, composed: true });
34
+ },
35
+ _appear(e) {
36
+ this.triggerEvent("appear", e, { bubbles: true, composed: true });
37
+ }
38
+ }
39
+ });
@@ -0,0 +1,10 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "shared",
4
+ "usingComponents": {
5
+ "mini-node-renderer": "./index"
6
+ },
7
+ "componentGenerics": {
8
+ "custom-slot": { "default": "view" }
9
+ }
10
+ }
@@ -0,0 +1,112 @@
1
+ <wxs src="./index.wxs" module="u" />
2
+
3
+ <block wx:for="{{nodes}}" wx:for-item="node" wx:for-index="i" wx:key="i">
4
+ <!-- text leaf -->
5
+ <text
6
+ wx:if="{{u.isText(node.name)}}"
7
+ class="{{u.classOf(node)}}"
8
+ selectable="{{selectable}}"
9
+ >{{u.valueOf(node)}}</text>
10
+
11
+ <!-- br -->
12
+ <text wx:elif="{{u.isBr(node.name)}}">{{'\n'}}</text>
13
+
14
+ <!-- hr -->
15
+ <view wx:elif="{{u.isHr(node.name)}}" class="{{u.classOf(node)}}" />
16
+
17
+ <!-- img -->
18
+ <image
19
+ wx:elif="{{u.isImg(node.name)}}"
20
+ class="{{u.classOf(node)}}"
21
+ style="{{u.styleOf(node)}}"
22
+ src="{{u.srcOf(node)}}"
23
+ mode="widthFix"
24
+ data-data="{{node}}"
25
+ catch:tap="_tap"
26
+ />
27
+
28
+ <!-- pre: scrollable code container -->
29
+ <scroll-view
30
+ wx:elif="{{u.isPre(node.name)}}"
31
+ scroll-x
32
+ class="{{u.classOf(node)}}"
33
+ style="{{u.styleOf(node)}}"
34
+ data-data="{{node}}"
35
+ catch:tap="_tap"
36
+ >
37
+ <mini-node-renderer
38
+ wx:if="{{node.children}}"
39
+ generic:custom-slot="custom-slot"
40
+ nodes="{{node.children}}"
41
+ selectable="{{selectable}}"
42
+ animation="{{false}}"
43
+ slotComponents="{{slotComponents}}"
44
+ bind:tap="_tap"
45
+ bind:appear="_appear"
46
+ />
47
+ </scroll-view>
48
+
49
+ <!-- anchor: kept interactive, children are already flattened text runs -->
50
+ <text
51
+ wx:elif="{{node.name === 'a'}}"
52
+ class="{{u.classOf(node)}}"
53
+ style="{{u.styleOf(node)}}"
54
+ selectable="{{selectable}}"
55
+ data-data="{{node}}"
56
+ catch:tap="_tap"
57
+ >
58
+ <text
59
+ wx:for="{{node.children}}"
60
+ wx:for-item="c"
61
+ wx:for-index="ci"
62
+ wx:key="ci"
63
+ class="{{u.classOf(c)}}"
64
+ >{{u.valueOf(c)}}</text>
65
+ </text>
66
+
67
+ <!-- inline tag rendered as <text>: children are flat text runs -->
68
+ <text
69
+ wx:elif="{{u.isInline(node.name)}}"
70
+ class="{{u.classOf(node)}}"
71
+ style="{{u.styleOf(node)}}"
72
+ selectable="{{selectable}}"
73
+ data-data="{{node}}"
74
+ catch:tap="_tap"
75
+ >
76
+ <text
77
+ wx:for="{{node.children}}"
78
+ wx:for-item="c"
79
+ wx:for-index="ci"
80
+ wx:key="ci"
81
+ class="{{u.classOf(c)}}"
82
+ >{{u.valueOf(c)}}</text>
83
+ </text>
84
+
85
+ <!-- custom component: hand off to host-provided abstract node, keyed by node.tag -->
86
+ <custom-slot
87
+ wx:elif="{{u.isSlot(node.name, slotComponents)}}"
88
+ node="{{node}}"
89
+ data-data="{{node}}"
90
+ catch:tap="_tap"
91
+ />
92
+
93
+ <!-- block tag rendered as <view> -->
94
+ <view
95
+ wx:else
96
+ class="{{u.classOf(node)}}"
97
+ style="{{u.styleOf(node)}}"
98
+ data-data="{{node}}"
99
+ catch:tap="_tap"
100
+ >
101
+ <mini-node-renderer
102
+ wx:if="{{node.children}}"
103
+ generic:custom-slot="custom-slot"
104
+ nodes="{{node.children}}"
105
+ selectable="{{selectable}}"
106
+ animation="{{animation}}"
107
+ slotComponents="{{slotComponents}}"
108
+ bind:tap="_tap"
109
+ bind:appear="_appear"
110
+ />
111
+ </view>
112
+ </block>
@@ -0,0 +1,40 @@
1
+ var INLINE = { strong: 1, em: 1, del: 1, code: 1, a: 1, span: 1 };
2
+
3
+ function isInline(name) { return INLINE[name] === 1; }
4
+ function isText(name) { return name === 'text'; }
5
+ function isBr(name) { return name === 'br'; }
6
+ function isImg(name) { return name === 'img'; }
7
+ function isHr(name) { return name === 'hr'; }
8
+ function isPre(name) { return name === 'pre'; }
9
+ function isSlot(name, slotComponents) {
10
+ return !!slotComponents && slotComponents.indexOf(name) > -1;
11
+ }
12
+
13
+ function classOf(node) {
14
+ var attrs = node.attrs || {};
15
+ var cls = attrs['class'] || '';
16
+ if (node.animate) {
17
+ cls = cls ? cls + ' md-animate-block' : 'md-animate-block';
18
+ }
19
+ return cls;
20
+ }
21
+
22
+ function styleOf(node) { return (node.attrs || {}).style || ''; }
23
+ function srcOf(node) { return (node.attrs || {}).src || ''; }
24
+ function altOf(node) { return (node.attrs || {}).alt || ''; }
25
+ function valueOf(node) { return (node.attrs || {}).value || ''; }
26
+
27
+ module.exports = {
28
+ isInline: isInline,
29
+ isText: isText,
30
+ isBr: isBr,
31
+ isImg: isImg,
32
+ isHr: isHr,
33
+ isPre: isPre,
34
+ isSlot: isSlot,
35
+ classOf: classOf,
36
+ styleOf: styleOf,
37
+ srcOf: srcOf,
38
+ altOf: altOf,
39
+ valueOf: valueOf,
40
+ };
@@ -0,0 +1,11 @@
1
+ .md-animate-block {
2
+ animation-fill-mode: forwards;
3
+ animation-name: md-block-appear;
4
+ animation-timing-function: var(--md-animation-timing, ease-in);
5
+ animation-duration: var(--md-animation-duration, 300ms);
6
+ }
7
+
8
+ @keyframes md-block-appear {
9
+ 0% { opacity: 0; transform: translateY(4rpx); }
10
+ 100% { opacity: 1; transform: translateY(0); }
11
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ // src/components/wechat/Markdown/index.ts
4
+ var import__ = require("../../index.js");
5
+ var import_flattenInline = require("../../shared/flattenInline.js");
6
+ Component({
7
+ options: {
8
+ multipleSlots: true,
9
+ styleIsolation: "shared"
10
+ },
11
+ properties: {
12
+ content: { type: String, value: "" },
13
+ streaming: { type: null, value: false },
14
+ selectable: { type: Boolean, value: true },
15
+ gfm: { type: null, value: null },
16
+ breaks: { type: null, value: null },
17
+ className: { type: String, value: "" },
18
+ extensions: { type: null, value: null },
19
+ components: { type: null, value: null },
20
+ footnote: { type: Boolean, value: false }
21
+ },
22
+ data: {
23
+ nodes: [],
24
+ slotComponents: []
25
+ },
26
+ md: null,
27
+ lifetimes: {
28
+ attached() {
29
+ this._build();
30
+ this._render();
31
+ },
32
+ detached() {
33
+ var _a;
34
+ (_a = this.md) == null ? void 0 : _a.reset();
35
+ this.md = null;
36
+ }
37
+ },
38
+ observers: {
39
+ // `components` / `footnote` are baked into the marked instance, rebuild on change.
40
+ "components, footnote"() {
41
+ if (this.md) {
42
+ this._build();
43
+ this._render();
44
+ }
45
+ },
46
+ "content, streaming, selectable, extensions, gfm, breaks"() {
47
+ if (this.md) this._render();
48
+ }
49
+ },
50
+ methods: {
51
+ _build() {
52
+ var _a, _b;
53
+ const components = (_a = this.data.components) != null ? _a : [];
54
+ const footnote = !!this.data.footnote;
55
+ const extensions = footnote ? [(0, import__.Footnote)()] : [];
56
+ (_b = this.md) == null ? void 0 : _b.reset();
57
+ this.md = new import__.XMarkdownMini({ escapeText: false, components, extensions });
58
+ const slotComponents = footnote ? components.concat(["footnote"]) : components;
59
+ this.setData({ slotComponents });
60
+ },
61
+ _render() {
62
+ var _a, _b, _c;
63
+ const data = this.data;
64
+ this.md.renderNodes({
65
+ content: data.content,
66
+ platform: "wechat",
67
+ streaming: data.streaming,
68
+ selectable: data.selectable,
69
+ gfm: (_a = data.gfm) != null ? _a : void 0,
70
+ breaks: (_b = data.breaks) != null ? _b : void 0,
71
+ extensions: (_c = data.extensions) != null ? _c : void 0,
72
+ onRenderStart: () => this.triggerEvent("renderstart"),
73
+ onRenderProgress: (payload) => this.triggerEvent("renderprogress", payload),
74
+ onRenderComplete: () => this.triggerEvent("rendercomplete"),
75
+ onPatch: (nodes) => this.setData({ nodes: (0, import_flattenInline.flattenInlineNodes)(nodes) })
76
+ });
77
+ },
78
+ _tap(e) {
79
+ this.triggerEvent("tap", e);
80
+ },
81
+ _appear(e) {
82
+ this.triggerEvent("appear", e);
83
+ }
84
+ }
85
+ });
@@ -0,0 +1,10 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "shared",
4
+ "usingComponents": {
5
+ "mini-node-renderer": "../MiniNodeRenderer/index"
6
+ },
7
+ "componentGenerics": {
8
+ "custom-slot": { "default": "view" }
9
+ }
10
+ }
@@ -0,0 +1,11 @@
1
+ <view class="md-root {{className}}">
2
+ <mini-node-renderer
3
+ generic:custom-slot="custom-slot"
4
+ nodes="{{nodes}}"
5
+ selectable="{{selectable}}"
6
+ animation="{{animation}}"
7
+ slotComponents="{{slotComponents}}"
8
+ bind:tap="_tap"
9
+ bind:appear="_appear"
10
+ />
11
+ </view>
@@ -0,0 +1,103 @@
1
+ .md-root {
2
+ display: block;
3
+ font-size: 28rpx;
4
+ line-height: 1.65;
5
+ color: #1f1f1f;
6
+ word-break: break-word;
7
+ }
8
+
9
+ .md-paragraph {
10
+ display: block;
11
+ margin: 0 0 16rpx;
12
+ }
13
+
14
+ .md-heading {
15
+ display: block;
16
+ font-weight: 600;
17
+ margin: 24rpx 0 12rpx;
18
+ line-height: 1.3;
19
+ }
20
+ .md-h1 { font-size: 44rpx; }
21
+ .md-h2 { font-size: 38rpx; }
22
+ .md-h3 { font-size: 34rpx; }
23
+ .md-h4 { font-size: 30rpx; }
24
+ .md-h5 { font-size: 28rpx; }
25
+ .md-h6 { font-size: 26rpx; color: #666; }
26
+
27
+ .md-list {
28
+ display: block;
29
+ margin: 8rpx 0 16rpx;
30
+ padding-left: 32rpx;
31
+ }
32
+ .md-list-item {
33
+ display: list-item;
34
+ margin: 4rpx 0;
35
+ }
36
+
37
+ .md-blockquote {
38
+ display: block;
39
+ margin: 12rpx 0;
40
+ padding: 8rpx 16rpx;
41
+ border-left: 6rpx solid #d9d9d9;
42
+ color: #555;
43
+ background: #fafafa;
44
+ }
45
+
46
+ .md-code-block {
47
+ display: block;
48
+ margin: 12rpx 0;
49
+ padding: 16rpx;
50
+ background: #f6f8fa;
51
+ border-radius: 8rpx;
52
+ overflow-x: auto;
53
+ }
54
+
55
+ .md-code {
56
+ display: block;
57
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
58
+ font-size: 26rpx;
59
+ white-space: pre;
60
+ }
61
+
62
+ .md-inline-code {
63
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
64
+ font-size: 26rpx;
65
+ background: #f3f3f3;
66
+ padding: 0 6rpx;
67
+ border-radius: 4rpx;
68
+ }
69
+
70
+ .md-strong { font-weight: 600; }
71
+ .md-em { font-style: italic; }
72
+
73
+ .md-link {
74
+ color: #1677ff;
75
+ text-decoration: underline;
76
+ }
77
+
78
+ .md-img {
79
+ display: block;
80
+ max-width: 100%;
81
+ }
82
+
83
+ .md-hr {
84
+ display: block;
85
+ height: 2rpx;
86
+ background: #e5e5e5;
87
+ margin: 16rpx 0;
88
+ }
89
+
90
+ .md-table {
91
+ display: block;
92
+ width: 100%;
93
+ margin: 12rpx 0;
94
+ border-collapse: collapse;
95
+ }
96
+ .md-th, .md-td {
97
+ display: table-cell;
98
+ padding: 8rpx 12rpx;
99
+ border: 1rpx solid #e5e5e5;
100
+ }
101
+ .md-th { background: #fafafa; font-weight: 600; }
102
+
103
+ .md-html { display: block; }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+
16
+ // src/components/wechat/MiniNodeRenderer/index.ts
17
+ var MiniNodeRenderer_exports = {};
18
+ module.exports = __toCommonJS(MiniNodeRenderer_exports);
19
+ Component({
20
+ options: {
21
+ multipleSlots: true,
22
+ styleIsolation: "shared"
23
+ },
24
+ properties: {
25
+ nodes: { type: Array, value: [] },
26
+ selectable: { type: Boolean, value: true },
27
+ animation: { type: Boolean, value: false },
28
+ // 自定义组件标签白名单:命中的节点交给抽象节点 <custom-slot>(由宿主提供)渲染。
29
+ slotComponents: { type: Array, value: [] }
30
+ },
31
+ methods: {
32
+ _tap(e) {
33
+ this.triggerEvent("tap", e, { bubbles: true, composed: true });
34
+ },
35
+ _appear(e) {
36
+ this.triggerEvent("appear", e, { bubbles: true, composed: true });
37
+ }
38
+ }
39
+ });
@@ -0,0 +1,10 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "shared",
4
+ "usingComponents": {
5
+ "mini-node-renderer": "./index"
6
+ },
7
+ "componentGenerics": {
8
+ "custom-slot": { "default": "view" }
9
+ }
10
+ }