@oiij/markdown-it 0.0.1 → 0.0.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.
- package/README.md +6 -26
- package/dist/index.cjs +57 -64
- package/dist/index.d.cts +17 -13
- package/dist/index.d.ts +17 -13
- package/dist/index.js +42 -37
- package/package.json +56 -91
package/README.md
CHANGED
|
@@ -1,32 +1,12 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Use Markdown-it
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@oiij/markdown-it)
|
|
4
|
+
[](https://github.com/Eiog/@oiij/markdown-it/blob/main/LICENSE)
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
- Test with [vitest](https://vitest.dev)
|
|
7
|
-
|
|
8
|
-
# Usage
|
|
9
|
-
|
|
10
|
-
### 安装
|
|
6
|
+
## Usage
|
|
11
7
|
|
|
12
8
|
```bash
|
|
13
|
-
pnpm add @oiij/
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
### 使用
|
|
17
|
-
|
|
18
|
-
```vue
|
|
19
|
-
<script setup lang="ts">
|
|
20
|
-
import { useMarkdownIt } from '@oiij/markdown-it'
|
|
21
|
-
|
|
22
|
-
const { domRef, html } = useMarkdownIt('# Hello World')
|
|
23
|
-
</script>
|
|
24
|
-
|
|
25
|
-
<template>
|
|
26
|
-
<div ref="domRef" style="width: 100%; height: 100%;" />
|
|
27
|
-
</template>
|
|
9
|
+
pnpm add @oiij/markdown-it
|
|
28
10
|
```
|
|
29
11
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
MIT
|
|
12
|
+
[在线文档](https://oiij-use.vercel.app/examples/markdown-it/started)
|
package/dist/index.cjs
CHANGED
|
@@ -1,75 +1,68 @@
|
|
|
1
|
-
|
|
1
|
+
//#region rolldown:runtime
|
|
2
2
|
var __create = Object.create;
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
8
|
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
|
+
key = keys[i];
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
+
get: ((k) => from[k]).bind(null, key),
|
|
13
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
19
17
|
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
));
|
|
28
|
-
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
+
value: mod,
|
|
20
|
+
enumerable: true
|
|
21
|
+
}) : target, mod));
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
const dompurify = __toESM(require("dompurify"));
|
|
25
|
+
const markdown_it = __toESM(require("markdown-it"));
|
|
26
|
+
const vue = __toESM(require("vue"));
|
|
29
27
|
|
|
30
|
-
|
|
31
|
-
var index_exports = {};
|
|
32
|
-
__export(index_exports, {
|
|
33
|
-
useMarkdownIt: () => useMarkdownIt
|
|
34
|
-
});
|
|
35
|
-
module.exports = __toCommonJS(index_exports);
|
|
36
|
-
var import_markdown_it = __toESM(require("markdown-it"), 1);
|
|
37
|
-
var import_vue = require("vue");
|
|
28
|
+
//#region src/index.ts
|
|
38
29
|
function useMarkdownIt(defaultValue, options) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
30
|
+
const { manual = false, domPurify = true,..._options } = options ?? {};
|
|
31
|
+
const value = (0, vue.ref)((0, vue.isRef)(defaultValue) ? (0, vue.toValue)(defaultValue.value) : (0, vue.isReactive)(defaultValue) ? (0, vue.toValue)(defaultValue) : defaultValue);
|
|
32
|
+
if ((0, vue.isRef)(defaultValue)) (0, vue.watchEffect)(() => {
|
|
33
|
+
value.value = (0, vue.toValue)(defaultValue.value);
|
|
34
|
+
});
|
|
35
|
+
const html = (0, vue.ref)("");
|
|
36
|
+
const domRef = (0, vue.ref)();
|
|
37
|
+
const md = (0, markdown_it.default)({ ..._options });
|
|
38
|
+
function render(value$1) {
|
|
39
|
+
const mdValue = md.render(value$1);
|
|
40
|
+
html.value = domPurify ? dompurify.default.sanitize(mdValue) : mdValue;
|
|
41
|
+
if (domRef.value) domRef.value.innerHTML = html.value;
|
|
42
|
+
else {
|
|
43
|
+
const unWatch = (0, vue.watch)(domRef, (v) => {
|
|
44
|
+
if (v) {
|
|
45
|
+
v.innerHTML = html.value;
|
|
46
|
+
unWatch();
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return html.value;
|
|
51
|
+
}
|
|
52
|
+
if (!manual) {
|
|
53
|
+
render(value.value ?? "");
|
|
54
|
+
(0, vue.watch)(value, (v) => {
|
|
55
|
+
render(v ?? "");
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
value,
|
|
60
|
+
html,
|
|
61
|
+
domRef,
|
|
62
|
+
md,
|
|
63
|
+
render
|
|
64
|
+
};
|
|
71
65
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
});
|
|
66
|
+
|
|
67
|
+
//#endregion
|
|
68
|
+
exports.useMarkdownIt = useMarkdownIt;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import markdownIt, { Options } from
|
|
2
|
-
|
|
3
|
-
import { Ref } from 'vue';
|
|
1
|
+
import markdownIt, { Options } from "markdown-it";
|
|
2
|
+
import { Ref } from "vue";
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
//#region src/index.d.ts
|
|
5
|
+
type MarkDownItOptions = Options & {
|
|
6
|
+
manual?: boolean;
|
|
7
|
+
domPurify?: boolean;
|
|
8
|
+
};
|
|
9
|
+
declare function useMarkdownIt(defaultValue?: Ref<string> | string, options?: MarkDownItOptions): {
|
|
10
|
+
value: Ref<string | undefined, string | undefined>;
|
|
11
|
+
html: Ref<string, string>;
|
|
12
|
+
domRef: Ref<HTMLElement | undefined, HTMLElement | undefined>;
|
|
13
|
+
md: markdownIt;
|
|
14
|
+
render: (value: string) => string;
|
|
15
|
+
};
|
|
16
|
+
type MarkdownItReturns = ReturnType<typeof useMarkdownIt>;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { MarkDownItOptions, MarkdownItReturns, useMarkdownIt };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import markdownIt, { Options } from
|
|
2
|
-
|
|
3
|
-
import { Ref } from 'vue';
|
|
1
|
+
import markdownIt, { Options } from "markdown-it";
|
|
2
|
+
import { Ref } from "vue";
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
//#region src/index.d.ts
|
|
5
|
+
type MarkDownItOptions = Options & {
|
|
6
|
+
manual?: boolean;
|
|
7
|
+
domPurify?: boolean;
|
|
8
|
+
};
|
|
9
|
+
declare function useMarkdownIt(defaultValue?: Ref<string> | string, options?: MarkDownItOptions): {
|
|
10
|
+
value: Ref<string | undefined, string | undefined>;
|
|
11
|
+
html: Ref<string, string>;
|
|
12
|
+
domRef: Ref<HTMLElement | undefined, HTMLElement | undefined>;
|
|
13
|
+
md: markdownIt;
|
|
14
|
+
render: (value: string) => string;
|
|
15
|
+
};
|
|
16
|
+
type MarkdownItReturns = ReturnType<typeof useMarkdownIt>;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { MarkDownItOptions, MarkdownItReturns, useMarkdownIt };
|
package/dist/index.js
CHANGED
|
@@ -1,40 +1,45 @@
|
|
|
1
|
-
|
|
1
|
+
import DOMPurify from "dompurify";
|
|
2
2
|
import markdownIt from "markdown-it";
|
|
3
|
-
import { isReactive, isRef,
|
|
3
|
+
import { isReactive, isRef, ref, toValue, watch, watchEffect } from "vue";
|
|
4
|
+
|
|
5
|
+
//#region src/index.ts
|
|
4
6
|
function useMarkdownIt(defaultValue, options) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
7
|
+
const { manual = false, domPurify = true,..._options } = options ?? {};
|
|
8
|
+
const value = ref(isRef(defaultValue) ? toValue(defaultValue.value) : isReactive(defaultValue) ? toValue(defaultValue) : defaultValue);
|
|
9
|
+
if (isRef(defaultValue)) watchEffect(() => {
|
|
10
|
+
value.value = toValue(defaultValue.value);
|
|
11
|
+
});
|
|
12
|
+
const html = ref("");
|
|
13
|
+
const domRef = ref();
|
|
14
|
+
const md = markdownIt({ ..._options });
|
|
15
|
+
function render(value$1) {
|
|
16
|
+
const mdValue = md.render(value$1);
|
|
17
|
+
html.value = domPurify ? DOMPurify.sanitize(mdValue) : mdValue;
|
|
18
|
+
if (domRef.value) domRef.value.innerHTML = html.value;
|
|
19
|
+
else {
|
|
20
|
+
const unWatch = watch(domRef, (v) => {
|
|
21
|
+
if (v) {
|
|
22
|
+
v.innerHTML = html.value;
|
|
23
|
+
unWatch();
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return html.value;
|
|
28
|
+
}
|
|
29
|
+
if (!manual) {
|
|
30
|
+
render(value.value ?? "");
|
|
31
|
+
watch(value, (v) => {
|
|
32
|
+
render(v ?? "");
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
value,
|
|
37
|
+
html,
|
|
38
|
+
domRef,
|
|
39
|
+
md,
|
|
40
|
+
render
|
|
41
|
+
};
|
|
37
42
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
};
|
|
43
|
+
|
|
44
|
+
//#endregion
|
|
45
|
+
export { useMarkdownIt };
|
package/package.json
CHANGED
|
@@ -1,91 +1,56 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@oiij/markdown-it",
|
|
3
|
-
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
5
|
-
"description": "A Vue Composable for markdown-it",
|
|
6
|
-
"author": "oiij",
|
|
7
|
-
"license": "MIT",
|
|
8
|
-
"homepage": "https://github.com/oiij/
|
|
9
|
-
"repository": {
|
|
10
|
-
"type": "git",
|
|
11
|
-
"url": "git@github.com:oiij/
|
|
12
|
-
},
|
|
13
|
-
"bugs": "https://github.com/oiij/
|
|
14
|
-
"keywords": [
|
|
15
|
-
"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
"
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
"devDependencies": {
|
|
58
|
-
"@antfu/eslint-config": "^4.12.0",
|
|
59
|
-
"@oiij/tsconfig": "^0.0.1",
|
|
60
|
-
"@types/markdown-it": "^14.1.2",
|
|
61
|
-
"@types/node": "^22.14.1",
|
|
62
|
-
"@vitest/ui": "^3.1.2",
|
|
63
|
-
"@vueuse/core": "^13.1.0",
|
|
64
|
-
"bumpp": "^10.1.0",
|
|
65
|
-
"commitlint": "^19.8.0",
|
|
66
|
-
"cz-git": "^1.11.1",
|
|
67
|
-
"czg": "^1.11.1",
|
|
68
|
-
"eslint": "^9.25.1",
|
|
69
|
-
"eslint-plugin-format": "^1.0.1",
|
|
70
|
-
"esno": "^4.8.0",
|
|
71
|
-
"lint-staged": "^15.5.1",
|
|
72
|
-
"markdown-it": "^14.1.0",
|
|
73
|
-
"simple-git-hooks": "^2.12.1",
|
|
74
|
-
"taze": "^19.0.4",
|
|
75
|
-
"tsup": "^8.4.0",
|
|
76
|
-
"typescript": "^5.8.3",
|
|
77
|
-
"vitest": "^3.1.2",
|
|
78
|
-
"vue": "^3.5.13"
|
|
79
|
-
},
|
|
80
|
-
"simple-git-hooks": {
|
|
81
|
-
"pre-commit": "pnpm lint-staged && pnpm type:check"
|
|
82
|
-
},
|
|
83
|
-
"lint-staged": {
|
|
84
|
-
"*.{js,jsx,ts,tsx}": [
|
|
85
|
-
"pnpm lint:fix"
|
|
86
|
-
]
|
|
87
|
-
},
|
|
88
|
-
"publishConfig": {
|
|
89
|
-
"access": "public"
|
|
90
|
-
}
|
|
91
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@oiij/markdown-it",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.0.2",
|
|
5
|
+
"description": "A Vue Composable for markdown-it",
|
|
6
|
+
"author": "oiij",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"homepage": "https://github.com/oiij/use",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git@github.com:oiij/use.git"
|
|
12
|
+
},
|
|
13
|
+
"bugs": "https://github.com/oiij/use/issues",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"@oiij/use",
|
|
16
|
+
"markdown-it"
|
|
17
|
+
],
|
|
18
|
+
"sideEffects": false,
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"import": "./dist/index.js",
|
|
23
|
+
"require": "./dist/index.cjs"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"main": "./dist/index.js",
|
|
27
|
+
"module": "./dist/index.js",
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
29
|
+
"files": [
|
|
30
|
+
"LICENSE",
|
|
31
|
+
"README.md",
|
|
32
|
+
"dist",
|
|
33
|
+
"package.json"
|
|
34
|
+
],
|
|
35
|
+
"peerDependencies": {
|
|
36
|
+
"@vueuse/core": "^13.1.0",
|
|
37
|
+
"dompurify": "^3.2.5",
|
|
38
|
+
"markdown-it": "^14.1.0",
|
|
39
|
+
"vue": "^3.5.13"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/markdown-it": "^14.1.2",
|
|
43
|
+
"@vueuse/core": "^13.3.0",
|
|
44
|
+
"dompurify": "^3.2.6",
|
|
45
|
+
"markdown-it": "^14.1.0",
|
|
46
|
+
"vue": "^3.5.16"
|
|
47
|
+
},
|
|
48
|
+
"publishConfig": {
|
|
49
|
+
"access": "public"
|
|
50
|
+
},
|
|
51
|
+
"scripts": {
|
|
52
|
+
"dev": "tsdown --watch",
|
|
53
|
+
"build": "tsc --noEmit && tsdown",
|
|
54
|
+
"bumpp": "bumpp --no-push"
|
|
55
|
+
}
|
|
56
|
+
}
|