@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.
- package/dist/index.js +114 -139
- 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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
14
|
-
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
};
|
|
145
|
-
});
|
|
115
|
+
return definePlugin((_editor) => {
|
|
116
|
+
return {
|
|
117
|
+
name: "gaoding",
|
|
118
|
+
loaders: [clipboardLoader()]
|
|
119
|
+
};
|
|
120
|
+
});
|
|
146
121
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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.
|
|
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.
|
|
48
|
+
"mce": "0.17.12"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"mce": "^0"
|