@hejiayue/x-markdown-test 0.0.1-beta.118 → 0.0.1-beta.120

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 (81) hide show
  1. package/dist/x-markdown.cjs10.js +1 -1
  2. package/dist/x-markdown.cjs13.js +1 -1
  3. package/dist/x-markdown.cjs14.js +1 -1
  4. package/dist/x-markdown.cjs14.js.map +1 -1
  5. package/dist/x-markdown.cjs15.js +1 -1
  6. package/dist/x-markdown.cjs15.js.map +1 -1
  7. package/dist/x-markdown.cjs16.js +1 -1
  8. package/dist/x-markdown.cjs17.js +1 -1
  9. package/dist/x-markdown.cjs18.js +1 -1
  10. package/dist/x-markdown.cjs19.js +1 -1
  11. package/dist/x-markdown.cjs19.js.map +1 -1
  12. package/dist/x-markdown.cjs20.js +2 -0
  13. package/dist/x-markdown.cjs20.js.map +1 -0
  14. package/dist/x-markdown.cjs22.js +1 -1
  15. package/dist/x-markdown.cjs22.js.map +1 -1
  16. package/dist/x-markdown.cjs23.js +2 -0
  17. package/dist/x-markdown.cjs23.js.map +1 -0
  18. package/dist/{x-markdown.cjs24.js → x-markdown.cjs25.js} +2 -2
  19. package/dist/{x-markdown.cjs24.js.map → x-markdown.cjs25.js.map} +1 -1
  20. package/dist/x-markdown.cjs27.js +1 -1
  21. package/dist/x-markdown.cjs27.js.map +1 -1
  22. package/dist/x-markdown.cjs28.js +2 -0
  23. package/dist/x-markdown.cjs28.js.map +1 -0
  24. package/dist/x-markdown.cjs29.js +1 -1
  25. package/dist/x-markdown.cjs29.js.map +1 -1
  26. package/dist/x-markdown.cjs31.js +1 -1
  27. package/dist/x-markdown.cjs31.js.map +1 -1
  28. package/dist/x-markdown.cjs34.js +2 -0
  29. package/dist/x-markdown.cjs34.js.map +1 -0
  30. package/dist/x-markdown.cjs7.js +1 -1
  31. package/dist/x-markdown.cjs7.js.map +1 -1
  32. package/dist/x-markdown.cjs9.js +1 -1
  33. package/dist/x-markdown.cjs9.js.map +1 -1
  34. package/dist/x-markdown.es10.js +1 -1
  35. package/dist/x-markdown.es13.js +3 -3
  36. package/dist/x-markdown.es14.js +69 -28
  37. package/dist/x-markdown.es14.js.map +1 -1
  38. package/dist/x-markdown.es15.js +31 -2
  39. package/dist/x-markdown.es15.js.map +1 -1
  40. package/dist/x-markdown.es16.js +1 -2
  41. package/dist/x-markdown.es16.js.map +1 -1
  42. package/dist/x-markdown.es17.js +2 -4
  43. package/dist/x-markdown.es17.js.map +1 -1
  44. package/dist/x-markdown.es18.js +4 -4
  45. package/dist/x-markdown.es19.js +5 -204
  46. package/dist/x-markdown.es19.js.map +1 -1
  47. package/dist/x-markdown.es20.js +207 -0
  48. package/dist/x-markdown.es20.js.map +1 -0
  49. package/dist/x-markdown.es22.js +7 -71
  50. package/dist/x-markdown.es22.js.map +1 -1
  51. package/dist/x-markdown.es23.js +75 -0
  52. package/dist/x-markdown.es23.js.map +1 -0
  53. package/dist/{x-markdown.es24.js → x-markdown.es25.js} +4 -4
  54. package/dist/{x-markdown.es24.js.map → x-markdown.es25.js.map} +1 -1
  55. package/dist/x-markdown.es27.js +152 -134
  56. package/dist/x-markdown.es27.js.map +1 -1
  57. package/dist/x-markdown.es28.js +8 -0
  58. package/dist/x-markdown.es28.js.map +1 -0
  59. package/dist/x-markdown.es29.js +139 -5
  60. package/dist/x-markdown.es29.js.map +1 -1
  61. package/dist/x-markdown.es31.js +75 -3
  62. package/dist/x-markdown.es31.js.map +1 -1
  63. package/dist/x-markdown.es34.js +6 -0
  64. package/dist/x-markdown.es34.js.map +1 -0
  65. package/dist/x-markdown.es7.js +14 -39
  66. package/dist/x-markdown.es7.js.map +1 -1
  67. package/dist/x-markdown.es9.js +11 -9
  68. package/dist/x-markdown.es9.js.map +1 -1
  69. package/package.json +2 -1
  70. package/dist/x-markdown.cjs21.js +0 -2
  71. package/dist/x-markdown.cjs21.js.map +0 -1
  72. package/dist/x-markdown.cjs26.js +0 -2
  73. package/dist/x-markdown.cjs26.js.map +0 -1
  74. package/dist/x-markdown.cjs30.js +0 -2
  75. package/dist/x-markdown.cjs30.js.map +0 -1
  76. package/dist/x-markdown.es21.js +0 -11
  77. package/dist/x-markdown.es21.js.map +0 -1
  78. package/dist/x-markdown.es26.js +0 -160
  79. package/dist/x-markdown.es26.js.map +0 -1
  80. package/dist/x-markdown.es30.js +0 -78
  81. package/dist/x-markdown.es30.js.map +0 -1
@@ -1,142 +1,160 @@
1
- import { defineComponent, ref, computed, nextTick, watch, onMounted, createElementBlock, openBlock, normalizeClass, createElementVNode, renderSlot } from "vue";
2
- import { debounce } from "lodash-es";
3
- import { useMermaid, useMermaidZoom, downloadSvgAsPng } from "./x-markdown.es9.js";
4
- const _hoisted_1 = {
5
- key: 0,
6
- class: "syntax-mermaid__loading"
7
- };
8
- const _hoisted_2 = ["innerHTML"];
9
- const _sfc_main = /* @__PURE__ */ defineComponent({
10
- __name: "SyntaxMermaid",
11
- props: {
12
- content: { default: "" },
13
- id: { default: "mermaid-default" },
14
- isDark: { type: Boolean, default: false },
15
- config: { default: () => ({}) }
16
- },
17
- emits: ["degraded", "ready"],
18
- setup(__props, { expose: __expose, emit: __emit }) {
19
- const props = __props;
20
- const emit = __emit;
21
- const renderContainerRef = ref(null);
22
- const mermaidContent = computed(() => props.content);
23
- const mermaidOptions = computed(() => ({
24
- id: props.id,
25
- theme: props.isDark ? "dark" : "default",
26
- config: props.config,
27
- container: renderContainerRef.value
28
- }));
29
- const mermaidResult = useMermaid(mermaidContent, mermaidOptions);
30
- const svg = ref("");
31
- const isLoading = computed(() => mermaidResult.isLoading.value);
32
- const error = computed(() => mermaidResult.error.value);
33
- const containerRef = ref(null);
34
- const zoomControls = useMermaidZoom({
35
- container: containerRef
36
- });
37
- const debouncedInitialize = debounce(initializeZoom, 500);
38
- function initializeZoom() {
39
- nextTick(() => {
40
- if (containerRef.value) {
41
- zoomControls.initialize();
42
- }
43
- });
44
- }
45
- watch(
46
- () => mermaidResult.data.value,
47
- (newSvg, oldSvg) => {
48
- console.log("[SyntaxMermaid] mermaidResult.data.value changed:", {
49
- oldSvg,
50
- newSvg,
51
- isNewSvg: !!newSvg,
52
- startsWithSvg: newSvg?.trim().startsWith("<svg"),
53
- preview: newSvg?.substring(0, 50)
54
- });
55
- if (newSvg) {
56
- svg.value = newSvg;
57
- debouncedInitialize();
58
- if (newSvg.trim().startsWith("<svg")) {
59
- console.log("[SyntaxMermaid] Emitting ready event - Mermaid is available");
60
- emit("ready");
61
- } else {
62
- console.log("[SyntaxMermaid] Emitting degraded event - Mermaid not available");
63
- emit("degraded");
64
- }
65
- }
66
- },
67
- { immediate: true }
68
- );
69
- watch(svg, (newSvg) => {
70
- if (newSvg) {
71
- debouncedInitialize();
72
- }
1
+ import { useTimeoutFn, isClient, toArray, watchImmediate, createSingletonPromise, isObject } from "./x-markdown.es31.js";
2
+ import { tryOnScopeDispose } from "./x-markdown.es31.js";
3
+ import { computed, shallowRef, toValue, readonly, getCurrentInstance, onMounted, unref, toRaw } from "vue";
4
+ const defaultWindow = isClient ? window : void 0;
5
+ const defaultNavigator = isClient ? window.navigator : void 0;
6
+ function unrefElement(elRef) {
7
+ var _$el;
8
+ const plain = toValue(elRef);
9
+ return (_$el = plain === null || plain === void 0 ? void 0 : plain.$el) !== null && _$el !== void 0 ? _$el : plain;
10
+ }
11
+ function useEventListener(...args) {
12
+ const register = (el, event, listener, options) => {
13
+ el.addEventListener(event, listener, options);
14
+ return () => el.removeEventListener(event, listener, options);
15
+ };
16
+ const firstParamTargets = computed(() => {
17
+ const test = toArray(toValue(args[0])).filter((e) => e != null);
18
+ return test.every((e) => typeof e !== "string") ? test : void 0;
19
+ });
20
+ return watchImmediate(() => {
21
+ var _firstParamTargets$va, _firstParamTargets$va2;
22
+ return [
23
+ (_firstParamTargets$va = (_firstParamTargets$va2 = firstParamTargets.value) === null || _firstParamTargets$va2 === void 0 ? void 0 : _firstParamTargets$va2.map((e) => unrefElement(e))) !== null && _firstParamTargets$va !== void 0 ? _firstParamTargets$va : [defaultWindow].filter((e) => e != null),
24
+ toArray(toValue(firstParamTargets.value ? args[1] : args[0])),
25
+ toArray(unref(firstParamTargets.value ? args[2] : args[1])),
26
+ toValue(firstParamTargets.value ? args[3] : args[2])
27
+ ];
28
+ }, ([raw_targets, raw_events, raw_listeners, raw_options], _, onCleanup) => {
29
+ if (!(raw_targets === null || raw_targets === void 0 ? void 0 : raw_targets.length) || !(raw_events === null || raw_events === void 0 ? void 0 : raw_events.length) || !(raw_listeners === null || raw_listeners === void 0 ? void 0 : raw_listeners.length)) return;
30
+ const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;
31
+ const cleanups = raw_targets.flatMap((el) => raw_events.flatMap((event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))));
32
+ onCleanup(() => {
33
+ cleanups.forEach((fn) => fn());
73
34
  });
74
- function zoomIn() {
75
- zoomControls?.zoomIn();
76
- }
77
- function zoomOut() {
78
- zoomControls?.zoomOut();
79
- }
80
- function reset() {
81
- zoomControls?.reset();
82
- }
83
- function fullscreen() {
84
- zoomControls?.fullscreen();
85
- zoomControls?.reset();
86
- }
87
- function download() {
88
- downloadSvgAsPng(svg.value);
35
+ }, { flush: "post" });
36
+ }
37
+ // @__NO_SIDE_EFFECTS__
38
+ function useMounted() {
39
+ const isMounted = shallowRef(false);
40
+ const instance = getCurrentInstance();
41
+ if (instance) onMounted(() => {
42
+ isMounted.value = true;
43
+ }, instance);
44
+ return isMounted;
45
+ }
46
+ // @__NO_SIDE_EFFECTS__
47
+ function useSupported(callback) {
48
+ const isMounted = /* @__PURE__ */ useMounted();
49
+ return computed(() => {
50
+ isMounted.value;
51
+ return Boolean(callback());
52
+ });
53
+ }
54
+ // @__NO_SIDE_EFFECTS__
55
+ function usePermission(permissionDesc, options = {}) {
56
+ const { controls = false, navigator: navigator$1 = defaultNavigator } = options;
57
+ const isSupported = /* @__PURE__ */ useSupported(() => navigator$1 && "permissions" in navigator$1);
58
+ const permissionStatus = shallowRef();
59
+ const desc = typeof permissionDesc === "string" ? { name: permissionDesc } : permissionDesc;
60
+ const state = shallowRef();
61
+ const update = () => {
62
+ var _permissionStatus$val, _permissionStatus$val2;
63
+ state.value = (_permissionStatus$val = (_permissionStatus$val2 = permissionStatus.value) === null || _permissionStatus$val2 === void 0 ? void 0 : _permissionStatus$val2.state) !== null && _permissionStatus$val !== void 0 ? _permissionStatus$val : "prompt";
64
+ };
65
+ useEventListener(permissionStatus, "change", update, { passive: true });
66
+ const query = createSingletonPromise(async () => {
67
+ if (!isSupported.value) return;
68
+ if (!permissionStatus.value) try {
69
+ permissionStatus.value = await navigator$1.permissions.query(desc);
70
+ } catch (_unused) {
71
+ permissionStatus.value = void 0;
72
+ } finally {
73
+ update();
89
74
  }
90
- function getSvg() {
91
- return svg.value;
75
+ if (controls) return toRaw(permissionStatus.value);
76
+ });
77
+ query();
78
+ if (controls) return {
79
+ state,
80
+ isSupported,
81
+ query
82
+ };
83
+ else return state;
84
+ }
85
+ function useClipboard(options = {}) {
86
+ const { navigator: navigator$1 = defaultNavigator, read = false, source, copiedDuring = 1500, legacy = false } = options;
87
+ const isClipboardApiSupported = /* @__PURE__ */ useSupported(() => navigator$1 && "clipboard" in navigator$1);
88
+ const permissionRead = /* @__PURE__ */ usePermission("clipboard-read");
89
+ const permissionWrite = /* @__PURE__ */ usePermission("clipboard-write");
90
+ const isSupported = computed(() => isClipboardApiSupported.value || legacy);
91
+ const text = shallowRef("");
92
+ const copied = shallowRef(false);
93
+ const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });
94
+ async function updateText() {
95
+ let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionRead.value));
96
+ if (!useLegacy) try {
97
+ text.value = await navigator$1.clipboard.readText();
98
+ } catch (_unused) {
99
+ useLegacy = true;
92
100
  }
93
- function reinitialize() {
94
- debouncedInitialize();
95
- }
96
- onMounted(() => {
97
- if (svg.value) {
98
- debouncedInitialize();
101
+ if (useLegacy) text.value = legacyRead();
102
+ }
103
+ if (isSupported.value && read) useEventListener(["copy", "cut"], updateText, { passive: true });
104
+ async function copy(value = toValue(source)) {
105
+ if (isSupported.value && value != null) {
106
+ let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionWrite.value));
107
+ if (!useLegacy) try {
108
+ await navigator$1.clipboard.writeText(value);
109
+ } catch (_unused2) {
110
+ useLegacy = true;
99
111
  }
100
- });
101
- __expose({
102
- svg,
103
- isLoading,
104
- error,
105
- containerRef,
106
- zoomIn,
107
- zoomOut,
108
- reset,
109
- fullscreen,
110
- download,
111
- getSvg,
112
- reinitialize
113
- });
114
- return (_ctx, _cache) => {
115
- return openBlock(), createElementBlock("div", {
116
- ref_key: "containerRef",
117
- ref: containerRef,
118
- class: normalizeClass(["syntax-mermaid", { "syntax-mermaid--dark": props.isDark }])
119
- }, [
120
- createElementVNode("div", {
121
- ref_key: "renderContainerRef",
122
- ref: renderContainerRef,
123
- class: "syntax-mermaid__render-container",
124
- "aria-hidden": "true"
125
- }, null, 512),
126
- isLoading.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
127
- renderSlot(_ctx.$slots, "loading", {}, () => [
128
- _cache[0] || (_cache[0] = createElementVNode("span", { class: "syntax-mermaid__loading-text" }, "加载中...", -1))
129
- ])
130
- ])) : (openBlock(), createElementBlock("div", {
131
- key: 1,
132
- class: "syntax-mermaid__content",
133
- innerHTML: svg.value
134
- }, null, 8, _hoisted_2))
135
- ], 2);
136
- };
112
+ if (useLegacy) legacyCopy(value);
113
+ text.value = value;
114
+ copied.value = true;
115
+ timeout.start();
116
+ }
117
+ }
118
+ function legacyCopy(value) {
119
+ const ta = document.createElement("textarea");
120
+ ta.value = value;
121
+ ta.style.position = "absolute";
122
+ ta.style.opacity = "0";
123
+ ta.setAttribute("readonly", "");
124
+ document.body.appendChild(ta);
125
+ ta.select();
126
+ document.execCommand("copy");
127
+ ta.remove();
128
+ }
129
+ function legacyRead() {
130
+ var _document$getSelectio, _document, _document$getSelectio2;
131
+ return (_document$getSelectio = (_document = document) === null || _document === void 0 || (_document$getSelectio2 = _document.getSelection) === null || _document$getSelectio2 === void 0 || (_document$getSelectio2 = _document$getSelectio2.call(_document)) === null || _document$getSelectio2 === void 0 ? void 0 : _document$getSelectio2.toString()) !== null && _document$getSelectio !== void 0 ? _document$getSelectio : "";
132
+ }
133
+ function isAllowed(status) {
134
+ return status === "granted" || status === "prompt";
137
135
  }
138
- });
136
+ return {
137
+ isSupported,
138
+ text: readonly(text),
139
+ copied: readonly(copied),
140
+ copy
141
+ };
142
+ }
139
143
  export {
140
- _sfc_main as default
144
+ createSingletonPromise,
145
+ defaultNavigator,
146
+ defaultWindow,
147
+ isClient,
148
+ isObject,
149
+ toArray,
150
+ tryOnScopeDispose,
151
+ unrefElement,
152
+ useClipboard,
153
+ useEventListener,
154
+ useMounted,
155
+ usePermission,
156
+ useSupported,
157
+ useTimeoutFn,
158
+ watchImmediate
141
159
  };
142
160
  //# sourceMappingURL=x-markdown.es27.js.map