mce 0.15.13 → 0.15.15

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 CHANGED
@@ -1,4 +1,4 @@
1
- import { Node as Node$1, Element2D, Timeline, Engine, Camera2D, DrawboardEffect, Aabb2D, IN_BROWSER, clamp, assets, TimelineNode, Transform2D, Obb2D, render, Vector2 as Vector2$1, customNodes, Animation, IN_MAC_OS } from "modern-canvas";
1
+ import { Node as Node$1, Element2D, Timeline, Engine, Camera2D, DrawboardEffect, Aabb2D, IN_BROWSER, clamp, assets, TimelineNode, Video2D, Transform2D, Obb2D, render, Vector2 as Vector2$1, customNodes, Animation, IN_MAC_OS } from "modern-canvas";
2
2
  import { reactive, computed, watch, markRaw, isReactive, ref, warn, shallowRef, onBeforeUnmount, defineComponent, createElementBlock, createCommentVNode, unref, openBlock, normalizeStyle, toDisplayString, createVNode, useAttrs, createBlock, resolveDynamicComponent, normalizeClass, mergeProps, createElementVNode, inject, toValue, getCurrentInstance, provide, useId, readonly, toRef, onMounted, onDeactivated, onActivated, onScopeDispose, useModel, useTemplateRef, withDirectives, vShow, vModelText, nextTick, Fragment, renderList, renderSlot, mergeModels, resolveComponent, withModifiers, withCtx, Teleport, createTextVNode, createSlots, normalizeProps, guardReactiveProps, onBeforeMount, h, isRef, useSlots } from "vue";
3
3
  import { useFileDialog, useEventListener, isClient, onClickOutside, useDebounceFn, useResizeObserver as useResizeObserver$1, useLocalStorage, useImage } from "@vueuse/core";
4
4
  import { getObjectValueByPath, setObjectValueByPath, Observable, Reactivable, idGenerator, property, normalizeTextContent, normalizeCRLF, isEqualObject } from "modern-idoc";
@@ -1756,9 +1756,15 @@ const _1_timeline = defineMixin((editor) => {
1756
1756
  timeline.value.currentTime = clamp(val, startTime2, endTime2);
1757
1757
  }
1758
1758
  });
1759
- const startTime = computed(() => timeline.value.startTime);
1760
- const endTime = computed(() => timeline.value.endTime);
1761
- const getTimeRange = (node) => {
1759
+ const startTime = computed({
1760
+ get: () => timeline.value.startTime,
1761
+ set: (val) => timeline.value.startTime = val
1762
+ });
1763
+ const endTime = computed({
1764
+ get: () => timeline.value.endTime,
1765
+ set: (val) => timeline.value.endTime = val
1766
+ });
1767
+ const getTimeRange = (node = root.value) => {
1762
1768
  const range = { startTime: 0, endTime: 0 };
1763
1769
  function handle(node2) {
1764
1770
  if (node2 instanceof TimelineNode) {
@@ -1779,6 +1785,11 @@ const _1_timeline = defineMixin((editor) => {
1779
1785
  range.endTime = Math.max(range.endTime, node2.globalStartTime + node2.outline.animatedTexture.duration);
1780
1786
  }
1781
1787
  }
1788
+ if (node2 instanceof Video2D) {
1789
+ if (node2.texture) {
1790
+ range.endTime = Math.max(range.endTime, node2.globalStartTime + node2.videoDuration);
1791
+ }
1792
+ }
1782
1793
  return false;
1783
1794
  }
1784
1795
  const nodes = Array.isArray(node) ? node : [node];
@@ -1797,6 +1808,10 @@ const _1_timeline = defineMixin((editor) => {
1797
1808
  on
1798
1809
  } = editor;
1799
1810
  async function updateEndTime() {
1811
+ console.log("updateEndTime");
1812
+ await renderEngine.value.nextTick();
1813
+ await renderEngine.value.nextTick();
1814
+ await renderEngine.value.nextTick();
1800
1815
  await renderEngine.value.nextTick();
1801
1816
  timeline.value.endTime = root.value ? getTimeRange(root.value).endTime : 0;
1802
1817
  }
@@ -2247,7 +2262,8 @@ const _4_1_text = defineMixin((editor) => {
2247
2262
  isElement,
2248
2263
  config,
2249
2264
  elementSelection,
2250
- textSelection
2265
+ textSelection,
2266
+ fonts
2251
2267
  } = editor;
2252
2268
  const element = computed(() => elementSelection.value[0]);
2253
2269
  const hasTextSelectionRange = computed(() => {
@@ -2279,6 +2295,7 @@ const _4_1_text = defineMixin((editor) => {
2279
2295
  return char2.content;
2280
2296
  }).join("");
2281
2297
  const { boundingBox } = measureText({
2298
+ fonts,
2282
2299
  style: {
2283
2300
  ...element3.style.toJSON(),
2284
2301
  width: "auto"
@@ -2350,6 +2367,7 @@ const _4_1_text = defineMixin((editor) => {
2350
2367
  break;
2351
2368
  }
2352
2369
  const { boundingBox } = measureText({
2370
+ fonts,
2353
2371
  style,
2354
2372
  content: element3.text.content
2355
2373
  });
@@ -15113,6 +15131,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
15113
15131
  return false;
15114
15132
  }
15115
15133
  if (!element.text.isValid()) {
15134
+ element.style.textAlign = "center";
15116
15135
  element.text.setContent(" ");
15117
15136
  }
15118
15137
  element.text.update();
@@ -15122,13 +15141,16 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
15122
15141
  await nextTick();
15123
15142
  if (editor.pointerDown(e)) {
15124
15143
  editor.selectAll();
15125
- editor._updateSelectionByDom();
15126
15144
  return true;
15127
15145
  }
15128
15146
  return false;
15129
15147
  }
15130
- onBeforeMount(() => registerCommand({ command: "startTyping", handle: startTyping }));
15131
- onBeforeUnmount(() => unregisterCommand("startTyping"));
15148
+ onBeforeMount(() => {
15149
+ registerCommand({ command: "startTyping", handle: startTyping });
15150
+ });
15151
+ onBeforeUnmount(() => {
15152
+ unregisterCommand("startTyping");
15153
+ });
15132
15154
  __expose({
15133
15155
  textEditor
15134
15156
  });
@@ -1,13 +1,13 @@
1
1
  import type { Node } from 'modern-canvas';
2
- import type { ComputedRef, Ref, WritableComputedRef } from 'vue';
2
+ import type { Ref, WritableComputedRef } from 'vue';
3
3
  declare global {
4
4
  namespace Mce {
5
5
  interface Editor {
6
6
  msPerPx: Ref<number>;
7
7
  currentTime: WritableComputedRef<number>;
8
- startTime: ComputedRef<number>;
9
- endTime: ComputedRef<number>;
10
- getTimeRange: (node: Node | Node[]) => {
8
+ startTime: WritableComputedRef<number>;
9
+ endTime: WritableComputedRef<number>;
10
+ getTimeRange: (node?: Node | Node[]) => {
11
11
  startTime: number;
12
12
  endTime: number;
13
13
  };
@@ -5,7 +5,7 @@ declare global {
5
5
  interface Config extends Record<keyof Panels, boolean> {
6
6
  }
7
7
  interface Commands {
8
- panel: <T extends keyof Panels>(panel: T, ...args: Panels[T]) => Promise<boolean>;
8
+ panels: <T extends keyof Panels>(panel: T, ...args: Panels[T]) => Promise<boolean>;
9
9
  }
10
10
  }
11
11
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mce",
3
3
  "type": "module",
4
- "version": "0.15.13",
4
+ "version": "0.15.15",
5
5
  "description": "The headless canvas editor framework. only the ESM.",
6
6
  "author": "wxm",
7
7
  "license": "MIT",
@@ -61,11 +61,11 @@
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.28",
64
+ "modern-canvas": "^0.14.32",
65
65
  "modern-font": "^0.4.4",
66
66
  "modern-idoc": "^0.10.8",
67
- "modern-text": "^1.10.7",
68
- "yjs": "^13.6.28"
67
+ "modern-text": "^1.10.15",
68
+ "yjs": "^13.6.29"
69
69
  },
70
70
  "peerDependencies": {
71
71
  "lottie-web": "^5",
@@ -94,7 +94,7 @@
94
94
  "@vitejs/plugin-vue": "^6.0.3",
95
95
  "jiti": "^2.6.1",
96
96
  "modern-gif": "^2.0.4",
97
- "sass-embedded": "^1.97.1"
97
+ "sass-embedded": "^1.97.2"
98
98
  },
99
99
  "scripts": {
100
100
  "build:code": "vite build",