vue-markdown-design 0.3.1 → 0.3.2

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 (72) hide show
  1. package/README.md +5 -1
  2. package/README.zh-CN.md +4 -0
  3. package/es/_virtual/_@oxc-project_runtime@0.115.0/helpers/asyncToGenerator.mjs +27 -0
  4. package/es/_virtual/_@oxc-project_runtime@0.115.0/helpers/defineProperty.mjs +12 -0
  5. package/es/_virtual/_@oxc-project_runtime@0.115.0/helpers/objectSpread2.mjs +25 -0
  6. package/es/_virtual/_@oxc-project_runtime@0.115.0/helpers/objectWithoutProperties.mjs +13 -0
  7. package/es/_virtual/_@oxc-project_runtime@0.115.0/helpers/objectWithoutPropertiesLoose.mjs +12 -0
  8. package/es/_virtual/_@oxc-project_runtime@0.115.0/helpers/toPrimitive.mjs +14 -0
  9. package/es/_virtual/_@oxc-project_runtime@0.115.0/helpers/toPropertyKey.mjs +9 -0
  10. package/es/_virtual/_@oxc-project_runtime@0.115.0/helpers/typeof.mjs +11 -0
  11. package/es/hooks/use-element/index.mjs +21 -18
  12. package/es/hooks/use-scroll-element/index.mjs +44 -45
  13. package/es/index.mjs +7 -18
  14. package/es/markdown/Markdown.mjs +221 -316
  15. package/es/markdown/index.css +3 -0
  16. package/es/markdown/index2.mjs +6 -0
  17. package/es/render/Render.mjs +143 -173
  18. package/es/render/index.css +37 -21
  19. package/es/render/index2.mjs +6 -0
  20. package/es/search/Search.mjs +236 -285
  21. package/es/search/index.css +4 -0
  22. package/es/search/index2.mjs +6 -0
  23. package/es/sticky/Sticky.mjs +66 -99
  24. package/es/sticky/index2.mjs +6 -0
  25. package/es/toc/Toc.mjs +253 -347
  26. package/es/toc/index2.mjs +6 -0
  27. package/es/utils/constant.mjs +4 -4
  28. package/es/utils/dom.mjs +44 -68
  29. package/es/utils/format.mjs +33 -39
  30. package/es/utils/functions.mjs +5 -5
  31. package/es/utils/vue.mjs +10 -32
  32. package/lib/_virtual/_@oxc-project_runtime@0.115.0/helpers/asyncToGenerator.js +27 -0
  33. package/lib/_virtual/_@oxc-project_runtime@0.115.0/helpers/defineProperty.js +12 -0
  34. package/lib/_virtual/_@oxc-project_runtime@0.115.0/helpers/objectSpread2.js +25 -0
  35. package/lib/_virtual/_@oxc-project_runtime@0.115.0/helpers/objectWithoutProperties.js +13 -0
  36. package/lib/_virtual/_@oxc-project_runtime@0.115.0/helpers/objectWithoutPropertiesLoose.js +12 -0
  37. package/lib/_virtual/_@oxc-project_runtime@0.115.0/helpers/toPrimitive.js +14 -0
  38. package/lib/_virtual/_@oxc-project_runtime@0.115.0/helpers/toPropertyKey.js +9 -0
  39. package/lib/_virtual/_@oxc-project_runtime@0.115.0/helpers/typeof.js +16 -0
  40. package/lib/_virtual/_rolldown/runtime.js +23 -0
  41. package/lib/hooks/use-element/index.js +23 -19
  42. package/lib/hooks/use-scroll-element/index.js +45 -45
  43. package/lib/index.js +24 -22
  44. package/lib/markdown/Markdown.js +224 -317
  45. package/lib/markdown/index.css +3 -0
  46. package/lib/markdown/index2.js +6 -0
  47. package/lib/render/Render.js +152 -176
  48. package/lib/render/index.css +37 -21
  49. package/lib/render/index2.js +6 -0
  50. package/lib/search/Search.js +242 -287
  51. package/lib/search/index.css +4 -0
  52. package/lib/search/index2.js +6 -0
  53. package/lib/sticky/Sticky.js +68 -99
  54. package/lib/sticky/index2.js +6 -0
  55. package/lib/toc/Toc.js +259 -349
  56. package/lib/toc/index2.js +6 -0
  57. package/lib/utils/constant.js +3 -3
  58. package/lib/utils/dom.js +46 -69
  59. package/lib/utils/format.js +33 -33
  60. package/lib/utils/functions.js +4 -4
  61. package/lib/utils/vue.js +10 -31
  62. package/package.json +4 -9
  63. package/es/markdown/index.mjs +0 -9
  64. package/es/render/index.mjs +0 -9
  65. package/es/search/index.mjs +0 -9
  66. package/es/sticky/index.mjs +0 -7
  67. package/es/toc/index.mjs +0 -9
  68. package/lib/markdown/index.js +0 -8
  69. package/lib/render/index.js +0 -8
  70. package/lib/search/index.js +0 -8
  71. package/lib/sticky/index.js +0 -7
  72. package/lib/toc/index.js +0 -8
@@ -1,321 +1,228 @@
1
- "use strict";
2
- require('./index.css');var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
- var __spreadValues = (a, b) => {
10
- for (var prop in b || (b = {}))
11
- if (__hasOwnProp.call(b, prop))
12
- __defNormalProp(a, prop, b[prop]);
13
- if (__getOwnPropSymbols)
14
- for (var prop of __getOwnPropSymbols(b)) {
15
- if (__propIsEnum.call(b, prop))
16
- __defNormalProp(a, prop, b[prop]);
17
- }
18
- return a;
19
- };
20
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
- var __async = (__this, __arguments, generator) => {
22
- return new Promise((resolve, reject) => {
23
- var fulfilled = (value) => {
24
- try {
25
- step(generator.next(value));
26
- } catch (e) {
27
- reject(e);
28
- }
29
- };
30
- var rejected = (value) => {
31
- try {
32
- step(generator.throw(value));
33
- } catch (e) {
34
- reject(e);
35
- }
36
- };
37
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
38
- step((generator = generator.apply(__this, __arguments)).next());
39
- });
40
- };
41
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
42
- const vue = require("vue");
43
- ;/* empty css */
44
- const index$3 = require("../render/index.js");
45
- const index$2 = require("../search/index.js");
46
- const index$4 = require("../toc/index.js");
47
- const format = require("../utils/format.js");
48
- const Render = require("../render/Render.js");
49
- const Search = require("../search/Search.js");
50
- const Toc = require("../toc/Toc.js");
51
- const lodash = require("lodash");
52
- const core = require("@vueuse/core");
53
- const index = require("../hooks/use-scroll-element/index.js");
54
- const index$1 = require("../sticky/index.js");
55
- const vueFontawesome = require("@fortawesome/vue-fontawesome");
56
- const freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
57
- const {
58
- name,
59
- addPrefix
60
- } = format.createNamespace("markdown");
61
- const markdownProps = __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, Render.renderProps), format.keysAddPrefix(Search.searchProps, "search")), format.keysAddPrefix(Toc.tocProps, "toc")), {
62
- keyword: Search.searchProps.modelValue,
63
- tocOffset: Toc.tocProps.offset.type,
64
- // 不设置默认值,toc 需要 undefined 作为判断依据
65
- showBtn: {
66
- type: [Boolean, Array, Object],
67
- default: false
68
- },
69
- search: Boolean,
70
- toc: Boolean,
71
- topOffset: {
72
- type: [Number, String],
73
- default: 0
74
- },
75
- bottomOffset: {
76
- type: [Number, String],
77
- default: 0
78
- },
79
- miniScreenWidth: {
80
- type: [Number, String],
81
- default: 768
82
- }
1
+ require("../_virtual/_rolldown/runtime.js");
2
+ require('./index.css');const require_objectSpread2 = require("../_virtual/_@oxc-project_runtime@0.115.0/helpers/objectSpread2.js");
3
+ const require_format = require("../utils/format.js");
4
+ const require_Render = require("../render/Render.js");
5
+ const require_index = require("../render/index2.js");
6
+ const require_asyncToGenerator = require("../_virtual/_@oxc-project_runtime@0.115.0/helpers/asyncToGenerator.js");
7
+ const require_Search = require("../search/Search.js");
8
+ const require_index$1 = require("../search/index2.js");
9
+ const require_index$2 = ;/* empty css */
10
+ const require_Toc = require("../toc/Toc.js");
11
+ const require_index$3 = require("../toc/index2.js");
12
+ const require_index$4 = require("../sticky/index2.js");
13
+ ;/* empty css */
14
+ let lodash = require("lodash");
15
+ let vue = require("vue");
16
+ let _vueuse_core = require("@vueuse/core");
17
+ let _fortawesome_vue_fontawesome = require("@fortawesome/vue-fontawesome");
18
+ let _fortawesome_free_solid_svg_icons = require("@fortawesome/free-solid-svg-icons");
19
+ //#region src/markdown/Markdown.tsx
20
+ var { name, addPrefix } = require_format.createNamespace("markdown");
21
+ var markdownProps = require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, require_Render.renderProps), require_format.keysAddPrefix(require_Search.searchProps, "search")), require_format.keysAddPrefix(require_Toc.tocProps, "toc")), {}, {
22
+ keyword: require_Search.searchProps.modelValue,
23
+ tocOffset: require_Toc.tocProps.offset.type,
24
+ showBtn: {
25
+ type: [
26
+ Boolean,
27
+ Array,
28
+ Object
29
+ ],
30
+ default: false
31
+ },
32
+ search: Boolean,
33
+ toc: Boolean,
34
+ topOffset: {
35
+ type: [Number, String],
36
+ default: 0
37
+ },
38
+ bottomOffset: {
39
+ type: [Number, String],
40
+ default: 0
41
+ },
42
+ miniScreenWidth: {
43
+ type: [Number, String],
44
+ default: 768
45
+ }
83
46
  });
84
- const emits = __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, Render.renderEmits), format.keysAddPrefix(Search.searchEmits, "search")), format.keysAddPrefix(Toc.tocEmits, "toc")), {
85
- "update:keyword": Search.searchEmits["update:modelValue"],
86
- "update:search": (payload) => lodash.isBoolean(payload),
87
- "update:toc": (payload) => lodash.isBoolean(payload)
47
+ var emits = require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, require_Render.renderEmits), require_format.keysAddPrefix(require_Search.searchEmits, "search")), require_format.keysAddPrefix(require_Toc.tocEmits, "toc")), {}, {
48
+ "update:keyword": require_Search.searchEmits["update:modelValue"],
49
+ "update:search": (payload) => (0, lodash.isBoolean)(payload),
50
+ "update:toc": (payload) => (0, lodash.isBoolean)(payload)
88
51
  });
89
- const _Markdown = /* @__PURE__ */ vue.defineComponent({
90
- name: "vue-markdown",
91
- props: markdownProps,
92
- emits,
93
- setup(props, {
94
- emit,
95
- expose
96
- }) {
97
- const {
98
- search,
99
- toc,
100
- keyword
101
- } = core.useVModels(props, emit, {
102
- passive: true
103
- });
104
- const root = vue.shallowRef();
105
- const {
106
- width: rootWidth,
107
- height: rootHeight
108
- } = core.useElementBounding(root);
109
- const isMiniScreen = vue.computed(() => rootWidth.value <= Number(props.miniScreenWidth));
110
- const getPrefixedKey = (key, prefix) => prefix ? prefix + lodash.upperFirst(key) : key;
111
- const createAttrs = (propAttrs, emitAttrs, prefix) => {
112
- const targetProps = lodash.mapValues(propAttrs, (_, key) => {
113
- const prefixedKey = getPrefixedKey(key, prefix);
114
- if (prefixedKey in props) return props[prefixedKey];
115
- });
116
- const targetEmits = lodash.chain(emitAttrs).mapValues((_, key) => {
117
- const prefixedKey = getPrefixedKey(key, prefix);
118
- if (prefixedKey in emits) return (...arg) => emit(prefixedKey, ...arg);
119
- }).mapKeys((_, key) => `on${lodash.upperFirst(key)}`).value();
120
- return __spreadValues(__spreadValues({}, targetProps), targetEmits);
121
- };
122
- const renderRef = vue.shallowRef();
123
- const renderAttrs = vue.computed(() => createAttrs(Render.renderProps, Render.renderEmits));
124
- const offsetWithNum = vue.computed(() => [props.topOffset, props.bottomOffset].map(Number));
125
- const {
126
- scrollEl
127
- } = index.useScrollParent(root);
128
- const getDefaultOffset = (offset) => {
129
- const {
130
- block,
131
- getOffset
132
- } = format.computeOffset(offset);
133
- if (block !== "start") return block;
134
- const [topOffset] = offsetWithNum.value;
135
- return (scrollAction) => {
136
- const {
137
- el
138
- } = scrollAction;
139
- const isParent = (scrollEl.value || document.documentElement) === el;
140
- const curOffset = getOffset(scrollAction, isParent);
141
- if (!isParent) return curOffset;
142
- const targetOffset = lodash.isUndefined(offset) ? topOffset : curOffset;
143
- return targetOffset + searchRect.height.value;
144
- };
145
- };
146
- const searchAttrs = vue.computed(() => __spreadProps(__spreadValues({}, createAttrs(Search.searchProps, Search.searchEmits, "search")), {
147
- onClose: () => {
148
- search.value = false;
149
- emit("searchClose");
150
- }
151
- }));
152
- const searchRef = vue.shallowRef();
153
- const searchRect = core.useElementBounding(searchRef);
154
- const searchIsOnMiniScreen = vue.computed(() => isMiniScreen.value && toc.value);
155
- const tocRef = vue.shallowRef();
156
- const tocRect = core.useElementBounding(tocRef);
157
- const onTocClick = () => {
158
- if (!isMiniScreen.value) return;
159
- toc.value = false;
160
- };
161
- const tocAttrs = vue.computed(() => {
162
- const tocAttrs2 = createAttrs(Toc.tocProps, Toc.tocEmits, "toc");
163
- return __spreadProps(__spreadValues({}, tocAttrs2), {
164
- offset: getDefaultOffset(props.tocOffset),
165
- onClick: (tocItem) => {
166
- onTocClick();
167
- emit("tocClick", tocItem);
168
- }
169
- });
170
- });
171
- const scrollRect = core.useElementBounding(scrollEl);
172
- const windowSize = core.useWindowSize();
173
- const tocStyles = vue.computed(() => {
174
- const offset = lodash.sum(offsetWithNum.value);
175
- const scrollHeight = Math.min(scrollRect.height.value || windowSize.height.value, rootHeight.value);
176
- if (isMiniScreen.value) {
177
- return {
178
- wrapper: {
179
- width: format.addUnit(rootWidth.value),
180
- height: format.addUnit(scrollHeight - offset)
181
- }
182
- };
183
- }
184
- const tocHeight = tocRect.height.value;
185
- if (tocHeight + offset < scrollHeight) return {};
186
- return {
187
- wrapper: {
188
- height: format.addUnit(tocHeight)
189
- },
190
- content: {
191
- marginBottom: format.addUnit(tocHeight + offset - scrollHeight)
192
- }
193
- };
194
- });
195
- const showBtnWithObj = vue.computed(() => {
196
- const {
197
- toc: toc2,
198
- search: search2
199
- } = format.allToObject(props.showBtn, ["search", "toc"]);
200
- return {
201
- search: search2 && !searchIsOnMiniScreen.value,
202
- toc: toc2
203
- };
204
- });
205
- const btnCount = vue.computed(() => lodash.values(showBtnWithObj.value).filter(Boolean).length);
206
- const createBtnClass = (isActive) => [addPrefix("__btn-icon"), {
207
- [addPrefix("__btn-icon--active")]: isActive
208
- }];
209
- expose({
210
- tocRefresh: () => __async(this, null, function* () {
211
- var _a;
212
- return (_a = tocRef.value) == null ? void 0 : _a.refresh();
213
- }),
214
- tocScrollTo: (href) => {
215
- var _a;
216
- return (_a = tocRef.value) == null ? void 0 : _a.scrollTo(href);
217
- },
218
- searchRefresh: (resetIndex) => __async(this, null, function* () {
219
- var _a;
220
- return (_a = searchRef.value) == null ? void 0 : _a.refresh(resetIndex);
221
- }),
222
- searchFocus: () => {
223
- var _a;
224
- return (_a = searchRef.value) == null ? void 0 : _a.focus();
225
- },
226
- searchBlur: () => {
227
- var _a;
228
- return (_a = searchRef.value) == null ? void 0 : _a.blur();
229
- },
230
- searchClear: () => {
231
- var _a;
232
- return (_a = searchRef.value) == null ? void 0 : _a.clear();
233
- },
234
- searchToggle: (...arg) => {
235
- var _a;
236
- return (_a = searchRef.value) == null ? void 0 : _a.toggle(...arg);
237
- },
238
- mdInstance: vue.computed(() => {
239
- var _a;
240
- return (_a = renderRef.value) == null ? void 0 : _a.mdInstance;
241
- }),
242
- htmlStr: vue.computed(() => {
243
- var _a;
244
- return ((_a = renderRef.value) == null ? void 0 : _a.htmlStr) || "";
245
- })
246
- });
247
- return () => (
248
- // 加多一层 div 可保证外部样式不影响内部粘性布局
249
- vue.createVNode("div", {
250
- "ref": root,
251
- "class": name
252
- }, [vue.createVNode("div", {
253
- "class": addPrefix("__wrapper")
254
- }, [vue.createVNode("div", {
255
- "class": addPrefix("__main")
256
- }, [search.value && vue.createVNode(index$1.VmdSticky, {
257
- "offset": props.topOffset
258
- }, {
259
- default: () => [vue.createVNode("div", {
260
- "class": addPrefix("__search")
261
- }, [vue.createVNode("div", {
262
- "class": addPrefix("__search-input")
263
- }, [vue.createVNode(index$2.VmdSearch, vue.mergeProps(searchAttrs.value, {
264
- "ref": searchRef,
265
- "modelValue": keyword.value,
266
- "onUpdate:modelValue": ($event) => keyword.value = $event,
267
- "target": renderRef.value
268
- }), null)])])]
269
- }), vue.createVNode(index$3.VmdRender, vue.mergeProps(renderAttrs.value, {
270
- "ref": renderRef
271
- }), null), !!btnCount.value && vue.createVNode(index$1.VmdSticky, {
272
- "posY": "bottom",
273
- "posX": "right",
274
- "flow": false,
275
- "zIndex": "var(--vmd-markdown-btn-z-index)",
276
- "offset": props.bottomOffset
277
- }, {
278
- default: () => [vue.createVNode("div", {
279
- "class": addPrefix("__btn"),
280
- "style": {
281
- width: `${btnCount.value * 40}px`
282
- }
283
- }, [showBtnWithObj.value.search && vue.createVNode("span", {
284
- "class": [addPrefix("__btn-search"), createBtnClass(search.value)],
285
- "onClick": () => search.value = !search.value
286
- }, [vue.createVNode(vueFontawesome.FontAwesomeIcon, {
287
- "size": "xs",
288
- "icon": freeSolidSvgIcons.faMagnifyingGlass
289
- }, null)]), showBtnWithObj.value.toc && vue.createVNode("span", {
290
- "class": [addPrefix("__btn-toc"), createBtnClass(toc.value)],
291
- "onClick": () => toc.value = !toc.value
292
- }, [vue.createVNode(vueFontawesome.FontAwesomeIcon, {
293
- "size": "xs",
294
- "icon": freeSolidSvgIcons.faList
295
- }, null)])])]
296
- })]), vue.createVNode(vue.Transition, {
297
- "name": addPrefix("__ani")
298
- }, {
299
- default: () => [toc.value && vue.createVNode("aside", {
300
- "class": [addPrefix("__aside"), {
301
- [addPrefix("--mini")]: isMiniScreen.value
302
- }]
303
- }, [vue.createVNode(index$1.VmdSticky, {
304
- "class": addPrefix("__aside-sticky"),
305
- "offset": props.topOffset
306
- }, {
307
- default: () => [vue.createVNode("div", {
308
- "style": tocStyles.value.wrapper,
309
- "class": addPrefix("__toc")
310
- }, [vue.createVNode(index$4.VmdToc, vue.mergeProps(tocAttrs.value, {
311
- "ref": tocRef,
312
- "style": tocStyles.value.content,
313
- "target": renderRef.value
314
- }), null)])]
315
- })])]
316
- })])])
317
- );
318
- }
52
+ var Markdown_default = /* @__PURE__ */ (0, vue.defineComponent)({
53
+ name: "vue-markdown",
54
+ props: markdownProps,
55
+ emits,
56
+ setup(props, { emit, expose }) {
57
+ const { search, toc, keyword } = (0, _vueuse_core.useVModels)(props, emit, { passive: true });
58
+ const root = (0, vue.shallowRef)();
59
+ const { width: rootWidth, height: rootHeight } = (0, _vueuse_core.useElementBounding)(root);
60
+ const isMiniScreen = (0, vue.computed)(() => rootWidth.value <= Number(props.miniScreenWidth));
61
+ const getPrefixedKey = (key, prefix) => prefix ? prefix + (0, lodash.upperFirst)(key) : key;
62
+ const createAttrs = (propAttrs, emitAttrs, prefix) => {
63
+ const targetProps = (0, lodash.mapValues)(propAttrs, (_, key) => {
64
+ const prefixedKey = getPrefixedKey(key, prefix);
65
+ if (prefixedKey in props) return props[prefixedKey];
66
+ });
67
+ const targetEmits = (0, lodash.chain)(emitAttrs).mapValues((_, key) => {
68
+ const prefixedKey = getPrefixedKey(key, prefix);
69
+ if (prefixedKey in emits) return (...arg) => emit(prefixedKey, ...arg);
70
+ }).mapKeys((_, key) => `on${(0, lodash.upperFirst)(key)}`).value();
71
+ return require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, targetProps), targetEmits);
72
+ };
73
+ const renderRef = (0, vue.shallowRef)();
74
+ const renderAttrs = (0, vue.computed)(() => createAttrs(require_Render.renderProps, require_Render.renderEmits));
75
+ const offsetWithNum = (0, vue.computed)(() => [props.topOffset, props.bottomOffset].map(Number));
76
+ const { scrollEl } = require_index$2.useScrollParent(root);
77
+ const getDefaultOffset = (offset) => {
78
+ const { block, getOffset } = require_format.computeOffset(offset);
79
+ if (block !== "start") return block;
80
+ const [topOffset] = offsetWithNum.value;
81
+ return (scrollAction) => {
82
+ const { el } = scrollAction;
83
+ const isParent = (scrollEl.value || document.documentElement) === el;
84
+ const curOffset = getOffset(scrollAction, isParent);
85
+ if (!isParent) return curOffset;
86
+ return ((0, lodash.isUndefined)(offset) ? topOffset : curOffset) + searchRect.height.value;
87
+ };
88
+ };
89
+ const searchAttrs = (0, vue.computed)(() => require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, createAttrs(require_Search.searchProps, require_Search.searchEmits, "search")), {}, { onClose: () => {
90
+ search.value = false;
91
+ emit("searchClose");
92
+ } }));
93
+ const searchRef = (0, vue.shallowRef)();
94
+ const searchRect = (0, _vueuse_core.useElementBounding)(searchRef);
95
+ const searchIsOnMiniScreen = (0, vue.computed)(() => isMiniScreen.value && toc.value);
96
+ const tocRef = (0, vue.shallowRef)();
97
+ const tocRect = (0, _vueuse_core.useElementBounding)(tocRef);
98
+ const onTocClick = () => {
99
+ if (!isMiniScreen.value) return;
100
+ toc.value = false;
101
+ };
102
+ const tocAttrs = (0, vue.computed)(() => {
103
+ return require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, createAttrs(require_Toc.tocProps, require_Toc.tocEmits, "toc")), {}, {
104
+ offset: getDefaultOffset(props.tocOffset),
105
+ onClick: (tocItem) => {
106
+ onTocClick();
107
+ emit("tocClick", tocItem);
108
+ }
109
+ });
110
+ });
111
+ const scrollRect = (0, _vueuse_core.useElementBounding)(scrollEl);
112
+ const windowSize = (0, _vueuse_core.useWindowSize)();
113
+ const tocStyles = (0, vue.computed)(() => {
114
+ const offset = (0, lodash.sum)(offsetWithNum.value);
115
+ const scrollHeight = Math.min(scrollRect.height.value || windowSize.height.value, rootHeight.value);
116
+ if (isMiniScreen.value) return { wrapper: {
117
+ width: require_format.addUnit(rootWidth.value),
118
+ height: require_format.addUnit(scrollHeight - offset)
119
+ } };
120
+ const tocHeight = tocRect.height.value;
121
+ if (tocHeight + offset < scrollHeight) return {};
122
+ return {
123
+ wrapper: { height: require_format.addUnit(tocHeight) },
124
+ content: { marginBottom: require_format.addUnit(tocHeight + offset - scrollHeight) }
125
+ };
126
+ });
127
+ const showBtnWithObj = (0, vue.computed)(() => {
128
+ const { toc, search } = require_format.allToObject(props.showBtn, ["search", "toc"]);
129
+ return {
130
+ search: search && !searchIsOnMiniScreen.value,
131
+ toc
132
+ };
133
+ });
134
+ const btnCount = (0, vue.computed)(() => (0, lodash.values)(showBtnWithObj.value).filter(Boolean).length);
135
+ const createBtnClass = (isActive) => [addPrefix("__btn-icon"), { [addPrefix("__btn-icon--active")]: isActive }];
136
+ expose({
137
+ tocRefresh: function() {
138
+ var _ref = require_asyncToGenerator._asyncToGenerator(function* () {
139
+ var _tocRef$value;
140
+ return (_tocRef$value = tocRef.value) === null || _tocRef$value === void 0 ? void 0 : _tocRef$value.refresh();
141
+ });
142
+ return function tocRefresh() {
143
+ return _ref.apply(this, arguments);
144
+ };
145
+ }(),
146
+ tocScrollTo: (href) => {
147
+ var _tocRef$value2;
148
+ return (_tocRef$value2 = tocRef.value) === null || _tocRef$value2 === void 0 ? void 0 : _tocRef$value2.scrollTo(href);
149
+ },
150
+ searchRefresh: function() {
151
+ var _ref2 = require_asyncToGenerator._asyncToGenerator(function* (resetIndex) {
152
+ var _searchRef$value;
153
+ return (_searchRef$value = searchRef.value) === null || _searchRef$value === void 0 ? void 0 : _searchRef$value.refresh(resetIndex);
154
+ });
155
+ return function searchRefresh(_x) {
156
+ return _ref2.apply(this, arguments);
157
+ };
158
+ }(),
159
+ searchFocus: () => {
160
+ var _searchRef$value2;
161
+ return (_searchRef$value2 = searchRef.value) === null || _searchRef$value2 === void 0 ? void 0 : _searchRef$value2.focus();
162
+ },
163
+ searchBlur: () => {
164
+ var _searchRef$value3;
165
+ return (_searchRef$value3 = searchRef.value) === null || _searchRef$value3 === void 0 ? void 0 : _searchRef$value3.blur();
166
+ },
167
+ searchClear: () => {
168
+ var _searchRef$value4;
169
+ return (_searchRef$value4 = searchRef.value) === null || _searchRef$value4 === void 0 ? void 0 : _searchRef$value4.clear();
170
+ },
171
+ searchToggle: (...arg) => {
172
+ var _searchRef$value5;
173
+ return (_searchRef$value5 = searchRef.value) === null || _searchRef$value5 === void 0 ? void 0 : _searchRef$value5.toggle(...arg);
174
+ },
175
+ mdInstance: (0, vue.computed)(() => {
176
+ var _renderRef$value;
177
+ return (_renderRef$value = renderRef.value) === null || _renderRef$value === void 0 ? void 0 : _renderRef$value.mdInstance;
178
+ }),
179
+ htmlStr: (0, vue.computed)(() => {
180
+ var _renderRef$value2;
181
+ return ((_renderRef$value2 = renderRef.value) === null || _renderRef$value2 === void 0 ? void 0 : _renderRef$value2.htmlStr) || "";
182
+ })
183
+ });
184
+ return () => (0, vue.createVNode)("div", {
185
+ "ref": root,
186
+ "class": name
187
+ }, [(0, vue.createVNode)("div", { "class": addPrefix("__wrapper") }, [(0, vue.createVNode)("div", { "class": addPrefix("__main") }, [
188
+ search.value && (0, vue.createVNode)(require_index$4.default, { "offset": props.topOffset }, { default: () => [(0, vue.createVNode)("div", { "class": addPrefix("__search") }, [(0, vue.createVNode)("div", { "class": addPrefix("__search-input") }, [(0, vue.createVNode)(require_index$1.default, (0, vue.mergeProps)(searchAttrs.value, {
189
+ "ref": searchRef,
190
+ "modelValue": keyword.value,
191
+ "onUpdate:modelValue": ($event) => keyword.value = $event,
192
+ "target": renderRef.value
193
+ }), null)])])] }),
194
+ (0, vue.createVNode)(require_index.default, (0, vue.mergeProps)(renderAttrs.value, { "ref": renderRef }), null),
195
+ !!btnCount.value && (0, vue.createVNode)(require_index$4.default, {
196
+ "posY": "bottom",
197
+ "posX": "right",
198
+ "flow": false,
199
+ "zIndex": "var(--vmd-markdown-btn-z-index)",
200
+ "offset": props.bottomOffset
201
+ }, { default: () => [(0, vue.createVNode)("div", {
202
+ "class": addPrefix("__btn"),
203
+ "style": { width: `${btnCount.value * 40}px` }
204
+ }, [showBtnWithObj.value.search && (0, vue.createVNode)("button", {
205
+ "aria-label": "Search",
206
+ "class": [addPrefix("__btn-search"), createBtnClass(search.value)],
207
+ "onClick": () => search.value = !search.value
208
+ }, [(0, vue.createVNode)(_fortawesome_vue_fontawesome.FontAwesomeIcon, { "icon": _fortawesome_free_solid_svg_icons.faMagnifyingGlass }, null)]), showBtnWithObj.value.toc && (0, vue.createVNode)("button", {
209
+ "aria-label": "Table of contents",
210
+ "class": [addPrefix("__btn-toc"), createBtnClass(toc.value)],
211
+ "onClick": () => toc.value = !toc.value
212
+ }, [(0, vue.createVNode)(_fortawesome_vue_fontawesome.FontAwesomeIcon, { "icon": _fortawesome_free_solid_svg_icons.faList }, null)])])] })
213
+ ]), (0, vue.createVNode)(vue.Transition, { "name": addPrefix("__ani") }, { default: () => [toc.value && (0, vue.createVNode)("aside", { "class": [addPrefix("__aside"), { [addPrefix("--mini")]: isMiniScreen.value }] }, [(0, vue.createVNode)(require_index$4.default, {
214
+ "class": addPrefix("__aside-sticky"),
215
+ "offset": props.topOffset
216
+ }, { default: () => [(0, vue.createVNode)("div", {
217
+ "style": tocStyles.value.wrapper,
218
+ "class": addPrefix("__toc")
219
+ }, [(0, vue.createVNode)(require_index$3.default, (0, vue.mergeProps)(tocAttrs.value, {
220
+ "ref": tocRef,
221
+ "style": tocStyles.value.content,
222
+ "target": renderRef.value
223
+ }), null)])] })])] })])]);
224
+ }
319
225
  });
320
- exports.default = _Markdown;
226
+ //#endregion
227
+ exports.default = Markdown_default;
321
228
  exports.markdownProps = markdownProps;
@@ -17,6 +17,7 @@
17
17
  --vmd-markdown-btn-icon-border-w: 2px;
18
18
  --vmd-markdown-btn-icon-border: var(--vmd-markdown-btn-icon-border-w) #fff solid;
19
19
  --vmd-markdown-btn-icon-line-left: calc(0px - var(--vmd-markdown-btn-icon-border-w) - 0.5px);
20
+ --vmd-markdown-btn-icon-size: 12px;
20
21
  --vmd-markdown-btn-icon-active: var(--vmd-active-color);
21
22
  --vmd-markdown-btn-icon-line-w: 1px;
22
23
  --vmd-markdown-btn-icon-line-h: 18px;
@@ -70,6 +71,8 @@
70
71
  border-radius: inherit;
71
72
  box-sizing: border-box;
72
73
  color: var(--vmd-icon-color);
74
+ background: none;
75
+ font-size: var(--vmd-markdown-btn-icon-size);
73
76
  }
74
77
  .vmd-markdown__btn-icon--active {
75
78
  background: var(--vmd-markdown-btn-icon-active);
@@ -0,0 +1,6 @@
1
+ const require_vue = require("../utils/vue.js");
2
+ const require_Markdown = require("./Markdown.js");
3
+ //#region src/markdown/index.ts
4
+ var VueMarkdown = require_vue.withInstall(require_Markdown.default);
5
+ //#endregion
6
+ exports.default = VueMarkdown;