@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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/model.js +109 -25
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@routevn/creator-model",
3
- "version": "1.2.4",
3
+ "version": "1.2.6",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "license": "MIT",
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
- "normal",
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 'normal', 'save-load', 'confirmDialog', 'dialogue', 'nvl', 'choice', or 'history'`,
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 'normal', 'save-load', 'confirmDialog', 'dialogue', 'nvl', 'choice', or 'history'",
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 'normal', 'save-load', 'confirmDialog', 'dialogue', 'nvl', 'choice', or 'history' when provided",
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: ["name", "description", "keyboard", "thumbnailFileId"],
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
  ? {