@leafer-draw/miniapp 1.0.8 → 1.0.10
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/miniapp.cjs +15 -15
- package/dist/miniapp.esm.js +15 -15
- package/dist/miniapp.esm.min.js +1 -1
- package/dist/miniapp.min.cjs +1 -1
- package/dist/miniapp.module.js +66 -42
- package/dist/miniapp.module.min.js +1 -1
- package/package.json +7 -7
package/dist/miniapp.module.js
CHANGED
|
@@ -1411,14 +1411,13 @@ const UICreator = {
|
|
|
1411
1411
|
list: {},
|
|
1412
1412
|
register(UI) {
|
|
1413
1413
|
const { __tag: tag } = UI.prototype;
|
|
1414
|
-
if (list$1[tag])
|
|
1414
|
+
if (list$1[tag])
|
|
1415
1415
|
debug$c.repeat(tag);
|
|
1416
|
-
|
|
1417
|
-
else {
|
|
1418
|
-
list$1[tag] = UI;
|
|
1419
|
-
}
|
|
1416
|
+
list$1[tag] = UI;
|
|
1420
1417
|
},
|
|
1421
1418
|
get(tag, data, x, y, width, height) {
|
|
1419
|
+
if (!list$1[tag])
|
|
1420
|
+
debug$c.error('not register ' + tag);
|
|
1422
1421
|
const ui = new list$1[tag](data);
|
|
1423
1422
|
if (x !== undefined) {
|
|
1424
1423
|
ui.x = x;
|
|
@@ -1442,7 +1441,7 @@ const EventCreator = {
|
|
|
1442
1441
|
Object.keys(Event).forEach(key => {
|
|
1443
1442
|
name = Event[key];
|
|
1444
1443
|
if (typeof name === 'string')
|
|
1445
|
-
nameList[name]
|
|
1444
|
+
nameList[name] && debug$b.repeat(name), nameList[name] = Event;
|
|
1446
1445
|
});
|
|
1447
1446
|
},
|
|
1448
1447
|
changeName(oldName, newName) {
|
|
@@ -1644,7 +1643,7 @@ class LeafData {
|
|
|
1644
1643
|
const t = this;
|
|
1645
1644
|
if (t.blendMode === 'pass-through') {
|
|
1646
1645
|
const leaf = this.__leaf;
|
|
1647
|
-
if ((t.opacity < 1 && leaf.isBranch) || leaf.__hasEraser || t.eraser) {
|
|
1646
|
+
if ((t.opacity < 1 && (leaf.isBranch || t.__hasMultiPaint)) || leaf.__hasEraser || t.eraser) {
|
|
1648
1647
|
t.__single = true;
|
|
1649
1648
|
}
|
|
1650
1649
|
else if (t.__single) {
|
|
@@ -2042,8 +2041,9 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2042
2041
|
takeCanvas = this.getSameCanvas();
|
|
2043
2042
|
takeCanvas.copyWorld(this);
|
|
2044
2043
|
}
|
|
2045
|
-
|
|
2046
|
-
|
|
2044
|
+
const s = this.size;
|
|
2045
|
+
DataHelper.copyAttrs(s, size, canvasSizeAttrs);
|
|
2046
|
+
canvasSizeAttrs.forEach(key => s[key] || (s[key] = 1));
|
|
2047
2047
|
this.bounds = new Bounds(0, 0, this.width, this.height);
|
|
2048
2048
|
if (this.context && !this.unreal) {
|
|
2049
2049
|
this.updateViewSize();
|
|
@@ -2157,6 +2157,17 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2157
2157
|
if (!onlyResetTransform)
|
|
2158
2158
|
this.useWorldTransform();
|
|
2159
2159
|
}
|
|
2160
|
+
useGrayscaleAlpha(bounds) {
|
|
2161
|
+
this.setTempBounds(bounds, true, true);
|
|
2162
|
+
let alpha, pixel;
|
|
2163
|
+
const { context } = this, imageData = context.getImageData(tempBounds$1.x, tempBounds$1.y, tempBounds$1.width, tempBounds$1.height), { data } = imageData;
|
|
2164
|
+
for (let i = 0, len = data.length; i < len; i += 4) {
|
|
2165
|
+
pixel = data[i] * 0.299 + data[i + 1] * 0.587 + data[i + 2] * 0.114;
|
|
2166
|
+
if (alpha = data[i + 3])
|
|
2167
|
+
data[i + 3] = alpha === 255 ? pixel : alpha * (pixel / 255);
|
|
2168
|
+
}
|
|
2169
|
+
context.putImageData(imageData, tempBounds$1.x, tempBounds$1.y);
|
|
2170
|
+
}
|
|
2160
2171
|
useMask(maskCanvas, fromBounds, toBounds) {
|
|
2161
2172
|
this.copyWorld(maskCanvas, fromBounds, toBounds, 'destination-in');
|
|
2162
2173
|
}
|
|
@@ -2167,7 +2178,7 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2167
2178
|
if (blendMode)
|
|
2168
2179
|
this.blendMode = blendMode;
|
|
2169
2180
|
this.fillStyle = color;
|
|
2170
|
-
|
|
2181
|
+
this.setTempBounds(bounds);
|
|
2171
2182
|
this.fillRect(tempBounds$1.x, tempBounds$1.y, tempBounds$1.width, tempBounds$1.height);
|
|
2172
2183
|
if (blendMode)
|
|
2173
2184
|
this.blendMode = 'source-over';
|
|
@@ -2176,22 +2187,18 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2176
2187
|
if (blendMode)
|
|
2177
2188
|
this.blendMode = blendMode;
|
|
2178
2189
|
this.strokeStyle = color;
|
|
2179
|
-
|
|
2190
|
+
this.setTempBounds(bounds);
|
|
2180
2191
|
this.strokeRect(tempBounds$1.x, tempBounds$1.y, tempBounds$1.width, tempBounds$1.height);
|
|
2181
2192
|
if (blendMode)
|
|
2182
2193
|
this.blendMode = 'source-over';
|
|
2183
2194
|
}
|
|
2184
2195
|
clearWorld(bounds, ceilPixel) {
|
|
2185
|
-
|
|
2186
|
-
if (ceilPixel)
|
|
2187
|
-
tempBounds$1.ceil();
|
|
2196
|
+
this.setTempBounds(bounds, ceilPixel);
|
|
2188
2197
|
this.clearRect(tempBounds$1.x, tempBounds$1.y, tempBounds$1.width, tempBounds$1.height);
|
|
2189
2198
|
}
|
|
2190
2199
|
clipWorld(bounds, ceilPixel) {
|
|
2191
2200
|
this.beginPath();
|
|
2192
|
-
|
|
2193
|
-
if (ceilPixel)
|
|
2194
|
-
tempBounds$1.ceil();
|
|
2201
|
+
this.setTempBounds(bounds, ceilPixel);
|
|
2195
2202
|
this.rect(tempBounds$1.x, tempBounds$1.y, tempBounds$1.width, tempBounds$1.height);
|
|
2196
2203
|
this.clip();
|
|
2197
2204
|
}
|
|
@@ -2199,6 +2206,14 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2199
2206
|
const { pixelRatio } = this;
|
|
2200
2207
|
this.clearRect(0, 0, this.width * pixelRatio + 2, this.height * pixelRatio + 2);
|
|
2201
2208
|
}
|
|
2209
|
+
setTempBounds(bounds, ceil, intersect) {
|
|
2210
|
+
tempBounds$1.set(bounds);
|
|
2211
|
+
if (intersect)
|
|
2212
|
+
tempBounds$1.intersect(this.bounds);
|
|
2213
|
+
tempBounds$1.scale(this.pixelRatio);
|
|
2214
|
+
if (ceil)
|
|
2215
|
+
tempBounds$1.ceil();
|
|
2216
|
+
}
|
|
2202
2217
|
isSameSize(size) {
|
|
2203
2218
|
return this.width === size.width && this.height === size.height && this.pixelRatio === size.pixelRatio;
|
|
2204
2219
|
}
|
|
@@ -5212,13 +5227,14 @@ const BranchRender = {
|
|
|
5212
5227
|
this.__.__checkSingle();
|
|
5213
5228
|
},
|
|
5214
5229
|
__render(canvas, options) {
|
|
5230
|
+
this.__nowWorld = this.__getNowWorld(options);
|
|
5215
5231
|
if (this.__worldOpacity) {
|
|
5216
5232
|
if (this.__.__single) {
|
|
5217
5233
|
if (this.__.eraser === 'path')
|
|
5218
5234
|
return this.__renderEraser(canvas, options);
|
|
5219
5235
|
const tempCanvas = canvas.getSameCanvas(false, true);
|
|
5220
5236
|
this.__renderBranch(tempCanvas, options);
|
|
5221
|
-
const nowWorld = this.
|
|
5237
|
+
const nowWorld = this.__nowWorld;
|
|
5222
5238
|
canvas.opacity = this.__.opacity;
|
|
5223
5239
|
canvas.copyWorldByReset(tempCanvas, nowWorld, nowWorld, this.__.__blendMode, true);
|
|
5224
5240
|
tempCanvas.recycle(nowWorld);
|
|
@@ -5959,7 +5975,7 @@ class LeafLevelList {
|
|
|
5959
5975
|
}
|
|
5960
5976
|
}
|
|
5961
5977
|
|
|
5962
|
-
const version = "1.0.
|
|
5978
|
+
const version = "1.0.10";
|
|
5963
5979
|
|
|
5964
5980
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
5965
5981
|
get allowBackgroundColor() { return false; }
|
|
@@ -6072,7 +6088,7 @@ function useCanvas(_canvasType, app) {
|
|
|
6072
6088
|
Platform.origin = {
|
|
6073
6089
|
createCanvas: (width, height, _format) => {
|
|
6074
6090
|
const data = { type: '2d', width, height };
|
|
6075
|
-
app.createOffscreenCanvas ? app.createOffscreenCanvas(data) : app.createOffScreenCanvas(data);
|
|
6091
|
+
return app.createOffscreenCanvas ? app.createOffscreenCanvas(data) : app.createOffScreenCanvas(data);
|
|
6076
6092
|
},
|
|
6077
6093
|
canvasToDataURL: (canvas, type, quality) => canvas.toDataURL(mineType(type), quality),
|
|
6078
6094
|
canvasToBolb: (canvas, type, quality) => canvas.toBuffer(type, { quality }),
|
|
@@ -6183,7 +6199,7 @@ function useCanvas(_canvasType, app) {
|
|
|
6183
6199
|
}
|
|
6184
6200
|
Platform.name = 'miniapp';
|
|
6185
6201
|
Platform.requestRender = function (render) {
|
|
6186
|
-
const { view } =
|
|
6202
|
+
const { view } = Platform.renderCanvas || Platform.canvas;
|
|
6187
6203
|
view.requestAnimationFrame ? view.requestAnimationFrame(render) : setTimeout(render, 16);
|
|
6188
6204
|
};
|
|
6189
6205
|
defineKey(Platform, 'devicePixelRatio', { get() { return Math.max(1, wx.getSystemInfoSync().pixelRatio); } });
|
|
@@ -6568,7 +6584,8 @@ class Renderer {
|
|
|
6568
6584
|
this.totalBounds = new Bounds();
|
|
6569
6585
|
debug$3.log(target.innerName, '--->');
|
|
6570
6586
|
try {
|
|
6571
|
-
target.
|
|
6587
|
+
if (!target.isApp)
|
|
6588
|
+
target.app.emit(RenderEvent.CHILD_START, target);
|
|
6572
6589
|
this.emitRender(RenderEvent.START);
|
|
6573
6590
|
this.renderOnce(callback);
|
|
6574
6591
|
this.emitRender(RenderEvent.END, this.totalBounds);
|
|
@@ -6849,6 +6866,12 @@ class UIData extends LeafData {
|
|
|
6849
6866
|
return strokeWidth;
|
|
6850
6867
|
}
|
|
6851
6868
|
get __hasStroke() { return this.stroke && this.strokeWidth; }
|
|
6869
|
+
get __hasMultiPaint() {
|
|
6870
|
+
const t = this;
|
|
6871
|
+
if ((t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect)
|
|
6872
|
+
return true;
|
|
6873
|
+
return t.fill && this.__hasStroke;
|
|
6874
|
+
}
|
|
6852
6875
|
get __clipAfterFill() { return (this.cornerRadius || this.__pathInputed); }
|
|
6853
6876
|
get __autoWidth() { return !this._width; }
|
|
6854
6877
|
get __autoHeight() { return !this._height; }
|
|
@@ -7218,9 +7241,8 @@ const RectRender = {
|
|
|
7218
7241
|
canvas.strokeRect(half, half, width, height);
|
|
7219
7242
|
canvas.restore();
|
|
7220
7243
|
}
|
|
7221
|
-
else
|
|
7244
|
+
else
|
|
7222
7245
|
canvas.strokeRect(half, half, width, height);
|
|
7223
|
-
}
|
|
7224
7246
|
break;
|
|
7225
7247
|
case 'outside':
|
|
7226
7248
|
canvas.strokeRect(-half, -half, width + __strokeWidth, height + __strokeWidth);
|
|
@@ -7445,6 +7467,15 @@ __decorate([
|
|
|
7445
7467
|
__decorate([
|
|
7446
7468
|
boundsType(0)
|
|
7447
7469
|
], UI.prototype, "padding", void 0);
|
|
7470
|
+
__decorate([
|
|
7471
|
+
boundsType(false)
|
|
7472
|
+
], UI.prototype, "lockRatio", void 0);
|
|
7473
|
+
__decorate([
|
|
7474
|
+
boundsType()
|
|
7475
|
+
], UI.prototype, "widthRange", void 0);
|
|
7476
|
+
__decorate([
|
|
7477
|
+
boundsType()
|
|
7478
|
+
], UI.prototype, "heightRange", void 0);
|
|
7448
7479
|
__decorate([
|
|
7449
7480
|
dataType(false)
|
|
7450
7481
|
], UI.prototype, "draggable", void 0);
|
|
@@ -7736,8 +7767,6 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
7736
7767
|
__onResize(event) {
|
|
7737
7768
|
this.emitEvent(event);
|
|
7738
7769
|
DataHelper.copyAttrs(this.__, event, canvasSizeAttrs);
|
|
7739
|
-
if (!event.width || !event.height)
|
|
7740
|
-
debug$1.warn('w = 0 or h = 0');
|
|
7741
7770
|
setTimeout(() => { if (this.canvasManager)
|
|
7742
7771
|
this.canvasManager.clearRecycled(); }, 0);
|
|
7743
7772
|
}
|
|
@@ -8062,9 +8091,6 @@ __decorate([
|
|
|
8062
8091
|
__decorate([
|
|
8063
8092
|
dataType(false)
|
|
8064
8093
|
], Box.prototype, "resizeChildren", void 0);
|
|
8065
|
-
__decorate([
|
|
8066
|
-
dataType(false)
|
|
8067
|
-
], Box.prototype, "textBox", void 0);
|
|
8068
8094
|
__decorate([
|
|
8069
8095
|
affectRenderBoundsType('show')
|
|
8070
8096
|
], Box.prototype, "overflow", void 0);
|
|
@@ -8475,7 +8501,6 @@ let Text = class Text extends UI {
|
|
|
8475
8501
|
this.__updateTextDrawData();
|
|
8476
8502
|
const { bounds } = data.__textDrawData;
|
|
8477
8503
|
const b = layout.boxBounds;
|
|
8478
|
-
console.log(bounds, autoWidth, autoHeight);
|
|
8479
8504
|
if (data.__lineHeight < fontSize)
|
|
8480
8505
|
spread(bounds, fontSize / 2);
|
|
8481
8506
|
if (autoWidth || autoHeight) {
|
|
@@ -9527,16 +9552,16 @@ const EffectModule = {
|
|
|
9527
9552
|
|
|
9528
9553
|
const { excludeRenderBounds } = LeafBoundsHelper;
|
|
9529
9554
|
Group.prototype.__renderMask = function (canvas, options) {
|
|
9530
|
-
let child, maskCanvas, contentCanvas, maskOpacity, currentMask;
|
|
9555
|
+
let child, maskCanvas, contentCanvas, maskOpacity, currentMask, mask;
|
|
9531
9556
|
const { children } = this;
|
|
9532
9557
|
for (let i = 0, len = children.length; i < len; i++) {
|
|
9533
|
-
child = children[i];
|
|
9534
|
-
if (
|
|
9558
|
+
child = children[i], mask = child.__.mask;
|
|
9559
|
+
if (mask) {
|
|
9535
9560
|
if (currentMask) {
|
|
9536
9561
|
maskEnd(this, currentMask, canvas, contentCanvas, maskCanvas, maskOpacity);
|
|
9537
9562
|
maskCanvas = contentCanvas = null;
|
|
9538
9563
|
}
|
|
9539
|
-
if (
|
|
9564
|
+
if (mask === 'path' || mask === 'clipping-path') {
|
|
9540
9565
|
if (child.opacity < 1) {
|
|
9541
9566
|
currentMask = 'opacity-path';
|
|
9542
9567
|
maskOpacity = child.opacity;
|
|
@@ -9550,14 +9575,14 @@ Group.prototype.__renderMask = function (canvas, options) {
|
|
|
9550
9575
|
child.__clip(contentCanvas || canvas, options);
|
|
9551
9576
|
}
|
|
9552
9577
|
else {
|
|
9553
|
-
currentMask = 'alpha';
|
|
9578
|
+
currentMask = mask === 'grayscale' ? 'grayscale' : 'alpha';
|
|
9554
9579
|
if (!maskCanvas)
|
|
9555
9580
|
maskCanvas = getCanvas(canvas);
|
|
9556
9581
|
if (!contentCanvas)
|
|
9557
9582
|
contentCanvas = getCanvas(canvas);
|
|
9558
9583
|
child.__render(maskCanvas, options);
|
|
9559
9584
|
}
|
|
9560
|
-
if (
|
|
9585
|
+
if (!(mask === 'clipping' || mask === 'clipping-path'))
|
|
9561
9586
|
continue;
|
|
9562
9587
|
}
|
|
9563
9588
|
if (excludeRenderBounds(child, options))
|
|
@@ -9568,6 +9593,8 @@ Group.prototype.__renderMask = function (canvas, options) {
|
|
|
9568
9593
|
};
|
|
9569
9594
|
function maskEnd(leaf, maskMode, canvas, contentCanvas, maskCanvas, maskOpacity) {
|
|
9570
9595
|
switch (maskMode) {
|
|
9596
|
+
case 'grayscale':
|
|
9597
|
+
maskCanvas.useGrayscaleAlpha(leaf.__nowWorld);
|
|
9571
9598
|
case 'alpha':
|
|
9572
9599
|
usePixelMask(leaf, canvas, contentCanvas, maskCanvas);
|
|
9573
9600
|
break;
|
|
@@ -10272,15 +10299,12 @@ const canvas = LeaferCanvasBase.prototype;
|
|
|
10272
10299
|
const debug = Debug.get('@leafer-ui/export');
|
|
10273
10300
|
canvas.export = function (filename, options) {
|
|
10274
10301
|
const { quality, blob } = FileHelper.getExportOptions(options);
|
|
10275
|
-
if (filename.includes('.'))
|
|
10302
|
+
if (filename.includes('.'))
|
|
10276
10303
|
return this.saveAs(filename, quality);
|
|
10277
|
-
|
|
10278
|
-
else if (blob) {
|
|
10304
|
+
else if (blob)
|
|
10279
10305
|
return this.toBlob(filename, quality);
|
|
10280
|
-
|
|
10281
|
-
else {
|
|
10306
|
+
else
|
|
10282
10307
|
return this.toDataURL(filename, quality);
|
|
10283
|
-
}
|
|
10284
10308
|
};
|
|
10285
10309
|
canvas.toBlob = function (type, quality) {
|
|
10286
10310
|
return new Promise((resolve) => {
|