@routevn/creator-model 1.6.0 → 1.6.2
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/package.json +1 -1
- package/src/model.js +85 -0
package/package.json
CHANGED
package/src/model.js
CHANGED
|
@@ -343,6 +343,7 @@ const LAYOUT_TYPE_KEYS = [
|
|
|
343
343
|
];
|
|
344
344
|
const LAYOUT_ELEMENT_TEXT_STYLE_ALIGN_KEYS = ["left", "center", "right"];
|
|
345
345
|
const LAYOUT_TEXT_REVEAL_EFFECT_KEYS = ["typewriter", "softWipe", "none"];
|
|
346
|
+
const LAYOUT_ELEMENT_BLUR_KERNEL_SIZE_OPTIONS = [5, 7, 9, 11, 13, 15];
|
|
346
347
|
const CONTROL_KEYBOARD_KEYS = [
|
|
347
348
|
"enter",
|
|
348
349
|
"space",
|
|
@@ -3348,6 +3349,56 @@ const validateLayoutElementInteraction = ({
|
|
|
3348
3349
|
}
|
|
3349
3350
|
};
|
|
3350
3351
|
|
|
3352
|
+
const validateLayoutElementBlur = ({ blur, path, errorFactory }) => {
|
|
3353
|
+
if (!isPlainObject(blur)) {
|
|
3354
|
+
return invalidFromErrorFactory(
|
|
3355
|
+
errorFactory,
|
|
3356
|
+
`${path} must be an object when provided`,
|
|
3357
|
+
);
|
|
3358
|
+
}
|
|
3359
|
+
|
|
3360
|
+
{
|
|
3361
|
+
const result = validateAllowedKeys({
|
|
3362
|
+
value: blur,
|
|
3363
|
+
allowedKeys: ["x", "y", "quality", "kernelSize", "repeatEdgePixels"],
|
|
3364
|
+
path,
|
|
3365
|
+
errorFactory,
|
|
3366
|
+
});
|
|
3367
|
+
if (result?.valid === false) {
|
|
3368
|
+
return result;
|
|
3369
|
+
}
|
|
3370
|
+
}
|
|
3371
|
+
|
|
3372
|
+
for (const key of ["x", "y", "quality"]) {
|
|
3373
|
+
if (blur[key] !== undefined && !isFiniteNumber(blur[key])) {
|
|
3374
|
+
return invalidFromErrorFactory(
|
|
3375
|
+
errorFactory,
|
|
3376
|
+
`${path}.${key} must be a finite number when provided`,
|
|
3377
|
+
);
|
|
3378
|
+
}
|
|
3379
|
+
}
|
|
3380
|
+
|
|
3381
|
+
if (
|
|
3382
|
+
blur.kernelSize !== undefined &&
|
|
3383
|
+
!LAYOUT_ELEMENT_BLUR_KERNEL_SIZE_OPTIONS.includes(blur.kernelSize)
|
|
3384
|
+
) {
|
|
3385
|
+
return invalidFromErrorFactory(
|
|
3386
|
+
errorFactory,
|
|
3387
|
+
`${path}.kernelSize must be one of ${LAYOUT_ELEMENT_BLUR_KERNEL_SIZE_OPTIONS.join(", ")} when provided`,
|
|
3388
|
+
);
|
|
3389
|
+
}
|
|
3390
|
+
|
|
3391
|
+
if (
|
|
3392
|
+
blur.repeatEdgePixels !== undefined &&
|
|
3393
|
+
typeof blur.repeatEdgePixels !== "boolean"
|
|
3394
|
+
) {
|
|
3395
|
+
return invalidFromErrorFactory(
|
|
3396
|
+
errorFactory,
|
|
3397
|
+
`${path}.repeatEdgePixels must be a boolean when provided`,
|
|
3398
|
+
);
|
|
3399
|
+
}
|
|
3400
|
+
};
|
|
3401
|
+
|
|
3351
3402
|
const validateLayoutElementData = ({
|
|
3352
3403
|
data,
|
|
3353
3404
|
path,
|
|
@@ -3372,6 +3423,7 @@ const validateLayoutElementData = ({
|
|
|
3372
3423
|
"scaleY",
|
|
3373
3424
|
"rotation",
|
|
3374
3425
|
"opacity",
|
|
3426
|
+
"blur",
|
|
3375
3427
|
"fill",
|
|
3376
3428
|
"border",
|
|
3377
3429
|
"text",
|
|
@@ -3506,6 +3558,26 @@ const validateLayoutElementData = ({
|
|
|
3506
3558
|
);
|
|
3507
3559
|
}
|
|
3508
3560
|
|
|
3561
|
+
if (data.blur !== undefined) {
|
|
3562
|
+
{
|
|
3563
|
+
const result = validateLayoutElementBlur({
|
|
3564
|
+
blur: data.blur,
|
|
3565
|
+
path: `${path}.blur`,
|
|
3566
|
+
errorFactory,
|
|
3567
|
+
});
|
|
3568
|
+
if (result?.valid === false) {
|
|
3569
|
+
return result;
|
|
3570
|
+
}
|
|
3571
|
+
}
|
|
3572
|
+
|
|
3573
|
+
if (data.type !== undefined && data.type !== "sprite") {
|
|
3574
|
+
return invalidFromErrorFactory(
|
|
3575
|
+
errorFactory,
|
|
3576
|
+
`${path}.blur can only be provided for sprite elements`,
|
|
3577
|
+
);
|
|
3578
|
+
}
|
|
3579
|
+
}
|
|
3580
|
+
|
|
3509
3581
|
for (const key of [
|
|
3510
3582
|
"text",
|
|
3511
3583
|
"resourceId",
|
|
@@ -3947,6 +4019,7 @@ const validateLayoutElementItems = ({ items, path, errorFactory }) => {
|
|
|
3947
4019
|
"scaleY",
|
|
3948
4020
|
"rotation",
|
|
3949
4021
|
"opacity",
|
|
4022
|
+
"blur",
|
|
3950
4023
|
"fill",
|
|
3951
4024
|
"border",
|
|
3952
4025
|
"text",
|
|
@@ -11090,6 +11163,18 @@ const validateVisualElementReferenceTargets = ({
|
|
|
11090
11163
|
state,
|
|
11091
11164
|
errorFactory,
|
|
11092
11165
|
}) => {
|
|
11166
|
+
if (data.blur !== undefined && data.type !== "sprite") {
|
|
11167
|
+
return invalidFromErrorFactory(
|
|
11168
|
+
errorFactory,
|
|
11169
|
+
`${ownerLabel} element blur can only be provided for sprite elements`,
|
|
11170
|
+
{
|
|
11171
|
+
[ownerIdField]: ownerId,
|
|
11172
|
+
elementId,
|
|
11173
|
+
field: "blur",
|
|
11174
|
+
},
|
|
11175
|
+
);
|
|
11176
|
+
}
|
|
11177
|
+
|
|
11093
11178
|
if (
|
|
11094
11179
|
data.type === "spritesheet-animation" ||
|
|
11095
11180
|
data.resourceId !== undefined ||
|