mce 0.15.7 → 0.15.8
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/composables/layer.d.ts +1 -3
- package/dist/index.css +16 -8
- package/dist/index.js +42 -51
- package/dist/plugins/rotate.d.ts +10 -0
- package/dist/typed-plugins.d.ts +1 -0
- package/package.json +3 -3
|
@@ -8,7 +8,6 @@ export interface LayerItem {
|
|
|
8
8
|
}
|
|
9
9
|
export interface LayerProvide {
|
|
10
10
|
selecting: Ref<boolean>;
|
|
11
|
-
sortedSelection: Ref<Node[]>;
|
|
12
11
|
register: (vm: ComponentInternalInstance, item: LayerItem) => void;
|
|
13
12
|
unregister: (id: string) => void;
|
|
14
13
|
onMousedown?: (event: MouseEvent, id: string) => void;
|
|
@@ -19,7 +18,7 @@ export declare const MceLayerKey: InjectionKey<LayerProvide>;
|
|
|
19
18
|
export declare const MceLayerItemKey: InjectionKey<{
|
|
20
19
|
id: string;
|
|
21
20
|
}>;
|
|
22
|
-
export declare function createLayer(
|
|
21
|
+
export declare function createLayer(): {
|
|
23
22
|
selecting: Ref<boolean, boolean>;
|
|
24
23
|
openedItems: import("vue").Reactive<Map<string, Ref<boolean, boolean>>>;
|
|
25
24
|
domItems: import("vue").Reactive<Map<string, Ref<HTMLElement | undefined, HTMLElement | undefined>>>;
|
|
@@ -30,7 +29,6 @@ export declare function useLayerItem(options: Omit<LayerItem, 'id'>): {
|
|
|
30
29
|
dropping: import("vue").ComputedRef<boolean>;
|
|
31
30
|
onMousedown: (e: MouseEvent) => void | undefined;
|
|
32
31
|
selecting: Ref<boolean>;
|
|
33
|
-
sortedSelection: Ref<Node[]>;
|
|
34
32
|
register: (vm: ComponentInternalInstance, item: LayerItem) => void;
|
|
35
33
|
unregister: (id: string) => void;
|
|
36
34
|
dragging: Ref<boolean>;
|
package/dist/index.css
CHANGED
|
@@ -134,7 +134,6 @@
|
|
|
134
134
|
border-radius: inherit;
|
|
135
135
|
}
|
|
136
136
|
.mce-layer--root {
|
|
137
|
-
margin-bottom: 4px;
|
|
138
137
|
font-weight: bold;
|
|
139
138
|
}
|
|
140
139
|
.mce-layer--root .mce-layer__thumbnail {
|
|
@@ -148,12 +147,12 @@
|
|
|
148
147
|
bottom: 0;
|
|
149
148
|
border-radius: 0;
|
|
150
149
|
}
|
|
151
|
-
.mce-layer--
|
|
150
|
+
.mce-layer--active:not(.mce-layer--active + .mce-layer--active) .mce-layer__underlay {
|
|
152
151
|
border-top-left-radius: 4px;
|
|
153
152
|
border-top-right-radius: 4px;
|
|
154
153
|
top: 4px;
|
|
155
154
|
}
|
|
156
|
-
.mce-layer--
|
|
155
|
+
.mce-layer--active:not(:has(+ .mce-layer--active)) .mce-layer__underlay {
|
|
157
156
|
border-bottom-left-radius: 4px;
|
|
158
157
|
border-bottom-right-radius: 4px;
|
|
159
158
|
bottom: 4px;
|
|
@@ -225,17 +224,23 @@
|
|
|
225
224
|
flex: none;
|
|
226
225
|
display: flex;
|
|
227
226
|
align-items: center;
|
|
228
|
-
background-color: var(--overlay-color, transparent);
|
|
229
|
-
backdrop-filter: blur(8px);
|
|
230
227
|
border-radius: 4px;
|
|
231
|
-
}
|
|
232
|
-
.mce-layer__action--hide {
|
|
233
228
|
background-color: transparent;
|
|
234
229
|
backdrop-filter: none;
|
|
235
230
|
}
|
|
236
|
-
.mce-layer__action
|
|
231
|
+
.mce-layer__action .mce-layer__btn {
|
|
237
232
|
opacity: 0;
|
|
238
233
|
}
|
|
234
|
+
.mce-layer__action--hover .mce-layer__btn {
|
|
235
|
+
opacity: 1;
|
|
236
|
+
}
|
|
237
|
+
.mce-layer__action--show {
|
|
238
|
+
background-color: var(--overlay-color, transparent);
|
|
239
|
+
backdrop-filter: blur(8px);
|
|
240
|
+
}
|
|
241
|
+
.mce-layer__btn--show {
|
|
242
|
+
opacity: 1 !important;
|
|
243
|
+
}
|
|
239
244
|
.mce-layer__btn + .mce-layer__btn {
|
|
240
245
|
margin-left: -4px;
|
|
241
246
|
}.mce-layers {
|
|
@@ -259,6 +264,9 @@
|
|
|
259
264
|
}
|
|
260
265
|
.mce-layers:hover .mce-layer:not(.mce-layer--root) .mce-layer__prepend {
|
|
261
266
|
opacity: 1;
|
|
267
|
+
}
|
|
268
|
+
.mce-layers .mce-layer {
|
|
269
|
+
scroll-margin: 8px;
|
|
262
270
|
}.mce-made-with {
|
|
263
271
|
pointer-events: auto !important;
|
|
264
272
|
position: absolute;
|
package/dist/index.js
CHANGED
|
@@ -3800,7 +3800,7 @@ function useIcon(props) {
|
|
|
3800
3800
|
}
|
|
3801
3801
|
const MceLayerKey = /* @__PURE__ */ Symbol.for("mce:layer");
|
|
3802
3802
|
const MceLayerItemKey = /* @__PURE__ */ Symbol.for("mce:layer-item");
|
|
3803
|
-
function createLayer(
|
|
3803
|
+
function createLayer() {
|
|
3804
3804
|
const registered = ref([]);
|
|
3805
3805
|
const nodeItems = /* @__PURE__ */ new Map();
|
|
3806
3806
|
const openedItems = reactive(/* @__PURE__ */ new Map());
|
|
@@ -3819,7 +3819,6 @@ function createLayer(options) {
|
|
|
3819
3819
|
return id;
|
|
3820
3820
|
}
|
|
3821
3821
|
provide(MceLayerKey, {
|
|
3822
|
-
...options,
|
|
3823
3822
|
selecting,
|
|
3824
3823
|
dragging,
|
|
3825
3824
|
droppingItemId,
|
|
@@ -5093,7 +5092,6 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|
|
5093
5092
|
const dom = ref();
|
|
5094
5093
|
const {
|
|
5095
5094
|
selecting,
|
|
5096
|
-
sortedSelection,
|
|
5097
5095
|
dragging,
|
|
5098
5096
|
dropping,
|
|
5099
5097
|
onMousedown,
|
|
@@ -5103,17 +5101,6 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|
|
5103
5101
|
node: computed(() => props.node),
|
|
5104
5102
|
dom: computed(() => dom.value)
|
|
5105
5103
|
});
|
|
5106
|
-
const isFrist = computed(() => sortedSelection.value[0]?.equal(props.node));
|
|
5107
|
-
const isLast = computed(() => {
|
|
5108
|
-
const last = sortedSelection.value[sortedSelection.value.length - 1];
|
|
5109
|
-
if (last) {
|
|
5110
|
-
if (last.equal(props.node)) {
|
|
5111
|
-
if (!opened.value || !props.node?.children.length)
|
|
5112
|
-
return true;
|
|
5113
|
-
} else if (last.equal(props.node?.parent)) ;
|
|
5114
|
-
}
|
|
5115
|
-
return false;
|
|
5116
|
-
});
|
|
5117
5104
|
const isActive = computed(() => selection.value.some((v) => v.equal(props.node)));
|
|
5118
5105
|
const children = computed(() => props.node.children);
|
|
5119
5106
|
const childrenLength = computed(() => children.value.length);
|
|
@@ -5160,6 +5147,9 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|
|
5160
5147
|
opened.value = !opened.value;
|
|
5161
5148
|
}
|
|
5162
5149
|
function onMousedownContent(e) {
|
|
5150
|
+
if (e.button === 2) {
|
|
5151
|
+
return;
|
|
5152
|
+
}
|
|
5163
5153
|
selecting.value = true;
|
|
5164
5154
|
if (e.shiftKey) {
|
|
5165
5155
|
const _nodes = [
|
|
@@ -5257,8 +5247,6 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|
|
5257
5247
|
class: normalizeClass(["mce-layer", [
|
|
5258
5248
|
props.root && "mce-layer--root",
|
|
5259
5249
|
(__props.active || isActive.value) && "mce-layer--active",
|
|
5260
|
-
isFrist.value && "mce-layer--first",
|
|
5261
|
-
isLast.value && "mce-layer--last",
|
|
5262
5250
|
opened.value && "mce-layer--open",
|
|
5263
5251
|
isHoverElement.value && "mce-layer--hover",
|
|
5264
5252
|
unref(dropping) && "mce-layer--dropping"
|
|
@@ -5272,8 +5260,8 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|
|
5272
5260
|
onMouseleave,
|
|
5273
5261
|
onContextmenu
|
|
5274
5262
|
}, [
|
|
5275
|
-
_cache[
|
|
5276
|
-
_cache[
|
|
5263
|
+
_cache[4] || (_cache[4] = createElementVNode("span", { class: "mce-layer__underlay" }, null, -1)),
|
|
5264
|
+
_cache[5] || (_cache[5] = createElementVNode("span", { class: "mce-layer__overlay" }, null, -1)),
|
|
5277
5265
|
createElementVNode("div", _hoisted_2$c, [
|
|
5278
5266
|
createElementVNode("div", _hoisted_3$b, [
|
|
5279
5267
|
childrenLength.value ? (openBlock(), createBlock(unref(_sfc_main$C), {
|
|
@@ -5300,6 +5288,9 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|
|
5300
5288
|
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => editValue.value = $event),
|
|
5301
5289
|
type: "text",
|
|
5302
5290
|
class: "mce-layer__input",
|
|
5291
|
+
spellcheck: "false",
|
|
5292
|
+
autocapitalize: "off",
|
|
5293
|
+
autocorrect: "off",
|
|
5303
5294
|
autofocus: "",
|
|
5304
5295
|
onBlur: onInputBlur
|
|
5305
5296
|
}, null, 544), [
|
|
@@ -5312,26 +5303,17 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|
|
5312
5303
|
], 32),
|
|
5313
5304
|
createElementVNode("div", {
|
|
5314
5305
|
class: normalizeClass(["mce-layer__action", {
|
|
5315
|
-
"mce-layer__action--
|
|
5306
|
+
"mce-layer__action--hover": hovering.value,
|
|
5307
|
+
"mce-layer__action--show": hovering.value || unref(isLock)(props.node) || !unref(isVisible)(props.node)
|
|
5316
5308
|
}])
|
|
5317
5309
|
}, [
|
|
5318
|
-
props.root ? (openBlock(),
|
|
5319
|
-
key: 0,
|
|
5320
|
-
icon: "",
|
|
5321
|
-
class: "mce-layer__btn",
|
|
5322
|
-
onClick: _cache[2] || (_cache[2] = ($event) => unref(setLock)(props.node, !unref(isLock)(props.node)))
|
|
5323
|
-
}, {
|
|
5324
|
-
default: withCtx(() => [
|
|
5325
|
-
createVNode(unref(_sfc_main$C), {
|
|
5326
|
-
icon: unref(isLock)(props.node) ? "$lock" : "$unlock"
|
|
5327
|
-
}, null, 8, ["icon"])
|
|
5328
|
-
]),
|
|
5329
|
-
_: 1
|
|
5330
|
-
})) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
5310
|
+
props.root ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
5331
5311
|
createVNode(_sfc_main$y, {
|
|
5332
5312
|
icon: "",
|
|
5333
|
-
class: "mce-layer__btn",
|
|
5334
|
-
|
|
5313
|
+
class: normalizeClass(["mce-layer__btn", {
|
|
5314
|
+
"mce-layer__btn--show": unref(isLock)(props.node)
|
|
5315
|
+
}]),
|
|
5316
|
+
onClick: _cache[2] || (_cache[2] = withModifiers(($event) => unref(setLock)(props.node, !unref(isLock)(props.node)), ["prevent", "stop"]))
|
|
5335
5317
|
}, {
|
|
5336
5318
|
default: withCtx(() => [
|
|
5337
5319
|
createVNode(unref(_sfc_main$C), {
|
|
@@ -5339,11 +5321,13 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|
|
5339
5321
|
}, null, 8, ["icon"])
|
|
5340
5322
|
]),
|
|
5341
5323
|
_: 1
|
|
5342
|
-
}),
|
|
5324
|
+
}, 8, ["class"]),
|
|
5343
5325
|
createVNode(_sfc_main$y, {
|
|
5344
5326
|
icon: "",
|
|
5345
|
-
class: "mce-layer__btn",
|
|
5346
|
-
|
|
5327
|
+
class: normalizeClass(["mce-layer__btn", {
|
|
5328
|
+
"mce-layer__btn--show": !unref(isVisible)(props.node)
|
|
5329
|
+
}]),
|
|
5330
|
+
onClick: _cache[3] || (_cache[3] = withModifiers(($event) => unref(setVisible)(props.node, !unref(isVisible)(props.node)), ["prevent", "stop"]))
|
|
5347
5331
|
}, {
|
|
5348
5332
|
default: withCtx(() => [
|
|
5349
5333
|
createVNode(unref(_sfc_main$C), {
|
|
@@ -5351,7 +5335,7 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|
|
5351
5335
|
}, null, 8, ["icon"])
|
|
5352
5336
|
]),
|
|
5353
5337
|
_: 1
|
|
5354
|
-
})
|
|
5338
|
+
}, 8, ["class"])
|
|
5355
5339
|
], 64))
|
|
5356
5340
|
], 2)
|
|
5357
5341
|
])
|
|
@@ -5376,25 +5360,14 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
|
|
|
5376
5360
|
const {
|
|
5377
5361
|
root,
|
|
5378
5362
|
selection,
|
|
5379
|
-
state
|
|
5380
|
-
nodeIndexMap
|
|
5363
|
+
state
|
|
5381
5364
|
} = useEditor();
|
|
5382
|
-
const sortedSelection = computed(() => {
|
|
5383
|
-
return selection.value.map((node) => {
|
|
5384
|
-
return {
|
|
5385
|
-
node,
|
|
5386
|
-
index: nodeIndexMap.get(node.id) ?? 0
|
|
5387
|
-
};
|
|
5388
|
-
}).sort((a, b) => a.index - b.index).map((v) => v.node);
|
|
5389
|
-
});
|
|
5390
5365
|
const {
|
|
5391
5366
|
selecting,
|
|
5392
5367
|
openedItems,
|
|
5393
5368
|
domItems,
|
|
5394
5369
|
getIdByNode
|
|
5395
|
-
} = createLayer(
|
|
5396
|
-
sortedSelection
|
|
5397
|
-
});
|
|
5370
|
+
} = createLayer();
|
|
5398
5371
|
watch(selection, (selection2) => {
|
|
5399
5372
|
if (state.value === "selecting" || selecting.value) {
|
|
5400
5373
|
return;
|
|
@@ -10485,6 +10458,23 @@ const _pen = definePlugin((editor) => {
|
|
|
10485
10458
|
]
|
|
10486
10459
|
};
|
|
10487
10460
|
});
|
|
10461
|
+
const _rotate = definePlugin((editor) => {
|
|
10462
|
+
const {
|
|
10463
|
+
elementSelection
|
|
10464
|
+
} = editor;
|
|
10465
|
+
function rotate(deg) {
|
|
10466
|
+
elementSelection.value.forEach((el) => {
|
|
10467
|
+
el.style.rotate += deg;
|
|
10468
|
+
});
|
|
10469
|
+
}
|
|
10470
|
+
return {
|
|
10471
|
+
name: "mce:rotate",
|
|
10472
|
+
commands: [
|
|
10473
|
+
{ command: "rotate", handle: rotate },
|
|
10474
|
+
{ command: "rotate90", handle: () => rotate(90) }
|
|
10475
|
+
]
|
|
10476
|
+
};
|
|
10477
|
+
});
|
|
10488
10478
|
const _hoisted_1$g = {
|
|
10489
10479
|
key: 0,
|
|
10490
10480
|
class: "mce-tooltip__arrow"
|
|
@@ -13588,6 +13578,7 @@ const plugins = [
|
|
|
13588
13578
|
_open,
|
|
13589
13579
|
_panels,
|
|
13590
13580
|
_pen,
|
|
13581
|
+
_rotate,
|
|
13591
13582
|
_ruler,
|
|
13592
13583
|
_saveAs,
|
|
13593
13584
|
_scroll,
|
package/dist/typed-plugins.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mce",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.15.
|
|
4
|
+
"version": "0.15.8",
|
|
5
5
|
"description": "The headless canvas editor framework. only the ESM.",
|
|
6
6
|
"author": "wxm",
|
|
7
7
|
"license": "MIT",
|
|
@@ -61,10 +61,10 @@
|
|
|
61
61
|
"diff": "^8.0.2",
|
|
62
62
|
"file-saver": "^2.0.5",
|
|
63
63
|
"lodash-es": "^4.17.22",
|
|
64
|
-
"modern-canvas": "^0.14.
|
|
64
|
+
"modern-canvas": "^0.14.23",
|
|
65
65
|
"modern-font": "^0.4.4",
|
|
66
66
|
"modern-idoc": "^0.10.8",
|
|
67
|
-
"modern-text": "^1.10.
|
|
67
|
+
"modern-text": "^1.10.7",
|
|
68
68
|
"yjs": "^13.6.28"
|
|
69
69
|
},
|
|
70
70
|
"peerDependencies": {
|