markdown-it-any-block 3.3.8 → 3.4.4-beta

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.
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (let key of __getOwnPropNames(from))
11
+ if (!__hasOwnProp.call(to, key) && key !== except)
12
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ }
14
+ return to;
15
+ };
16
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
+ // If the importer is in node compatibility mode or this is not an ESM
18
+ // file that has been converted to a CommonJS file using a Babel-
19
+ // compatible transform (i.e. "__esModule" has not been set), then set
20
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
25
+ const index_mdit = require("./index_mdit-CE73u7cg.cjs");
26
+ let dom = null;
27
+ let disable_disable_flag = false;
28
+ async function jsdom_init(enable = true, disable_disable = false) {
29
+ disable_disable_flag = disable_disable;
30
+ if (typeof document !== "undefined") return;
31
+ const { default: jsdom } = await import("jsdom");
32
+ const { JSDOM } = jsdom;
33
+ dom = new JSDOM(`<!DOCTYPE html><html><body></body></html>`, {
34
+ url: "http://localhost/"
35
+ // @warn 若缺少该行,则在mdit+build环境下,编译报错
36
+ });
37
+ if (enable) jsdom_enable();
38
+ index_mdit.jsdom_api.jsdom_enable = jsdom_enable;
39
+ index_mdit.jsdom_api.jsdom_disable = jsdom_disable;
40
+ }
41
+ function jsdom_enable() {
42
+ if (!dom) return;
43
+ global.Storage = dom.window.Storage;
44
+ global.window = dom.window;
45
+ global.history = dom.window.history;
46
+ global.document = dom.window.document;
47
+ global.Node = dom.window.Node;
48
+ global.NodeList = dom.window.NodeList;
49
+ global.HTMLElement = dom.window.HTMLElement;
50
+ global.HTMLDivElement = dom.window.HTMLDivElement;
51
+ global.HTMLPreElement = dom.window.HTMLPreElement;
52
+ global.HTMLQuoteElement = dom.window.HTMLQuoteElement;
53
+ global.HTMLTableElement = dom.window.HTMLTableElement;
54
+ global.HTMLUListElement = dom.window.HTMLUListElement;
55
+ global.HTMLScriptElement = dom.window.HTMLScriptElement;
56
+ dom.window.scrollTo = () => {
57
+ };
58
+ global.MutationObserver = dom.window.MutationObserver;
59
+ }
60
+ function jsdom_disable() {
61
+ if (disable_disable_flag) return;
62
+ if (!dom) return;
63
+ global.window = void 0;
64
+ global.history = void 0;
65
+ global.document = void 0;
66
+ }
67
+ exports.jsdom_init = jsdom_init;
68
+ //# sourceMappingURL=node.cjs.js.map
@@ -0,0 +1,46 @@
1
+ import { j as jsdom_api } from "./index_mdit-DeveGzkz.js";
2
+ let dom = null;
3
+ let disable_disable_flag = false;
4
+ async function jsdom_init(enable = true, disable_disable = false) {
5
+ disable_disable_flag = disable_disable;
6
+ if (typeof document !== "undefined") return;
7
+ const { default: jsdom } = await import("jsdom");
8
+ const { JSDOM } = jsdom;
9
+ dom = new JSDOM(`<!DOCTYPE html><html><body></body></html>`, {
10
+ url: "http://localhost/"
11
+ // @warn 若缺少该行,则在mdit+build环境下,编译报错
12
+ });
13
+ if (enable) jsdom_enable();
14
+ jsdom_api.jsdom_enable = jsdom_enable;
15
+ jsdom_api.jsdom_disable = jsdom_disable;
16
+ }
17
+ function jsdom_enable() {
18
+ if (!dom) return;
19
+ global.Storage = dom.window.Storage;
20
+ global.window = dom.window;
21
+ global.history = dom.window.history;
22
+ global.document = dom.window.document;
23
+ global.Node = dom.window.Node;
24
+ global.NodeList = dom.window.NodeList;
25
+ global.HTMLElement = dom.window.HTMLElement;
26
+ global.HTMLDivElement = dom.window.HTMLDivElement;
27
+ global.HTMLPreElement = dom.window.HTMLPreElement;
28
+ global.HTMLQuoteElement = dom.window.HTMLQuoteElement;
29
+ global.HTMLTableElement = dom.window.HTMLTableElement;
30
+ global.HTMLUListElement = dom.window.HTMLUListElement;
31
+ global.HTMLScriptElement = dom.window.HTMLScriptElement;
32
+ dom.window.scrollTo = () => {
33
+ };
34
+ global.MutationObserver = dom.window.MutationObserver;
35
+ }
36
+ function jsdom_disable() {
37
+ if (disable_disable_flag) return;
38
+ if (!dom) return;
39
+ global.window = void 0;
40
+ global.history = void 0;
41
+ global.document = void 0;
42
+ }
43
+ export {
44
+ jsdom_init
45
+ };
46
+ //# sourceMappingURL=node.es.js.map
package/index.ts CHANGED
@@ -1,6 +1,4 @@
1
- // JsDom。仅用于提供document对象支持 (如果Ob环境中则不需要,用ob自带document对象的)
2
- export * from './jsdom_init'
3
- export { ABReg } from '../ABConverter/ABReg'
1
+ export { ABReg } from '../ABConverter/ABSetting'
4
2
  export { ab_mdit, ab_mdit_client } from './index_mdit'
5
3
  export { abConvertEvent } from '../ABConverter/ABConvertEvent'
6
4
  export { ABConvertManager } from '../ABConverter/ABConvertManager' // for client
package/index_mdit.ts CHANGED
@@ -49,7 +49,7 @@ import MarkdownItConstructor from "markdown-it-container"
49
49
  // 3. markdown-it-anyblock 插件
50
50
  // import { ABConvertManager } from "./index"
51
51
  import { ABConvertManager } from "../ABConverter/ABConvertManager"
52
- import { ABCSetting, ABReg } from "../ABConverter/ABReg"
52
+ import { ABCSetting, ABReg } from "../ABConverter/ABSetting"
53
53
  // 加载所有转换器 (都是可选的)
54
54
  // (当然,如果A转换器依赖B转换器,那么你导入A必然导入B)
55
55
  import "../ABConverter/converter/abc_text"
@@ -65,7 +65,11 @@ import "../ABConverter/converter/abc_echarts"
65
65
  import "../ABConverter/converter/abc_plantuml" // 可选建议:
66
66
  import "../ABConverter/converter/abc_mermaid" // 可选建议:新版无额外依赖,旧版非 min 环境下 7.1MB
67
67
  import "../ABConverter/converter/abc_markmap" // 可选建议:1.3MB
68
- import { jsdom_disable, jsdom_enable } from "./jsdom_init"
68
+ // client 环境下无用,在 node 环境会被重载并引入具有 node-only 依赖的实现 (jsdom)
69
+ export const jsdom_api = {
70
+ jsdom_enable: () => {},
71
+ jsdom_disable: () => {}
72
+ }
69
73
 
70
74
  interface Options {
71
75
  multiline: boolean;
@@ -373,12 +377,12 @@ function abRender_fence(md: MarkdownIt, options?: Partial<Options>): void {
373
377
  //`<!--afterbegin-->${rawCode}<!--beforeend--></div><!--afterend-->`
374
378
 
375
379
  // anyBlock专属渲染
376
- jsdom_enable()
380
+ jsdom_api.jsdom_enable()
377
381
  const el: HTMLDivElement = document.createElement("div"); el.classList.add("ab-note", "drop-shadow");
378
382
  // 临时el,未appendClild到dom中,脱离作用域会自动销毁
379
383
  // 用临时el是因为 mdit render 是 md_str 转 html_str 的,而Ob和原插件那边是使用HTML类的,要兼容
380
384
  ABConvertManager.autoABConvert(el, ab_header, ab_content, token.markup.startsWith(':::')?'mdit':'')
381
- jsdom_disable()
385
+ jsdom_api.jsdom_disable()
382
386
 
383
387
  // anyBlock特殊情况 - 需要再渲染 (ob不需要,主要是vuepress有些插件可以复用一下,并且处理mdit无客户端环境可能存在的问题)
384
388
  if (el.classList.contains("ab-raw")) {
@@ -1,14 +1,21 @@
1
1
  /**
2
- * 初始化JSDOM
2
+ * 初始化JSDOM (仅能用于 node.js 环境)
3
3
  *
4
4
  * JsDom。仅用于提供document对象支持 (如果Ob等客户端渲染环境中则不需要,服务端渲染则需要)
5
5
  */
6
6
 
7
7
  // import jsdom from "jsdom"
8
+ import { jsdom_api } from '../index_mdit'
8
9
 
9
- let dom: any = null;
10
+ let dom: any = null // 缓存 jsdom 实例
11
+ let disable_disable_flag: boolean = false // 禁止禁用
10
12
 
11
- export async function jsdom_init(enable: boolean = true) {
13
+ /**
14
+ * @param enable 默认开启
15
+ * @param disable_disable 禁止禁用
16
+ */
17
+ export async function jsdom_init(enable: boolean = true, disable_disable: boolean = false) {
18
+ disable_disable_flag = disable_disable
12
19
  if (typeof document !== "undefined") return // 客户端环境,无需 jsdom 环境,同时也避免误卸载 document 环境
13
20
  const { default: jsdom } = await import('jsdom') // 废弃,要同步,避免docuemnt初始化不及时
14
21
  const { JSDOM } = jsdom
@@ -16,10 +23,14 @@ export async function jsdom_init(enable: boolean = true) {
16
23
  url: 'http://localhost/', // @warn 若缺少该行,则在mdit+build环境下,编译报错
17
24
  })
18
25
  if (enable) jsdom_enable()
26
+
27
+ // JsDom。仅用于提供document对象支持 (如果纯Client/Ob环境中则不需要,用client自带document对象的)
28
+ jsdom_api.jsdom_enable = jsdom_enable
29
+ jsdom_api.jsdom_disable = jsdom_disable
19
30
  }
20
31
 
21
32
  /// 启用 jsdom 环境
22
- export function jsdom_enable() {
33
+ function jsdom_enable() {
23
34
  if (!dom) return // console.error("jsdom_enable failed: please run jsdom_init first.") // 允许客户端中运行,不使用jsdom
24
35
  global.Storage = dom.window.Storage;
25
36
  global.window = dom.window as any
@@ -39,7 +50,8 @@ export function jsdom_enable() {
39
50
  }
40
51
 
41
52
  /// 禁用 jsdom 环境
42
- export function jsdom_disable() {
53
+ function jsdom_disable() {
54
+ if (disable_disable_flag) return
43
55
  if (!dom) return // console.error("jsdom_disable failed: please run jsdom_init first.") // 允许客户端中运行,不使用jsdom
44
56
  global.window = undefined
45
57
  global.history = undefined
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "markdown-it-any-block",
3
- "version": "3.3.8",
3
+ "version": "3.4.4-beta",
4
4
  "description": "You can flexibility to create a 'Block' by many means. It also provides many useful features, like `list to table`. (obsidian/markdown-it/vuepress plugin/app)",
5
5
  "types": "@types/index_mdit.d.ts",
6
6
  "type": "module",