@mce/gaoding 0.17.10 → 0.17.12

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 (2) hide show
  1. package/dist/index.js +114 -139
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,151 +1,126 @@
1
1
  import { definePlugin } from "mce";
2
2
  import { idGenerator } from "modern-idoc";
3
+ //#region src/convert/element.ts
3
4
  function pick(obj, keys) {
4
- const result = {};
5
- for (const key of keys) {
6
- if (key in obj) {
7
- result[key] = obj[key];
8
- }
9
- }
10
- return result;
5
+ const result = {};
6
+ for (const key of keys) if (key in obj) result[key] = obj[key];
7
+ return result;
11
8
  }
12
9
  async function convertElement(el, _parent) {
13
- const { elements, ...raw } = el;
14
- const style = pick(el, [
15
- "left",
16
- "top",
17
- "width",
18
- "height",
19
- "opacity",
20
- "borderRadius",
21
- // text
22
- "color",
23
- "fontFamily",
24
- "fontStyle",
25
- "fontWeight",
26
- "fontSize",
27
- "lineHeight",
28
- "letterSpacing",
29
- "textDecoration",
30
- "writingMode",
31
- "textAlign",
32
- "verticalAlign",
33
- "textIndent"
34
- ]);
35
- const meta = {
36
- raw,
37
- inPptIs: "Shape",
38
- inEditorIs: "Element"
39
- };
40
- if (el.editable === false || el.hidden === true) {
41
- style.visibility = "hidden";
42
- }
43
- if (el.lock === true) {
44
- meta.lock = true;
45
- }
46
- const element = {
47
- id: idGenerator(),
48
- name: el.title,
49
- style,
50
- meta,
51
- children: []
52
- };
53
- switch (el.type) {
54
- case "text":
55
- meta.inCanvasIs = "Element2D";
56
- meta.inPptIs = "Shape";
57
- element.text = {
58
- content: el.content
59
- };
60
- break;
61
- case "image":
62
- meta.inCanvasIs = "Element2D";
63
- meta.inPptIs = "Picture";
64
- meta.lockAspectRatio = true;
65
- element.foreground = {
66
- image: el.url,
67
- fillWithShape: true
68
- };
69
- break;
70
- case "group":
71
- meta.inCanvasIs = "Element2D";
72
- meta.inPptIs = "GroupShape";
73
- element.children.push(
74
- ...await Promise.all(
75
- elements.map(async (child) => {
76
- try {
77
- return await convertElement(child, el);
78
- } catch (e) {
79
- console.warn(e);
80
- return void 0;
81
- }
82
- })
83
- )
84
- );
85
- break;
86
- case "path":
87
- meta.inCanvasIs = "Element2D";
88
- meta.inPptIs = "Picture";
89
- meta.lockAspectRatio = true;
90
- element.foreground = {
91
- image: el.imageUrl,
92
- fillWithShape: true
93
- };
94
- break;
95
- }
96
- return element;
10
+ const { elements, ...raw } = el;
11
+ const style = pick(el, [
12
+ "left",
13
+ "top",
14
+ "width",
15
+ "height",
16
+ "opacity",
17
+ "borderRadius",
18
+ "color",
19
+ "fontFamily",
20
+ "fontStyle",
21
+ "fontWeight",
22
+ "fontSize",
23
+ "lineHeight",
24
+ "letterSpacing",
25
+ "textDecoration",
26
+ "writingMode",
27
+ "textAlign",
28
+ "verticalAlign",
29
+ "textIndent"
30
+ ]);
31
+ const meta = {
32
+ raw,
33
+ inPptIs: "Shape",
34
+ inEditorIs: "Element"
35
+ };
36
+ if (el.editable === false || el.hidden === true) style.visibility = "hidden";
37
+ if (el.lock === true) meta.lock = true;
38
+ const element = {
39
+ id: idGenerator(),
40
+ name: el.title,
41
+ style,
42
+ meta,
43
+ children: []
44
+ };
45
+ switch (el.type) {
46
+ case "text":
47
+ meta.inCanvasIs = "Element2D";
48
+ meta.inPptIs = "Shape";
49
+ element.text = { content: el.content };
50
+ break;
51
+ case "image":
52
+ meta.inCanvasIs = "Element2D";
53
+ meta.inPptIs = "Picture";
54
+ meta.lockAspectRatio = true;
55
+ element.foreground = {
56
+ image: el.url,
57
+ fillWithShape: true
58
+ };
59
+ break;
60
+ case "group":
61
+ meta.inCanvasIs = "Element2D";
62
+ meta.inPptIs = "GroupShape";
63
+ element.children.push(...await Promise.all(elements.map(async (child) => {
64
+ try {
65
+ return await convertElement(child, el);
66
+ } catch (e) {
67
+ console.warn(e);
68
+ return;
69
+ }
70
+ })));
71
+ break;
72
+ case "path":
73
+ meta.inCanvasIs = "Element2D";
74
+ meta.inPptIs = "Picture";
75
+ meta.lockAspectRatio = true;
76
+ element.foreground = {
77
+ image: el.imageUrl,
78
+ fillWithShape: true
79
+ };
80
+ break;
81
+ }
82
+ return element;
97
83
  }
84
+ //#endregion
85
+ //#region src/convert/doc.ts
98
86
  async function convertDoc(doc) {
99
- const { version: _version, elements } = doc;
100
- return (await Promise.all(
101
- elements.map(async (element) => {
102
- try {
103
- return await convertElement(element, void 0);
104
- } catch (e) {
105
- console.warn(e);
106
- return void 0;
107
- }
108
- })
109
- )).filter(Boolean);
87
+ const { version: _version, elements } = doc;
88
+ return (await Promise.all(elements.map(async (element) => {
89
+ try {
90
+ return await convertElement(element, void 0);
91
+ } catch (e) {
92
+ console.warn(e);
93
+ return;
94
+ }
95
+ }))).filter(Boolean);
110
96
  }
97
+ //#endregion
98
+ //#region src/loaders/clipboard.ts
111
99
  function clipboardLoader() {
112
- return {
113
- name: "gaoding-clipboard",
114
- test: (doc) => {
115
- return doc instanceof Document && Boolean(doc.querySelector('span[data-app="editor-next"]'));
116
- },
117
- load: async (doc) => {
118
- const encoded = doc.querySelector('span[data-app="editor-next"]');
119
- if (encoded) {
120
- const doc2 = JSON.parse(
121
- decodeURIComponent(
122
- new TextDecoder("utf-8", { fatal: false }).decode(
123
- new Uint8Array(
124
- atob(
125
- encoded.getAttribute("data-clipboard")?.replace(/\s+/g, "") ?? ""
126
- ).split("").map((c) => c.charCodeAt(0))
127
- )
128
- )
129
- )
130
- );
131
- return await convertDoc(doc2);
132
- }
133
- return [];
134
- }
135
- };
100
+ return {
101
+ name: "gaoding-clipboard",
102
+ test: (doc) => {
103
+ return doc instanceof Document && Boolean(doc.querySelector("span[data-app=\"editor-next\"]"));
104
+ },
105
+ load: async (doc) => {
106
+ const encoded = doc.querySelector("span[data-app=\"editor-next\"]");
107
+ if (encoded) return await convertDoc(JSON.parse(decodeURIComponent(new TextDecoder("utf-8", { fatal: false }).decode(new Uint8Array(atob(encoded.getAttribute("data-clipboard")?.replace(/\s+/g, "") ?? "").split("").map((c) => c.charCodeAt(0)))))));
108
+ return [];
109
+ }
110
+ };
136
111
  }
112
+ //#endregion
113
+ //#region src/plugin.ts
137
114
  function plugin() {
138
- return definePlugin((_editor) => {
139
- return {
140
- name: "gaoding",
141
- loaders: [
142
- clipboardLoader()
143
- ]
144
- };
145
- });
115
+ return definePlugin((_editor) => {
116
+ return {
117
+ name: "gaoding",
118
+ loaders: [clipboardLoader()]
119
+ };
120
+ });
146
121
  }
147
- export {
148
- clipboardLoader,
149
- plugin as default,
150
- plugin
151
- };
122
+ //#endregion
123
+ //#region src/index.ts
124
+ var src_default = plugin;
125
+ //#endregion
126
+ export { clipboardLoader, src_default as default, plugin };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mce/gaoding",
3
3
  "type": "module",
4
- "version": "0.17.10",
4
+ "version": "0.17.12",
5
5
  "description": "Plugin for mce",
6
6
  "author": "wxm",
7
7
  "license": "MIT",
@@ -45,7 +45,7 @@
45
45
  "dist"
46
46
  ],
47
47
  "devDependencies": {
48
- "mce": "0.17.10"
48
+ "mce": "0.17.12"
49
49
  },
50
50
  "peerDependencies": {
51
51
  "mce": "^0"