@routevn/creator-model 1.2.4 → 1.2.6
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 +109 -25
package/package.json
CHANGED
package/src/model.js
CHANGED
|
@@ -123,11 +123,11 @@ const ANIMATION_EASING_KEYS = [
|
|
|
123
123
|
const VARIABLE_SCOPE_KEYS = ["context", "device", "account"];
|
|
124
124
|
const VARIABLE_TYPE_KEYS = ["string", "number", "boolean"];
|
|
125
125
|
const LAYOUT_TYPE_KEYS = [
|
|
126
|
-
"
|
|
126
|
+
"general",
|
|
127
127
|
"save-load",
|
|
128
128
|
"confirmDialog",
|
|
129
|
-
"dialogue",
|
|
130
|
-
"nvl",
|
|
129
|
+
"dialogue-adv",
|
|
130
|
+
"dialogue-nvl",
|
|
131
131
|
"choice",
|
|
132
132
|
"history",
|
|
133
133
|
];
|
|
@@ -1506,13 +1506,6 @@ const validateTweenDefinition = ({
|
|
|
1506
1506
|
return invalidFromErrorFactory(errorFactory, `${path} must be an object`);
|
|
1507
1507
|
}
|
|
1508
1508
|
|
|
1509
|
-
if (Object.keys(tween).length === 0) {
|
|
1510
|
-
return invalidFromErrorFactory(
|
|
1511
|
-
errorFactory,
|
|
1512
|
-
`${path} must include at least one tween property`,
|
|
1513
|
-
);
|
|
1514
|
-
}
|
|
1515
|
-
|
|
1516
1509
|
for (const [propertyName, config] of Object.entries(tween)) {
|
|
1517
1510
|
const propertyPath = `${path}.${propertyName}`;
|
|
1518
1511
|
|
|
@@ -1866,17 +1859,6 @@ const validateAnimationDefinition = ({ animation, path, errorFactory }) => {
|
|
|
1866
1859
|
);
|
|
1867
1860
|
}
|
|
1868
1861
|
|
|
1869
|
-
if (
|
|
1870
|
-
animation.prev === undefined &&
|
|
1871
|
-
animation.next === undefined &&
|
|
1872
|
-
animation.mask === undefined
|
|
1873
|
-
) {
|
|
1874
|
-
return invalidFromErrorFactory(
|
|
1875
|
-
errorFactory,
|
|
1876
|
-
`${path} must define at least one of prev, next, or mask when ${path}.type is 'transition'`,
|
|
1877
|
-
);
|
|
1878
|
-
}
|
|
1879
|
-
|
|
1880
1862
|
for (const side of ["prev", "next"]) {
|
|
1881
1863
|
if (animation[side] === undefined) {
|
|
1882
1864
|
continue;
|
|
@@ -3674,6 +3656,21 @@ const validateKeyboardMap = ({ value, path, errorFactory }) => {
|
|
|
3674
3656
|
return VALID_RESULT;
|
|
3675
3657
|
};
|
|
3676
3658
|
|
|
3659
|
+
const validatePreviewObject = ({ value, path, errorFactory }) => {
|
|
3660
|
+
if (value === undefined) {
|
|
3661
|
+
return VALID_RESULT;
|
|
3662
|
+
}
|
|
3663
|
+
|
|
3664
|
+
if (!isPlainObject(value)) {
|
|
3665
|
+
return invalidFromErrorFactory(
|
|
3666
|
+
errorFactory,
|
|
3667
|
+
`${path} must be an object when provided`,
|
|
3668
|
+
);
|
|
3669
|
+
}
|
|
3670
|
+
|
|
3671
|
+
return VALID_RESULT;
|
|
3672
|
+
};
|
|
3673
|
+
|
|
3677
3674
|
const validateLayoutItems = ({ items, path, errorFactory }) => {
|
|
3678
3675
|
for (const [itemId, item] of Object.entries(items)) {
|
|
3679
3676
|
const itemPath = `${path}.${itemId}`;
|
|
@@ -3699,6 +3696,7 @@ const validateLayoutItems = ({ items, path, errorFactory }) => {
|
|
|
3699
3696
|
"layoutType",
|
|
3700
3697
|
"isFragment",
|
|
3701
3698
|
"thumbnailFileId",
|
|
3699
|
+
"preview",
|
|
3702
3700
|
"elements",
|
|
3703
3701
|
],
|
|
3704
3702
|
path: itemPath,
|
|
@@ -3747,11 +3745,22 @@ const validateLayoutItems = ({ items, path, errorFactory }) => {
|
|
|
3747
3745
|
);
|
|
3748
3746
|
}
|
|
3749
3747
|
|
|
3748
|
+
{
|
|
3749
|
+
const result = validatePreviewObject({
|
|
3750
|
+
value: item.preview,
|
|
3751
|
+
path: `${itemPath}.preview`,
|
|
3752
|
+
errorFactory,
|
|
3753
|
+
});
|
|
3754
|
+
if (result?.valid === false) {
|
|
3755
|
+
return result;
|
|
3756
|
+
}
|
|
3757
|
+
}
|
|
3758
|
+
|
|
3750
3759
|
if (item.type === "layout") {
|
|
3751
3760
|
if (!LAYOUT_TYPE_KEYS.includes(item.layoutType)) {
|
|
3752
3761
|
return invalidFromErrorFactory(
|
|
3753
3762
|
errorFactory,
|
|
3754
|
-
`${itemPath}.layoutType must be '
|
|
3763
|
+
`${itemPath}.layoutType must be 'general', 'save-load', 'confirmDialog', 'dialogue-adv', 'dialogue-nvl', 'choice', or 'history'`,
|
|
3755
3764
|
);
|
|
3756
3765
|
}
|
|
3757
3766
|
|
|
@@ -3804,6 +3813,7 @@ const validateControlItems = ({ items, path, errorFactory }) => {
|
|
|
3804
3813
|
"name",
|
|
3805
3814
|
"description",
|
|
3806
3815
|
"thumbnailFileId",
|
|
3816
|
+
"preview",
|
|
3807
3817
|
"elements",
|
|
3808
3818
|
"keyboard",
|
|
3809
3819
|
],
|
|
@@ -3853,6 +3863,17 @@ const validateControlItems = ({ items, path, errorFactory }) => {
|
|
|
3853
3863
|
);
|
|
3854
3864
|
}
|
|
3855
3865
|
|
|
3866
|
+
{
|
|
3867
|
+
const result = validatePreviewObject({
|
|
3868
|
+
value: item.preview,
|
|
3869
|
+
path: `${itemPath}.preview`,
|
|
3870
|
+
errorFactory,
|
|
3871
|
+
});
|
|
3872
|
+
if (result?.valid === false) {
|
|
3873
|
+
return result;
|
|
3874
|
+
}
|
|
3875
|
+
}
|
|
3876
|
+
|
|
3856
3877
|
if (item.type === "control") {
|
|
3857
3878
|
{
|
|
3858
3879
|
const result = validateNestedCollection({
|
|
@@ -8184,6 +8205,7 @@ const validateLayoutCreateData = ({ data, errorFactory }) => {
|
|
|
8184
8205
|
"layoutType",
|
|
8185
8206
|
"isFragment",
|
|
8186
8207
|
"thumbnailFileId",
|
|
8208
|
+
"preview",
|
|
8187
8209
|
"elements",
|
|
8188
8210
|
],
|
|
8189
8211
|
path: "payload.data",
|
|
@@ -8218,11 +8240,22 @@ const validateLayoutCreateData = ({ data, errorFactory }) => {
|
|
|
8218
8240
|
);
|
|
8219
8241
|
}
|
|
8220
8242
|
|
|
8243
|
+
{
|
|
8244
|
+
const result = validatePreviewObject({
|
|
8245
|
+
value: data.preview,
|
|
8246
|
+
path: "payload.data.preview",
|
|
8247
|
+
errorFactory,
|
|
8248
|
+
});
|
|
8249
|
+
if (result?.valid === false) {
|
|
8250
|
+
return result;
|
|
8251
|
+
}
|
|
8252
|
+
}
|
|
8253
|
+
|
|
8221
8254
|
if (data.type === "layout") {
|
|
8222
8255
|
if (!LAYOUT_TYPE_KEYS.includes(data.layoutType)) {
|
|
8223
8256
|
return invalidFromErrorFactory(
|
|
8224
8257
|
errorFactory,
|
|
8225
|
-
"payload.data.layoutType must be '
|
|
8258
|
+
"payload.data.layoutType must be 'general', 'save-load', 'confirmDialog', 'dialogue-adv', 'dialogue-nvl', 'choice', or 'history'",
|
|
8226
8259
|
);
|
|
8227
8260
|
}
|
|
8228
8261
|
|
|
@@ -8258,6 +8291,7 @@ const validateLayoutUpdateData = ({ data, errorFactory }) => {
|
|
|
8258
8291
|
"layoutType",
|
|
8259
8292
|
"isFragment",
|
|
8260
8293
|
"thumbnailFileId",
|
|
8294
|
+
"preview",
|
|
8261
8295
|
],
|
|
8262
8296
|
path: "payload.data",
|
|
8263
8297
|
errorFactory,
|
|
@@ -8298,13 +8332,24 @@ const validateLayoutUpdateData = ({ data, errorFactory }) => {
|
|
|
8298
8332
|
);
|
|
8299
8333
|
}
|
|
8300
8334
|
|
|
8335
|
+
{
|
|
8336
|
+
const result = validatePreviewObject({
|
|
8337
|
+
value: data.preview,
|
|
8338
|
+
path: "payload.data.preview",
|
|
8339
|
+
errorFactory,
|
|
8340
|
+
});
|
|
8341
|
+
if (result?.valid === false) {
|
|
8342
|
+
return result;
|
|
8343
|
+
}
|
|
8344
|
+
}
|
|
8345
|
+
|
|
8301
8346
|
if (
|
|
8302
8347
|
data.layoutType !== undefined &&
|
|
8303
8348
|
!LAYOUT_TYPE_KEYS.includes(data.layoutType)
|
|
8304
8349
|
) {
|
|
8305
8350
|
return invalidFromErrorFactory(
|
|
8306
8351
|
errorFactory,
|
|
8307
|
-
"payload.data.layoutType must be '
|
|
8352
|
+
"payload.data.layoutType must be 'general', 'save-load', 'confirmDialog', 'dialogue-adv', 'dialogue-nvl', 'choice', or 'history' when provided",
|
|
8308
8353
|
);
|
|
8309
8354
|
}
|
|
8310
8355
|
|
|
@@ -8342,6 +8387,7 @@ const validateControlCreateData = ({ data, errorFactory }) => {
|
|
|
8342
8387
|
"name",
|
|
8343
8388
|
"description",
|
|
8344
8389
|
"thumbnailFileId",
|
|
8390
|
+
"preview",
|
|
8345
8391
|
"elements",
|
|
8346
8392
|
"keyboard",
|
|
8347
8393
|
],
|
|
@@ -8377,6 +8423,17 @@ const validateControlCreateData = ({ data, errorFactory }) => {
|
|
|
8377
8423
|
);
|
|
8378
8424
|
}
|
|
8379
8425
|
|
|
8426
|
+
{
|
|
8427
|
+
const result = validatePreviewObject({
|
|
8428
|
+
value: data.preview,
|
|
8429
|
+
path: "payload.data.preview",
|
|
8430
|
+
errorFactory,
|
|
8431
|
+
});
|
|
8432
|
+
if (result?.valid === false) {
|
|
8433
|
+
return result;
|
|
8434
|
+
}
|
|
8435
|
+
}
|
|
8436
|
+
|
|
8380
8437
|
if (data.type === "control") {
|
|
8381
8438
|
{
|
|
8382
8439
|
const result = validateNestedCollection({
|
|
@@ -8408,7 +8465,13 @@ const validateControlUpdateData = ({ data, errorFactory }) => {
|
|
|
8408
8465
|
{
|
|
8409
8466
|
const result = validateAllowedKeys({
|
|
8410
8467
|
value: data,
|
|
8411
|
-
allowedKeys: [
|
|
8468
|
+
allowedKeys: [
|
|
8469
|
+
"name",
|
|
8470
|
+
"description",
|
|
8471
|
+
"keyboard",
|
|
8472
|
+
"thumbnailFileId",
|
|
8473
|
+
"preview",
|
|
8474
|
+
],
|
|
8412
8475
|
path: "payload.data",
|
|
8413
8476
|
errorFactory,
|
|
8414
8477
|
});
|
|
@@ -8448,6 +8511,17 @@ const validateControlUpdateData = ({ data, errorFactory }) => {
|
|
|
8448
8511
|
);
|
|
8449
8512
|
}
|
|
8450
8513
|
|
|
8514
|
+
{
|
|
8515
|
+
const result = validatePreviewObject({
|
|
8516
|
+
value: data.preview,
|
|
8517
|
+
path: "payload.data.preview",
|
|
8518
|
+
errorFactory,
|
|
8519
|
+
});
|
|
8520
|
+
if (result?.valid === false) {
|
|
8521
|
+
return result;
|
|
8522
|
+
}
|
|
8523
|
+
}
|
|
8524
|
+
|
|
8451
8525
|
{
|
|
8452
8526
|
const result = validateKeyboardMap({
|
|
8453
8527
|
value: data.keyboard,
|
|
@@ -13758,6 +13832,11 @@ const COMMAND_DEFINITIONS = [
|
|
|
13758
13832
|
thumbnailFileId: payload.data.thumbnailFileId,
|
|
13759
13833
|
}
|
|
13760
13834
|
: {}),
|
|
13835
|
+
...(payload.data.preview !== undefined
|
|
13836
|
+
? {
|
|
13837
|
+
preview: structuredClone(payload.data.preview),
|
|
13838
|
+
}
|
|
13839
|
+
: {}),
|
|
13761
13840
|
elements: structuredClone(payload.data.elements),
|
|
13762
13841
|
}
|
|
13763
13842
|
: {}),
|
|
@@ -13823,6 +13902,11 @@ const COMMAND_DEFINITIONS = [
|
|
|
13823
13902
|
thumbnailFileId: payload.data.thumbnailFileId,
|
|
13824
13903
|
}
|
|
13825
13904
|
: {}),
|
|
13905
|
+
...(payload.data.preview !== undefined
|
|
13906
|
+
? {
|
|
13907
|
+
preview: structuredClone(payload.data.preview),
|
|
13908
|
+
}
|
|
13909
|
+
: {}),
|
|
13826
13910
|
elements: structuredClone(payload.data.elements),
|
|
13827
13911
|
...(payload.data.keyboard !== undefined
|
|
13828
13912
|
? {
|