@meta2d/core 1.0.48 → 1.0.50

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/src/core.d.ts CHANGED
@@ -176,6 +176,8 @@ export declare class Meta2d {
176
176
  translate(x: number, y: number): void;
177
177
  translatePens(pens: Pen[], x: number, y: number): void;
178
178
  getParent(pen: Pen, root?: boolean): Pen;
179
+ getAllChildren(pen: Pen): Pen[];
180
+ getAllFollowers(pen: Pen): Pen[];
179
181
  data(): Meta2dData;
180
182
  copy(pens?: Pen[]): void;
181
183
  cut(pens?: Pen[]): void;
@@ -206,6 +208,10 @@ export declare class Meta2d {
206
208
  updateTimerList: any[];
207
209
  connectNetwork(): void;
208
210
  randomString(e: number): string;
211
+ mockValue(data: any): any;
212
+ dataMock(): void;
213
+ startDataMock(): void;
214
+ stopDataMock(): void;
209
215
  penMock(pen: Pen): void;
210
216
  penNetwork(pen: Pen): void;
211
217
  getDynamicParam(key: string): any;
@@ -242,8 +248,14 @@ export declare class Meta2d {
242
248
  clearRuleLines(): void;
243
249
  private onEvent;
244
250
  private doEvent;
251
+ doDataEvent: (datas: {
252
+ dataId?: string;
253
+ id?: string;
254
+ value: any;
255
+ }[]) => void;
245
256
  initGlobalTriggers(): void;
246
257
  initMessageEvents(): void;
258
+ dataJudegeCondition(data: any, key: string, condition: TriggerCondition): boolean;
247
259
  judgeCondition(pen: Pen, key: string, condition: TriggerCondition): boolean;
248
260
  pushChildren(parent: Pen, children: Pen[]): void;
249
261
  renderPenRaw: typeof renderPenRaw;
package/src/core.js CHANGED
@@ -83,7 +83,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
83
83
  };
84
84
  import { commonAnchors, commonPens, cube } from './diagrams';
85
85
  import { Canvas } from './canvas';
86
- import { calcInView, calcTextDrawRect, calcTextLines, calcTextRect, facePen, formatAttrs, getAllChildren, getFromAnchor, getParent, getToAnchor, getWords, LockState, PenType, renderPenRaw, setElemPosition, connectLine, nearestAnchor, setChildValue, isAncestor, isShowChild, CanvasLayer, validationPlugin, setLifeCycleFunc, } from './pen';
86
+ import { calcInView, calcTextDrawRect, calcTextLines, calcTextRect, facePen, formatAttrs, getAllChildren, getFromAnchor, getParent, getToAnchor, getWords, LockState, PenType, renderPenRaw, setElemPosition, connectLine, nearestAnchor, setChildValue, isAncestor, isShowChild, CanvasLayer, validationPlugin, setLifeCycleFunc, getAllFollowers } from './pen';
87
87
  import { rotatePoint } from './point';
88
88
  import { clearStore, EditType, globalStore, register, registerAnchors, registerCanvasDraw, useStore, } from './store';
89
89
  import { formatPadding, loadCss, s8, valueInArray, valueInRange, } from './utils';
@@ -270,37 +270,41 @@ var Meta2d = /** @class */ (function () {
270
270
  }
271
271
  }
272
272
  else {
273
+ var pValue = pen[key];
274
+ if (['x', 'y', 'width', 'height'].includes(key)) {
275
+ pValue = _this.getPenRect(pen)[key];
276
+ }
273
277
  switch (comparison) {
274
278
  case '>':
275
- can = pen[key] > +value;
279
+ can = pValue > +value;
276
280
  break;
277
281
  case '>=':
278
- can = pen[key] >= +value;
282
+ can = pValue >= +value;
279
283
  break;
280
284
  case '<':
281
- can = pen[key] < +value;
285
+ can = pValue < +value;
282
286
  break;
283
287
  case '<=':
284
- can = pen[key] <= +value;
288
+ can = pValue <= +value;
285
289
  break;
286
290
  case '=':
287
291
  case '==':
288
- can = pen[key] == value;
292
+ can = pValue == value;
289
293
  break;
290
294
  case '!=':
291
- can = pen[key] != value;
295
+ can = pValue != value;
292
296
  break;
293
297
  case '[)':
294
- can = valueInRange(+pen[key], value);
298
+ can = valueInRange(+pValue, value);
295
299
  break;
296
300
  case '![)':
297
- can = !valueInRange(+pen[key], value);
301
+ can = !valueInRange(+pValue, value);
298
302
  break;
299
303
  case '[]':
300
- can = valueInArray(pen[key], value);
304
+ can = valueInArray(pValue, value);
301
305
  break;
302
306
  case '![]':
303
- can = !valueInArray(pen[key], value);
307
+ can = !valueInArray(pValue, value);
304
308
  break;
305
309
  }
306
310
  }
@@ -394,6 +398,47 @@ var Meta2d = /** @class */ (function () {
394
398
  // 事件冒泡,子执行完,父执行
395
399
  _this.doEvent(_this.store.pens[pen.parentId], eventName);
396
400
  };
401
+ this.doDataEvent = function (datas) {
402
+ var _a, _b, _c;
403
+ if (!((_a = _this.store.data.dataEvents) === null || _a === void 0 ? void 0 : _a.length)) {
404
+ return;
405
+ }
406
+ var data = datas.reduce(function (accumulator, _a) {
407
+ var dataId = _a.dataId, id = _a.id, value = _a.value;
408
+ accumulator[id || dataId] = value;
409
+ return accumulator;
410
+ }, {});
411
+ var indexArr = [];
412
+ (_b = _this.store.data.dataEvents) === null || _b === void 0 ? void 0 : _b.forEach(function (event, index) {
413
+ var flag = false;
414
+ if (event.conditions && event.conditions.length) {
415
+ if (event.conditionType === 'and') {
416
+ flag = event.conditions.every(function (condition) {
417
+ return _this.dataJudegeCondition(data, condition.key, condition);
418
+ });
419
+ }
420
+ else if (event.conditionType === 'or') {
421
+ flag = event.conditions.some(function (condition) {
422
+ return _this.dataJudegeCondition(data, condition.key, condition);
423
+ });
424
+ }
425
+ }
426
+ else {
427
+ flag = true;
428
+ }
429
+ if (flag) {
430
+ indexArr.push(index);
431
+ }
432
+ });
433
+ (_c = _this.store.data.dataEvents) === null || _c === void 0 ? void 0 : _c.forEach(function (event, index) {
434
+ var _a;
435
+ if (indexArr.includes(index)) {
436
+ (_a = event.actions) === null || _a === void 0 ? void 0 : _a.forEach(function (action) {
437
+ _this.events[action.action](data, action);
438
+ });
439
+ }
440
+ });
441
+ };
397
442
  this.renderPenRaw = renderPenRaw;
398
443
  this.setElemPosition = setElemPosition;
399
444
  this.setLifeCycleFunc = setLifeCycleFunc;
@@ -750,6 +795,9 @@ var Meta2d = /** @class */ (function () {
750
795
  }
751
796
  }
752
797
  value.id = _pen.id;
798
+ if (_pen.deviceId) {
799
+ value.deviceId = _pen.deviceId;
800
+ }
753
801
  _this.sendDataToNetWork(value, e.network);
754
802
  return;
755
803
  }
@@ -1101,6 +1149,7 @@ var Meta2d = /** @class */ (function () {
1101
1149
  this.listenSocket();
1102
1150
  this.connectSocket();
1103
1151
  this.connectNetwork();
1152
+ this.startDataMock();
1104
1153
  this.startAnimate();
1105
1154
  this.startVideo();
1106
1155
  this.doInitJS();
@@ -1838,6 +1887,12 @@ var Meta2d = /** @class */ (function () {
1838
1887
  Meta2d.prototype.getParent = function (pen, root) {
1839
1888
  return getParent(pen, root);
1840
1889
  };
1890
+ Meta2d.prototype.getAllChildren = function (pen) {
1891
+ return getAllChildren(pen, this.store);
1892
+ };
1893
+ Meta2d.prototype.getAllFollowers = function (pen) {
1894
+ return getAllFollowers(pen, this.store);
1895
+ };
1841
1896
  Meta2d.prototype.data = function () {
1842
1897
  var data = deepClone(this.store.data);
1843
1898
  var _a = this.store.data, pens = _a.pens, paths = _a.paths;
@@ -2142,124 +2197,172 @@ var Meta2d = /** @class */ (function () {
2142
2197
  }
2143
2198
  return n;
2144
2199
  };
2145
- Meta2d.prototype.penMock = function (pen) {
2146
- var _this = this;
2147
- var _a;
2148
- if (pen.realTimes) {
2149
- var _d_1 = {};
2150
- pen.realTimes.forEach(function (realTime) {
2151
- if (realTime.enableMock && realTime.mock !== undefined) {
2152
- if (realTime.type === 'float') {
2153
- if (realTime.mock && realTime.mock.indexOf(',') !== -1) {
2154
- var arr = realTime.mock.split(',');
2155
- var rai = Math.floor(Math.random() * arr.length);
2156
- _d_1[realTime.key] = parseFloat(arr[rai]);
2157
- }
2158
- else if (realTime.mock && realTime.mock.indexOf('-') !== -1) {
2159
- var max = void 0;
2160
- var min = void 0;
2161
- var len = void 0;
2162
- var arr = realTime.mock.split('-');
2163
- if (realTime.mock.charAt(0) === '-') {
2164
- //负数
2165
- if (arr.length === 4) {
2166
- max = -parseFloat(arr[3]);
2167
- min = -parseFloat(arr[1]);
2168
- len = arr[3];
2169
- }
2170
- else {
2171
- max = parseFloat(arr[2]);
2172
- min = -parseFloat(arr[1]);
2173
- len = arr[2];
2174
- }
2175
- }
2176
- else {
2177
- max = parseFloat(arr[1]);
2178
- min = parseFloat(arr[0]);
2179
- len = arr[1];
2180
- }
2181
- if ((len + '').indexOf('.') !== -1) {
2182
- var length_1 = (len + '').split('.')[1].length;
2183
- _d_1[realTime.key] = (Math.random() * (max - min) + min).toFixed(length_1);
2184
- }
2185
- else {
2186
- _d_1[realTime.key] = Math.random() * (max - min) + min;
2187
- }
2188
- }
2189
- else {
2190
- _d_1[realTime.key] = parseFloat(realTime.mock);
2191
- }
2192
- }
2193
- else if (realTime.type === 'integer') {
2194
- if (realTime.mock && realTime.mock.indexOf(',') !== -1) {
2195
- var arr = realTime.mock.split(',');
2196
- var rai = Math.floor(Math.random() * arr.length);
2197
- _d_1[realTime.key] = parseInt(arr[rai]);
2198
- }
2199
- else if (realTime.mock && realTime.mock.indexOf('-') !== -1) {
2200
- var max = void 0;
2201
- var min = void 0;
2202
- var arr = realTime.mock.split('-');
2203
- if (realTime.mock.charAt(0) === '-') {
2204
- if (arr.length === 4) {
2205
- max = -parseFloat(arr[3]);
2206
- min = -parseFloat(arr[1]);
2207
- }
2208
- else {
2209
- max = parseFloat(arr[2]);
2210
- min = -parseFloat(arr[1]);
2211
- }
2212
- }
2213
- else {
2214
- max = parseInt(arr[1]);
2215
- min = parseInt(arr[0]);
2216
- }
2217
- _d_1[realTime.key] = parseInt(Math.random() * (max - min) + min + '');
2200
+ Meta2d.prototype.mockValue = function (data) {
2201
+ var value = undefined;
2202
+ if (data.enableMock && data.mock !== undefined) {
2203
+ if (data.type === 'float') {
2204
+ if (data.mock && data.mock.indexOf(',') !== -1) {
2205
+ var arr = data.mock.split(',');
2206
+ var rai = Math.floor(Math.random() * arr.length);
2207
+ value = parseFloat(arr[rai]);
2208
+ }
2209
+ else if (data.mock && data.mock.indexOf('-') !== -1) {
2210
+ var max = void 0;
2211
+ var min = void 0;
2212
+ var len = void 0;
2213
+ var arr = data.mock.split('-');
2214
+ if (data.mock.charAt(0) === '-') {
2215
+ //负数
2216
+ if (arr.length === 4) {
2217
+ max = -parseFloat(arr[3]);
2218
+ min = -parseFloat(arr[1]);
2219
+ len = arr[3];
2218
2220
  }
2219
2221
  else {
2220
- _d_1[realTime.key] = parseInt(realTime.mock);
2222
+ max = parseFloat(arr[2]);
2223
+ min = -parseFloat(arr[1]);
2224
+ len = arr[2];
2221
2225
  }
2222
2226
  }
2223
- else if (realTime.type === 'bool') {
2224
- if (typeof realTime.mock === 'boolean') {
2225
- _d_1[realTime.key] = realTime.mock;
2226
- }
2227
- else if ('true' === realTime.mock) {
2228
- _d_1[realTime.key] = true;
2229
- }
2230
- else if ('false' === realTime.mock) {
2231
- _d_1[realTime.key] = false;
2232
- }
2233
- else {
2234
- _d_1[realTime.key] = Math.random() < 0.5;
2235
- }
2227
+ else {
2228
+ max = parseFloat(arr[1]);
2229
+ min = parseFloat(arr[0]);
2230
+ len = arr[1];
2236
2231
  }
2237
- else if (realTime.type === 'object' || realTime.type === 'array') {
2238
- if (realTime.mock) {
2239
- //对象or数组 不mock
2240
- // _d[realTime.key] = realTime.value;
2241
- }
2232
+ if ((len + '').indexOf('.') !== -1) {
2233
+ var length_1 = (len + '').split('.')[1].length;
2234
+ value = (Math.random() * (max - min) + min).toFixed(length_1);
2242
2235
  }
2243
2236
  else {
2244
- //if (realTime.type === 'string')
2245
- if (realTime.mock &&
2246
- realTime.mock.startsWith('{') &&
2247
- realTime.mock.endsWith('}')) {
2248
- var str = realTime.mock.substring(1, realTime.mock.length - 1);
2249
- var arr = str.split(',');
2250
- var rai = Math.floor(Math.random() * arr.length);
2251
- _d_1[realTime.key] = arr[rai];
2252
- }
2253
- else if (realTime.mock &&
2254
- realTime.mock.startsWith('[') &&
2255
- realTime.mock.endsWith(']')) {
2256
- var len = parseInt(realTime.mock.substring(1, realTime.mock.length - 1));
2257
- _d_1[realTime.key] = _this.randomString(len);
2237
+ value = Math.random() * (max - min) + min;
2238
+ }
2239
+ }
2240
+ else {
2241
+ value = parseFloat(data.mock);
2242
+ }
2243
+ }
2244
+ else if (data.type === 'integer') {
2245
+ if (data.mock && data.mock.indexOf(',') !== -1) {
2246
+ var arr = data.mock.split(',');
2247
+ var rai = Math.floor(Math.random() * arr.length);
2248
+ value = parseInt(arr[rai]);
2249
+ }
2250
+ else if (data.mock && data.mock.indexOf('-') !== -1) {
2251
+ var max = void 0;
2252
+ var min = void 0;
2253
+ var arr = data.mock.split('-');
2254
+ if (data.mock.charAt(0) === '-') {
2255
+ if (arr.length === 4) {
2256
+ max = -parseFloat(arr[3]);
2257
+ min = -parseFloat(arr[1]);
2258
2258
  }
2259
2259
  else {
2260
- _d_1[realTime.key] = realTime.mock;
2260
+ max = parseFloat(arr[2]);
2261
+ min = -parseFloat(arr[1]);
2261
2262
  }
2262
2263
  }
2264
+ else {
2265
+ max = parseInt(arr[1]);
2266
+ min = parseInt(arr[0]);
2267
+ }
2268
+ value = parseInt(Math.random() * (max - min) + min + '');
2269
+ }
2270
+ else {
2271
+ value = parseInt(data.mock);
2272
+ }
2273
+ }
2274
+ else if (data.type === 'bool') {
2275
+ if (typeof data.mock === 'boolean') {
2276
+ value = data.mock;
2277
+ }
2278
+ else if ('true' === data.mock) {
2279
+ value = true;
2280
+ }
2281
+ else if ('false' === data.mock) {
2282
+ value = false;
2283
+ }
2284
+ else {
2285
+ value = Math.random() < 0.5;
2286
+ }
2287
+ }
2288
+ else if (data.type === 'object' || data.type === 'array') {
2289
+ if (data.mock) {
2290
+ //对象or数组 不mock
2291
+ // _d[realTime.key] = realTime.value;
2292
+ }
2293
+ }
2294
+ else {
2295
+ //if (realTime.type === 'string')
2296
+ if (data.mock && data.mock.indexOf(',') !== -1) {
2297
+ var str = data.mock.substring(1, data.mock.length - 1);
2298
+ var arr = str.split(',');
2299
+ var rai = Math.floor(Math.random() * arr.length);
2300
+ value = arr[rai];
2301
+ }
2302
+ else if (data.mock &&
2303
+ data.mock.startsWith('[') &&
2304
+ data.mock.endsWith(']')) {
2305
+ var len = parseInt(data.mock.substring(1, data.mock.length - 1));
2306
+ value = this.randomString(len);
2307
+ }
2308
+ else {
2309
+ value = data.mock;
2310
+ }
2311
+ }
2312
+ }
2313
+ return value;
2314
+ };
2315
+ //数据模拟
2316
+ Meta2d.prototype.dataMock = function () {
2317
+ var _this = this;
2318
+ var _a, _b;
2319
+ var arr = [];
2320
+ (_b = (_a = this.store.data.dataset) === null || _a === void 0 ? void 0 : _a.devices) === null || _b === void 0 ? void 0 : _b.forEach(function (data) {
2321
+ var value = _this.mockValue(data);
2322
+ if (value !== undefined) {
2323
+ arr.push({
2324
+ id: data.id,
2325
+ value: value
2326
+ });
2327
+ }
2328
+ });
2329
+ if (arr.length) {
2330
+ this.setDatas(arr, {
2331
+ render: true,
2332
+ doEvent: true,
2333
+ history: false,
2334
+ });
2335
+ }
2336
+ };
2337
+ Meta2d.prototype.startDataMock = function () {
2338
+ var _this = this;
2339
+ var enable = this.store.data.enableMock;
2340
+ if (enable) {
2341
+ this.stopDataMock();
2342
+ this.initBinds();
2343
+ this.updateTimer = setInterval(function () {
2344
+ //本地调试
2345
+ _this.store.data.pens.forEach(function (pen) {
2346
+ _this.penMock(pen);
2347
+ });
2348
+ _this.dataMock();
2349
+ _this.render();
2350
+ }, this.store.data.networkInterval || 1000);
2351
+ }
2352
+ };
2353
+ Meta2d.prototype.stopDataMock = function () {
2354
+ clearInterval(this.updateTimer);
2355
+ this.updateTimer = undefined;
2356
+ };
2357
+ Meta2d.prototype.penMock = function (pen) {
2358
+ var _this = this;
2359
+ var _a;
2360
+ if (pen.realTimes) {
2361
+ var _d_1 = {};
2362
+ pen.realTimes.forEach(function (realTime) {
2363
+ var value = _this.mockValue(realTime);
2364
+ if (value !== undefined) {
2365
+ _d_1[realTime.key] = value;
2263
2366
  }
2264
2367
  });
2265
2368
  if (Object.keys(_d_1).length) {
@@ -2307,8 +2410,8 @@ var Meta2d = /** @class */ (function () {
2307
2410
  };
2308
2411
  Meta2d.prototype.onNetworkConnect = function (https) {
2309
2412
  var _this = this;
2310
- var enable = this.store.data.enableMock;
2311
- if (!(https && https.length) && !enable) {
2413
+ // let enable = this.store.data.enableMock;
2414
+ if (!(https && https.length)) {
2312
2415
  return;
2313
2416
  }
2314
2417
  if (this.store.pensNetwork) {
@@ -2324,18 +2427,18 @@ var Meta2d = /** @class */ (function () {
2324
2427
  });
2325
2428
  }); });
2326
2429
  }
2327
- if (enable) {
2328
- this.updateTimer = setInterval(function () {
2329
- //模拟数据
2330
- _this.store.data.pens.forEach(function (pen) {
2331
- _this.penMock(pen);
2332
- });
2333
- // https.forEach(async (_item) => {
2334
- // this.requestHttp(_item);
2335
- // });
2336
- _this.render();
2337
- }, this.store.data.networkInterval || 1000);
2338
- }
2430
+ // if( enable ){
2431
+ // this.updateTimer = setInterval(() => {
2432
+ // //模拟数据
2433
+ // this.store.data.pens.forEach((pen) => {
2434
+ // this.penMock(pen);
2435
+ // });
2436
+ // // https.forEach(async (_item) => {
2437
+ // // this.requestHttp(_item);
2438
+ // // });
2439
+ // this.render();
2440
+ // }, this.store.data.networkInterval || 1000);
2441
+ // }
2339
2442
  https.forEach(function (_item, index) {
2340
2443
  _this.updateTimerList[index] = setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
2341
2444
  return __generator(this, function (_a) {
@@ -2402,8 +2505,8 @@ var Meta2d = /** @class */ (function () {
2402
2505
  });
2403
2506
  this.mqttClients = undefined;
2404
2507
  this.websockets = undefined;
2405
- clearInterval(this.updateTimer);
2406
- this.updateTimer = undefined;
2508
+ // clearInterval(this.updateTimer);
2509
+ // this.updateTimer = undefined;
2407
2510
  this.updateTimerList &&
2408
2511
  this.updateTimerList.forEach(function (_updateTimer) {
2409
2512
  clearInterval(_updateTimer);
@@ -2525,6 +2628,7 @@ var Meta2d = /** @class */ (function () {
2525
2628
  }
2526
2629
  });
2527
2630
  });
2631
+ this.store.data.locked && this.doDataEvent(datas);
2528
2632
  var initPens;
2529
2633
  var pens;
2530
2634
  if (history) {
@@ -2710,6 +2814,69 @@ var Meta2d = /** @class */ (function () {
2710
2814
  });
2711
2815
  });
2712
2816
  };
2817
+ Meta2d.prototype.dataJudegeCondition = function (data, key, condition) {
2818
+ var type = condition.type, target = condition.target, fnJs = condition.fnJs, fn = condition.fn, operator = condition.operator, valueType = condition.valueType;
2819
+ var can = false;
2820
+ if (type === 'fn') {
2821
+ //方法
2822
+ if (fn) {
2823
+ can = fn(data, { meta2d: this });
2824
+ }
2825
+ else if (fnJs) {
2826
+ try {
2827
+ condition.fn = new Function('data', 'context', fnJs);
2828
+ }
2829
+ catch (err) {
2830
+ console.error('Error: make function:', err);
2831
+ }
2832
+ if (condition.fn) {
2833
+ can = condition.fn(data, { meta2d: this });
2834
+ }
2835
+ }
2836
+ }
2837
+ else {
2838
+ //TODO boolean类型 数字类型
2839
+ var value = condition.value;
2840
+ if (valueType === 'prop') {
2841
+ value = data[condition.value];
2842
+ }
2843
+ var compareValue = data[key];
2844
+ switch (operator) {
2845
+ case '>':
2846
+ can = compareValue > +value;
2847
+ break;
2848
+ case '>=':
2849
+ can = compareValue >= +value;
2850
+ break;
2851
+ case '<':
2852
+ can = compareValue < +value;
2853
+ break;
2854
+ case '<=':
2855
+ can = compareValue <= +value;
2856
+ break;
2857
+ case '=':
2858
+ case '==':
2859
+ can = compareValue == value;
2860
+ break;
2861
+ case '!=':
2862
+ can = compareValue != value;
2863
+ break;
2864
+ case '[)':
2865
+ can = valueInRange(+compareValue, value);
2866
+ break;
2867
+ case '![)':
2868
+ can = !valueInRange(+compareValue, value);
2869
+ break;
2870
+ case '[]':
2871
+ can = valueInArray(compareValue, value);
2872
+ break;
2873
+ case '![]':
2874
+ can = !valueInArray(compareValue, value);
2875
+ break;
2876
+ }
2877
+ }
2878
+ return can;
2879
+ };
2713
2880
  Meta2d.prototype.judgeCondition = function (pen, key, condition) {
2714
2881
  var type = condition.type, target = condition.target, fnJs = condition.fnJs, fn = condition.fn, operator = condition.operator, valueType = condition.valueType;
2715
2882
  var can = false;
@@ -2737,6 +2904,9 @@ var Meta2d = /** @class */ (function () {
2737
2904
  value = this.store.pens[target][condition.value];
2738
2905
  }
2739
2906
  var compareValue = getter(pen, key);
2907
+ if (['x', 'y', 'width', 'height'].includes(key)) {
2908
+ compareValue = this.getPenRect(pen)[key];
2909
+ }
2740
2910
  switch (operator) {
2741
2911
  case '>':
2742
2912
  can = compareValue > +value;
@@ -3847,7 +4017,7 @@ var Meta2d = /** @class */ (function () {
3847
4017
  this.setValue({ id: pen.id, canvasLayer: layer }, { render: false, doEvent: false, history: false });
3848
4018
  }
3849
4019
  else if (pen.externElement || pen.name === 'gif') {
3850
- var zIndex = 1;
4020
+ var zIndex = 0;
3851
4021
  // let zIndex = pen.calculative.zIndex === undefined ? 5 : pen.calculative.zIndex + 1;
3852
4022
  if (type === 'top') {
3853
4023
  pen.calculative.canvas.maxZindex += 1;
@@ -3860,8 +4030,8 @@ var Meta2d = /** @class */ (function () {
3860
4030
  else if (type === 'down') {
3861
4031
  zIndex =
3862
4032
  pen.calculative.zIndex === undefined ? 3 : pen.calculative.zIndex - 1;
3863
- if (zIndex < 1) {
3864
- zIndex = 1;
4033
+ if (zIndex < 0) {
4034
+ zIndex = 0;
3865
4035
  }
3866
4036
  }
3867
4037
  this.setValue({ id: pen.id, zIndex: zIndex }, { render: false, doEvent: false, history: false });
@@ -4512,6 +4682,7 @@ var Meta2d = /** @class */ (function () {
4512
4682
  }
4513
4683
  }
4514
4684
  var allPens = getAllChildren(pen, this.store);
4685
+ allPens.push(pen);
4515
4686
  this.initImageCanvas(allPens);
4516
4687
  render && this.render();
4517
4688
  };