erl-mathtextx-editor 0.1.5 → 0.1.7

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.
@@ -1,7 +1,7 @@
1
1
  import { jsx as e, jsxs as t, Fragment as Y } from "react/jsx-runtime";
2
2
  import re, { useRef as z, useState as M, useEffect as $, useCallback as b, useMemo as fe, lazy as de, Suspense as me, useId as Pa } from "react";
3
3
  import { N as Xe, a as Ue, R as Re, m as Ce, E as Ye, T as Sa, A as La, b as Da, c as Ba, d as za, U as Ia, S as Ea, e as Ra, f as Va, C as Ka, g as Fa, h as qa, i as Oa, j as $a, k as Ga, F as Wa, l as ja, H as Xa, L as Ua, I as Ya, P as Ja, n as Qa, u as Za, o as et } from "./tiptap-Bc1mIOtx.js";
4
- import "./ContentViewer-COGXSiwX.js";
4
+ import "./ContentViewer-CWZ30KYR.js";
5
5
  function Qe(l) {
6
6
  const a = l.closest(".mtx-content");
7
7
  if (!a)
@@ -2479,44 +2479,51 @@ const xt = re.memo(function({
2479
2479
  }, [n]);
2480
2480
  return !a || !n ? null : /* @__PURE__ */ t(Y, { children: [
2481
2481
  /* @__PURE__ */ e("button", { type: "button", className: "mtx-table-menu-overlay", onClick: c, "aria-label": "Close image menu" }),
2482
- /* @__PURE__ */ e("div", { className: "mtx-table-menu-dropdown", style: { left: p.x, top: p.y }, children: /* @__PURE__ */ t("div", { className: "mtx-table-menu", onClick: (h) => h.stopPropagation(), children: [
2483
- /* @__PURE__ */ t("div", { className: "mtx-table-menu-group", children: [
2484
- /* @__PURE__ */ e("div", { className: "mtx-table-menu-label", children: "Text Wrapping" }),
2485
- /* @__PURE__ */ t("button", { className: `mtx-table-menu-item ${i === "left" ? "is-active" : ""}`, onClick: () => g(() => r("left")), children: [
2486
- /* @__PURE__ */ e("span", { className: "mtx-table-menu-icon", children: "◧" }),
2487
- /* @__PURE__ */ e("span", { children: "Wrap Left" })
2488
- ] }),
2489
- /* @__PURE__ */ t("button", { className: `mtx-table-menu-item ${i === "center" ? "is-active" : ""}`, onClick: () => g(() => r("center")), children: [
2490
- /* @__PURE__ */ e("span", { className: "mtx-table-menu-icon", children: "" }),
2491
- /* @__PURE__ */ e("span", { children: "Wrap Center" })
2492
- ] }),
2493
- /* @__PURE__ */ t("button", { className: `mtx-table-menu-item ${i === "right" ? "is-active" : ""}`, onClick: () => g(() => r("right")), children: [
2494
- /* @__PURE__ */ e("span", { className: "mtx-table-menu-icon", children: "" }),
2495
- /* @__PURE__ */ e("span", { children: "Wrap Right" })
2496
- ] }),
2497
- /* @__PURE__ */ t("button", { className: `mtx-table-menu-item ${i === "full" ? "is-active" : ""}`, onClick: () => g(() => r("full")), children: [
2498
- /* @__PURE__ */ e("span", { className: "mtx-table-menu-icon", children: "" }),
2499
- /* @__PURE__ */ e("span", { children: "Full Width" })
2500
- ] })
2501
- ] }),
2502
- w && /* @__PURE__ */ t("div", { className: "mtx-table-menu-group", children: [
2503
- /* @__PURE__ */ e("div", { className: "mtx-table-menu-label", children: "Image" }),
2504
- m && /* @__PURE__ */ t("button", { className: "mtx-table-menu-item", onClick: () => g(m), disabled: !o, children: [
2505
- /* @__PURE__ */ e("span", { className: "mtx-table-menu-icon", children: "↺" }),
2506
- /* @__PURE__ */ e("span", { children: "Reset Position" })
2507
- ] }),
2508
- f && /* @__PURE__ */ t("button", { className: "mtx-table-menu-item", onClick: () => g(f), children: [
2509
- /* @__PURE__ */ e("span", { className: "mtx-table-menu-icon", children: "◎" }),
2510
- /* @__PURE__ */ e("span", { children: "Center & Reset" })
2511
- ] }),
2512
- /* @__PURE__ */ t("button", { className: "mtx-table-menu-item", onClick: () => g(w), children: [
2513
- /* @__PURE__ */ e("span", { className: "mtx-table-menu-icon", children: "✎" }),
2514
- /* @__PURE__ */ e("span", { children: "Edit Image" })
2482
+ /* @__PURE__ */ e(
2483
+ "div",
2484
+ {
2485
+ className: "mtx-table-menu-dropdown",
2486
+ style: { "--mtx-dropdown-x": `${p.x}px`, "--mtx-dropdown-y": `${p.y}px` },
2487
+ children: /* @__PURE__ */ t("div", { className: "mtx-table-menu", onClick: (h) => h.stopPropagation(), children: [
2488
+ /* @__PURE__ */ t("div", { className: "mtx-table-menu-group", children: [
2489
+ /* @__PURE__ */ e("div", { className: "mtx-table-menu-label", children: "Text Wrapping" }),
2490
+ /* @__PURE__ */ t("button", { className: `mtx-table-menu-item ${i === "left" ? "is-active" : ""}`, onClick: () => g(() => r("left")), children: [
2491
+ /* @__PURE__ */ e("span", { className: "mtx-table-menu-icon", children: "◧" }),
2492
+ /* @__PURE__ */ e("span", { children: "Wrap Left" })
2493
+ ] }),
2494
+ /* @__PURE__ */ t("button", { className: `mtx-table-menu-item ${i === "center" ? "is-active" : ""}`, onClick: () => g(() => r("center")), children: [
2495
+ /* @__PURE__ */ e("span", { className: "mtx-table-menu-icon", children: "▣" }),
2496
+ /* @__PURE__ */ e("span", { children: "Wrap Center" })
2497
+ ] }),
2498
+ /* @__PURE__ */ t("button", { className: `mtx-table-menu-item ${i === "right" ? "is-active" : ""}`, onClick: () => g(() => r("right")), children: [
2499
+ /* @__PURE__ */ e("span", { className: "mtx-table-menu-icon", children: "◨" }),
2500
+ /* @__PURE__ */ e("span", { children: "Wrap Right" })
2501
+ ] }),
2502
+ /* @__PURE__ */ t("button", { className: `mtx-table-menu-item ${i === "full" ? "is-active" : ""}`, onClick: () => g(() => r("full")), children: [
2503
+ /* @__PURE__ */ e("span", { className: "mtx-table-menu-icon", children: "" }),
2504
+ /* @__PURE__ */ e("span", { children: "Full Width" })
2505
+ ] })
2506
+ ] }),
2507
+ w && /* @__PURE__ */ t("div", { className: "mtx-table-menu-group", children: [
2508
+ /* @__PURE__ */ e("div", { className: "mtx-table-menu-label", children: "Image" }),
2509
+ m && /* @__PURE__ */ t("button", { className: "mtx-table-menu-item", onClick: () => g(m), disabled: !o, children: [
2510
+ /* @__PURE__ */ e("span", { className: "mtx-table-menu-icon", children: "↺" }),
2511
+ /* @__PURE__ */ e("span", { children: "Reset Position" })
2512
+ ] }),
2513
+ f && /* @__PURE__ */ t("button", { className: "mtx-table-menu-item", onClick: () => g(f), children: [
2514
+ /* @__PURE__ */ e("span", { className: "mtx-table-menu-icon", children: "◎" }),
2515
+ /* @__PURE__ */ e("span", { children: "Center & Reset" })
2516
+ ] }),
2517
+ /* @__PURE__ */ t("button", { className: "mtx-table-menu-item", onClick: () => g(w), children: [
2518
+ /* @__PURE__ */ e("span", { className: "mtx-table-menu-icon", children: "✎" }),
2519
+ /* @__PURE__ */ e("span", { children: "Edit Image" })
2520
+ ] })
2521
+ ] })
2515
2522
  ] })
2516
- ] })
2517
- ] }) })
2523
+ }
2524
+ )
2518
2525
  ] });
2519
- }), gt = de(() => import("./LinkDialogImpl-BZuaNMx0.js").then((l) => ({ default: l.LinkDialogImpl }))), bt = de(() => import("./InsertTableDialogImpl-BmFE8rOe.js").then((l) => ({ default: l.InsertTableDialogImpl }))), ft = de(() => import("./CellPropertiesDialogImpl-ra6ImDOd.js").then((l) => ({ default: l.CellPropertiesDialogImpl }))), vt = de(() => import("./TableTemplatesDialogImpl-D7cUqz0B.js").then((l) => ({ default: l.TableTemplatesDialogImpl }))), wt = de(() => import("./ImageInsertDialog-CjD1IOEK.js").then((l) => ({ default: l.ImageInsertDialog }))), _ = re.memo(function({ icon: a, label: n, onClick: i, isActive: o, isDisabled: c, className: r }) {
2526
+ }), gt = de(() => import("./LinkDialogImpl-DTHugWZM.js").then((l) => ({ default: l.LinkDialogImpl }))), bt = de(() => import("./InsertTableDialogImpl-DZrLgDKN.js").then((l) => ({ default: l.InsertTableDialogImpl }))), ft = de(() => import("./CellPropertiesDialogImpl-HPT77uxM.js").then((l) => ({ default: l.CellPropertiesDialogImpl }))), vt = de(() => import("./TableTemplatesDialogImpl-D0sFSAKl.js").then((l) => ({ default: l.TableTemplatesDialogImpl }))), wt = de(() => import("./ImageInsertDialog-DzLFhSDK.js").then((l) => ({ default: l.ImageInsertDialog }))), _ = re.memo(function({ icon: a, label: n, onClick: i, isActive: o, isDisabled: c, className: r }) {
2520
2527
  return /* @__PURE__ */ e(
2521
2528
  "button",
2522
2529
  {
@@ -2524,7 +2531,7 @@ const xt = re.memo(function({
2524
2531
  className: `mtx-toolbar-btn ${o ? "is-active" : ""} ${r || ""}`,
2525
2532
  onClick: i,
2526
2533
  disabled: c,
2527
- "data-tooltip": n,
2534
+ title: n,
2528
2535
  "aria-label": n,
2529
2536
  children: a
2530
2537
  }
@@ -4803,7 +4810,7 @@ function Kt({ onInsert: l, onClose: a }) {
4803
4810
  ] })
4804
4811
  ] });
4805
4812
  }
4806
- const Ft = de(() => import("./ImageInsertDialog-CjD1IOEK.js").then((l) => ({ default: l.ImageInsertDialog })));
4813
+ const Ft = de(() => import("./ImageInsertDialog-DzLFhSDK.js").then((l) => ({ default: l.ImageInsertDialog })));
4807
4814
  async function je(l) {
4808
4815
  return new Promise((a, n) => {
4809
4816
  const i = new window.Image();
@@ -5140,19 +5147,19 @@ function dl({
5140
5147
  }
5141
5148
  );
5142
5149
  }
5143
- const Ot = de(() => import("./LinkDialogImpl-BZuaNMx0.js").then((l) => ({ default: l.LinkDialogImpl }))), $t = re.memo(function(a) {
5150
+ const Ot = de(() => import("./LinkDialogImpl-DTHugWZM.js").then((l) => ({ default: l.LinkDialogImpl }))), $t = re.memo(function(a) {
5144
5151
  return /* @__PURE__ */ e(me, { fallback: null, children: /* @__PURE__ */ e(Ot, { ...a }) });
5145
5152
  });
5146
5153
  $t.displayName = "LinkDialog";
5147
- const Gt = de(() => import("./InsertTableDialogImpl-BmFE8rOe.js").then((l) => ({ default: l.InsertTableDialogImpl }))), Wt = re.memo(function(a) {
5154
+ const Gt = de(() => import("./InsertTableDialogImpl-DZrLgDKN.js").then((l) => ({ default: l.InsertTableDialogImpl }))), Wt = re.memo(function(a) {
5148
5155
  return /* @__PURE__ */ e(me, { fallback: null, children: /* @__PURE__ */ e(Gt, { ...a }) });
5149
5156
  });
5150
5157
  Wt.displayName = "InsertTableDialog";
5151
- const jt = de(() => import("./CellPropertiesDialogImpl-ra6ImDOd.js").then((l) => ({ default: l.CellPropertiesDialogImpl }))), Xt = re.memo(function(a) {
5158
+ const jt = de(() => import("./CellPropertiesDialogImpl-HPT77uxM.js").then((l) => ({ default: l.CellPropertiesDialogImpl }))), Xt = re.memo(function(a) {
5152
5159
  return /* @__PURE__ */ e(me, { fallback: null, children: /* @__PURE__ */ e(jt, { ...a }) });
5153
5160
  });
5154
5161
  Xt.displayName = "CellPropertiesDialog";
5155
- const Ut = de(() => import("./TableTemplatesDialogImpl-D7cUqz0B.js").then((l) => ({ default: l.TableTemplatesDialogImpl }))), Yt = re.memo(function(a) {
5162
+ const Ut = de(() => import("./TableTemplatesDialogImpl-D0sFSAKl.js").then((l) => ({ default: l.TableTemplatesDialogImpl }))), Yt = re.memo(function(a) {
5156
5163
  return /* @__PURE__ */ e(me, { fallback: null, children: /* @__PURE__ */ e(Ut, { ...a }) });
5157
5164
  });
5158
5165
  Yt.displayName = "TableTemplatesDialog";
package/dist/viewer.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C as r } from "./ContentViewer-COGXSiwX.js";
1
+ import { C as r } from "./ContentViewer-CWZ30KYR.js";
2
2
  export {
3
3
  r as ContentViewer
4
4
  };
package/package.json CHANGED
@@ -1,133 +1,133 @@
1
- {
2
- "name": "erl-mathtextx-editor",
3
- "version": "0.1.5",
4
- "description": "Visual math editor component for solutest.id — CKEditor replacement with zero-LaTeX approach",
5
- "type": "module",
6
- "main": "./dist/erl-mathtextx-editor.umd.cjs",
7
- "module": "./dist/erl-mathtextx-editor.js",
8
- "types": "./dist/index.d.ts",
9
- "exports": {
10
- ".": {
11
- "import": "./dist/erl-mathtextx-editor.js",
12
- "require": "./dist/erl-mathtextx-editor.umd.cjs",
13
- "types": "./dist/index.d.ts"
14
- },
15
- "./viewer": {
16
- "import": "./dist/viewer.js",
17
- "types": "./dist/viewer.d.ts"
18
- },
19
- "./styles": "./dist/assets/erl-mathtextx-editor.css",
20
- "./viewer/styles": "./dist/viewer-styles.js"
21
- },
22
- "files": [
23
- "dist"
24
- ],
25
- "scripts": {
26
- "dev": "vite",
27
- "build": "tsc && vite build && vite build --config vite.config.umd.ts",
28
- "preview": "vite preview",
29
- "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
30
- "test": "vitest",
31
- "test:run": "vitest run",
32
- "test:coverage": "vitest run --coverage"
33
- },
34
- "peerDependencies": {
35
- "react": "^18.0.0 || ^19.0.0",
36
- "react-dom": "^18.0.0 || ^19.0.0"
37
- },
38
- "dependencies": {
39
- "@tiptap/core": "^2.11.0",
40
- "@tiptap/extension-bold": "^2.11.0",
41
- "@tiptap/extension-bullet-list": "^2.11.0",
42
- "@tiptap/extension-code-block": "^2.11.0",
43
- "@tiptap/extension-color": "^2.27.2",
44
- "@tiptap/extension-document": "^2.11.0",
45
- "@tiptap/extension-dropcursor": "^2.11.0",
46
- "@tiptap/extension-font-family": "^2.27.2",
47
- "@tiptap/extension-gapcursor": "^2.11.0",
48
- "@tiptap/extension-hard-break": "^2.11.0",
49
- "@tiptap/extension-heading": "^2.11.0",
50
- "@tiptap/extension-highlight": "^2.27.2",
51
- "@tiptap/extension-history": "^2.11.0",
52
- "@tiptap/extension-horizontal-rule": "^2.11.0",
53
- "@tiptap/extension-image": "^2.11.0",
54
- "@tiptap/extension-italic": "^2.11.0",
55
- "@tiptap/extension-link": "^2.11.0",
56
- "@tiptap/extension-list-item": "^2.11.0",
57
- "@tiptap/extension-ordered-list": "^2.11.0",
58
- "@tiptap/extension-paragraph": "^2.11.0",
59
- "@tiptap/extension-placeholder": "^2.11.0",
60
- "@tiptap/extension-strike": "^2.11.0",
61
- "@tiptap/extension-subscript": "^2.11.0",
62
- "@tiptap/extension-superscript": "^2.11.0",
63
- "@tiptap/extension-table": "^2.11.0",
64
- "@tiptap/extension-table-cell": "^2.11.0",
65
- "@tiptap/extension-table-header": "^2.11.0",
66
- "@tiptap/extension-table-row": "^2.11.0",
67
- "@tiptap/extension-task-item": "^2.11.0",
68
- "@tiptap/extension-task-list": "^2.11.0",
69
- "@tiptap/extension-text": "^2.11.0",
70
- "@tiptap/extension-text-align": "^2.27.2",
71
- "@tiptap/extension-text-style": "^2.27.2",
72
- "@tiptap/extension-typography": "^2.27.2",
73
- "@tiptap/extension-underline": "^2.11.0",
74
- "@tiptap/pm": "^2.11.0",
75
- "@tiptap/react": "^2.11.0",
76
- "@tiptap/starter-kit": "^2.11.0",
77
- "@weiruo/tiptap-extension-indent": "^2.0.4-1",
78
- "dompurify": "^3.3.1",
79
- "function-plot": "^1.25.3",
80
- "html2canvas": "^1.4.1",
81
- "jspdf": "^4.1.0",
82
- "katex": "^0.16.33",
83
- "mathlive": "^0.101.0"
84
- },
85
- "devDependencies": {
86
- "@eslint/js": "^9.39.2",
87
- "@fullhuman/postcss-purgecss": "^8.0.0",
88
- "@types/dompurify": "^3.0.5",
89
- "@types/react": "^18.2.0",
90
- "@types/react-dom": "^18.2.0",
91
- "@typescript-eslint/eslint-plugin": "^8.56.0",
92
- "@typescript-eslint/parser": "^8.56.0",
93
- "@vitejs/plugin-react": "^4.3.0",
94
- "@vitest/coverage-v8": "^2.1.9",
95
- "eslint": "^9.39.2",
96
- "eslint-plugin-react": "^7.37.5",
97
- "eslint-plugin-react-hooks": "^7.0.1",
98
- "eslint-plugin-react-refresh": "^0.5.0",
99
- "globals": "^17.3.0",
100
- "jsdom": "^24.1.3",
101
- "react": "^18.2.0",
102
- "react-dom": "^18.2.0",
103
- "typescript": "^5.5.0",
104
- "typescript-eslint": "^8.57.0",
105
- "vite": "^5.4.0",
106
- "vite-plugin-css-injected-by-js": "^3.5.0",
107
- "vite-plugin-dts": "^4.0.0",
108
- "vitest": "^2.1.9"
109
- },
110
- "license": "MIT",
111
- "author": "Erlangga Team",
112
- "repository": {
113
- "type": "git",
114
- "url": "git+https://github.com/erlangga/richtext-editor-research.git"
115
- },
116
- "homepage": "https://github.com/erlangga/richtext-editor-research#readme",
117
- "bugs": {
118
- "url": "https://github.com/erlangga/richtext-editor-research/issues"
119
- },
120
- "publishConfig": {
121
- "access": "public",
122
- "registry": "https://registry.npmjs.org/"
123
- },
124
- "keywords": [
125
- "math-editor",
126
- "tiptap",
127
- "mathlive",
128
- "wysiwyg",
129
- "ckeditor-replacement",
130
- "solutest",
131
- "react"
132
- ]
133
- }
1
+ {
2
+ "name": "erl-mathtextx-editor",
3
+ "version": "0.1.7",
4
+ "description": "Visual math editor component for solutest.id — CKEditor replacement with zero-LaTeX approach",
5
+ "type": "module",
6
+ "main": "./dist/erl-mathtextx-editor.umd.cjs",
7
+ "module": "./dist/erl-mathtextx-editor.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/erl-mathtextx-editor.js",
12
+ "require": "./dist/erl-mathtextx-editor.umd.cjs",
13
+ "types": "./dist/index.d.ts"
14
+ },
15
+ "./viewer": {
16
+ "import": "./dist/viewer.js",
17
+ "types": "./dist/viewer.d.ts"
18
+ },
19
+ "./styles": "./dist/assets/erl-mathtextx-editor.css",
20
+ "./viewer/styles": "./dist/viewer-styles.js"
21
+ },
22
+ "files": [
23
+ "dist"
24
+ ],
25
+ "scripts": {
26
+ "dev": "vite",
27
+ "build": "tsc && vite build && vite build --config vite.config.umd.ts",
28
+ "preview": "vite preview",
29
+ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
30
+ "test": "vitest",
31
+ "test:run": "vitest run",
32
+ "test:coverage": "vitest run --coverage"
33
+ },
34
+ "peerDependencies": {
35
+ "react": "^18.0.0 || ^19.0.0",
36
+ "react-dom": "^18.0.0 || ^19.0.0"
37
+ },
38
+ "dependencies": {
39
+ "@tiptap/core": "^2.11.0",
40
+ "@tiptap/extension-bold": "^2.11.0",
41
+ "@tiptap/extension-bullet-list": "^2.11.0",
42
+ "@tiptap/extension-code-block": "^2.11.0",
43
+ "@tiptap/extension-color": "^2.27.2",
44
+ "@tiptap/extension-document": "^2.11.0",
45
+ "@tiptap/extension-dropcursor": "^2.11.0",
46
+ "@tiptap/extension-font-family": "^2.27.2",
47
+ "@tiptap/extension-gapcursor": "^2.11.0",
48
+ "@tiptap/extension-hard-break": "^2.11.0",
49
+ "@tiptap/extension-heading": "^2.11.0",
50
+ "@tiptap/extension-highlight": "^2.27.2",
51
+ "@tiptap/extension-history": "^2.11.0",
52
+ "@tiptap/extension-horizontal-rule": "^2.11.0",
53
+ "@tiptap/extension-image": "^2.11.0",
54
+ "@tiptap/extension-italic": "^2.11.0",
55
+ "@tiptap/extension-link": "^2.11.0",
56
+ "@tiptap/extension-list-item": "^2.11.0",
57
+ "@tiptap/extension-ordered-list": "^2.11.0",
58
+ "@tiptap/extension-paragraph": "^2.11.0",
59
+ "@tiptap/extension-placeholder": "^2.11.0",
60
+ "@tiptap/extension-strike": "^2.11.0",
61
+ "@tiptap/extension-subscript": "^2.11.0",
62
+ "@tiptap/extension-superscript": "^2.11.0",
63
+ "@tiptap/extension-table": "^2.11.0",
64
+ "@tiptap/extension-table-cell": "^2.11.0",
65
+ "@tiptap/extension-table-header": "^2.11.0",
66
+ "@tiptap/extension-table-row": "^2.11.0",
67
+ "@tiptap/extension-task-item": "^2.11.0",
68
+ "@tiptap/extension-task-list": "^2.11.0",
69
+ "@tiptap/extension-text": "^2.11.0",
70
+ "@tiptap/extension-text-align": "^2.27.2",
71
+ "@tiptap/extension-text-style": "^2.27.2",
72
+ "@tiptap/extension-typography": "^2.27.2",
73
+ "@tiptap/extension-underline": "^2.11.0",
74
+ "@tiptap/pm": "^2.11.0",
75
+ "@tiptap/react": "^2.11.0",
76
+ "@tiptap/starter-kit": "^2.11.0",
77
+ "@weiruo/tiptap-extension-indent": "^2.0.4-1",
78
+ "dompurify": "^3.3.1",
79
+ "function-plot": "^1.25.3",
80
+ "html2canvas": "^1.4.1",
81
+ "jspdf": "^4.1.0",
82
+ "katex": "^0.16.33",
83
+ "mathlive": "^0.101.0"
84
+ },
85
+ "devDependencies": {
86
+ "@eslint/js": "^9.39.2",
87
+ "@fullhuman/postcss-purgecss": "^8.0.0",
88
+ "@types/dompurify": "^3.0.5",
89
+ "@types/react": "^18.2.0",
90
+ "@types/react-dom": "^18.2.0",
91
+ "@typescript-eslint/eslint-plugin": "^8.56.0",
92
+ "@typescript-eslint/parser": "^8.56.0",
93
+ "@vitejs/plugin-react": "^4.3.0",
94
+ "@vitest/coverage-v8": "^2.1.9",
95
+ "eslint": "^9.39.2",
96
+ "eslint-plugin-react": "^7.37.5",
97
+ "eslint-plugin-react-hooks": "^7.0.1",
98
+ "eslint-plugin-react-refresh": "^0.5.0",
99
+ "globals": "^17.3.0",
100
+ "jsdom": "^24.1.3",
101
+ "react": "^18.2.0",
102
+ "react-dom": "^18.2.0",
103
+ "typescript": "^5.5.0",
104
+ "typescript-eslint": "^8.57.0",
105
+ "vite": "^5.4.0",
106
+ "vite-plugin-css-injected-by-js": "^3.5.0",
107
+ "vite-plugin-dts": "^4.0.0",
108
+ "vitest": "^2.1.9"
109
+ },
110
+ "license": "MIT",
111
+ "author": "Erlangga Team",
112
+ "repository": {
113
+ "type": "git",
114
+ "url": "git+https://github.com/erlangga/richtext-editor-research.git"
115
+ },
116
+ "homepage": "https://github.com/erlangga/richtext-editor-research#readme",
117
+ "bugs": {
118
+ "url": "https://github.com/erlangga/richtext-editor-research/issues"
119
+ },
120
+ "publishConfig": {
121
+ "access": "public",
122
+ "registry": "https://registry.npmjs.org/"
123
+ },
124
+ "keywords": [
125
+ "math-editor",
126
+ "tiptap",
127
+ "mathlive",
128
+ "wysiwyg",
129
+ "ckeditor-replacement",
130
+ "solutest",
131
+ "react"
132
+ ]
133
+ }