webstudio 0.212.0 → 0.213.0

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/lib/cli.js CHANGED
@@ -2617,6 +2617,23 @@ var defaultStates = [
2617
2617
  { selector: ":focus-visible", label: "Focus Visible" },
2618
2618
  { selector: ":focus-within", label: "Focus Within" }
2619
2619
  ];
2620
+ var ContentModel = z.object({
2621
+ /*
2622
+ * instance - accepted by any parent with "instance" in children categories
2623
+ * none - accepted by parents with this component name in children categories
2624
+ */
2625
+ category: z.union([z.literal("instance"), z.literal("none")]),
2626
+ /**
2627
+ * transparent - pass through possible children from parent
2628
+ * rich-text - can be edited as rich text
2629
+ * instance - other instances accepted
2630
+ * empty - no children accepted
2631
+ * ComponentName - accept specific components with none category
2632
+ */
2633
+ children: z.array(
2634
+ z.string()
2635
+ )
2636
+ });
2620
2637
  z.object({
2621
2638
  category: z.enum(componentCategories).optional(),
2622
2639
  // container - can accept other components with dnd or be edited as text
@@ -2630,6 +2647,7 @@ z.object({
2630
2647
  */
2631
2648
  placeholder: z.string().optional(),
2632
2649
  constraints: Matchers.optional(),
2650
+ contentModel: ContentModel.optional(),
2633
2651
  // when this field is specified component receives
2634
2652
  // prop with index of same components withiin specified ancestor
2635
2653
  // important to automatically enumerate collections without
@@ -2685,37 +2703,32 @@ var descendantMeta = {
2685
2703
  type: "control",
2686
2704
  label: "Descendant",
2687
2705
  icon: PaintBrushIcon,
2706
+ contentModel: {
2707
+ category: "none",
2708
+ children: ["empty"]
2709
+ },
2688
2710
  // @todo infer possible presets
2689
- presetStyle: {},
2690
- constraints: {
2691
- relation: "parent",
2692
- component: { $in: ["HtmlEmbed", "MarkdownEmbed"] }
2693
- }
2711
+ presetStyle: {}
2694
2712
  };
2695
2713
  var blockComponent = "ws:block";
2696
2714
  var blockTemplateComponent = "ws:block-template";
2697
2715
  var blockTemplateMeta = {
2698
2716
  type: "container",
2699
2717
  icon: AddTemplateInstanceIcon,
2700
- constraints: {
2701
- relation: "parent",
2702
- component: { $eq: blockComponent }
2718
+ contentModel: {
2719
+ category: "none",
2720
+ children: ["instance"]
2703
2721
  }
2704
2722
  };
2705
2723
  var blockMeta = {
2706
2724
  type: "container",
2707
2725
  label: "Content Block",
2708
2726
  icon: ContentBlockIcon,
2709
- constraints: [
2710
- {
2711
- relation: "ancestor",
2712
- component: { $nin: [collectionComponent, blockComponent] }
2713
- },
2714
- {
2715
- relation: "child",
2716
- component: { $eq: blockTemplateComponent }
2717
- }
2718
- ]
2727
+ contentModel: {
2728
+ category: "instance",
2729
+ children: [blockTemplateComponent, "instance"]
2730
+ // @todo prevent deleting block template
2731
+ }
2719
2732
  };
2720
2733
  var coreMetas = {
2721
2734
  [rootComponent]: rootMeta,
@@ -4668,25 +4681,29 @@ const e$4 = {
4668
4681
  type: "boolean"
4669
4682
  }
4670
4683
  };
4671
- const i$4 = {
4672
- div: [
4673
- {
4674
- property: "display",
4675
- value: { type: "keyword", value: "contents" }
4676
- },
4677
- {
4678
- property: "white-space-collapse",
4679
- value: { type: "keyword", value: "collapse" }
4680
- }
4681
- ]
4682
- }, a$d = {
4684
+ const r$c = {
4683
4685
  category: "general",
4684
- type: "embed",
4686
+ type: "container",
4685
4687
  label: "HTML Embed",
4686
4688
  description: "Used to add HTML code to the page, such as an SVG or script.",
4687
4689
  icon: EmbedIcon,
4688
- presetStyle: i$4,
4689
- order: 2
4690
+ order: 2,
4691
+ contentModel: {
4692
+ category: "instance",
4693
+ children: [descendantComponent]
4694
+ },
4695
+ presetStyle: {
4696
+ div: [
4697
+ {
4698
+ property: "display",
4699
+ value: { type: "keyword", value: "contents" }
4700
+ },
4701
+ {
4702
+ property: "white-space-collapse",
4703
+ value: { type: "keyword", value: "collapse" }
4704
+ }
4705
+ ]
4706
+ }
4690
4707
  };
4691
4708
  ({
4692
4709
  props: {
@@ -4709,9 +4726,13 @@ const i$4 = {
4709
4726
  },
4710
4727
  initialProps: ["className", "clientOnly", "executeScriptOnCanvas"]
4711
4728
  });
4712
- const t$1 = {
4713
- type: "embed",
4729
+ const a$e = {
4730
+ type: "container",
4714
4731
  icon: MarkdownEmbedIcon,
4732
+ contentModel: {
4733
+ category: "instance",
4734
+ children: [descendantComponent]
4735
+ },
4715
4736
  presetStyle: {
4716
4737
  div: [
4717
4738
  {
@@ -4763,13 +4784,13 @@ var h3 = div;
4763
4784
  var h4 = div;
4764
4785
  var h5 = div;
4765
4786
  var h6 = div;
4766
- var i$3 = div;
4787
+ var i$1 = div;
4767
4788
  var img = div;
4768
- var a$c = div;
4789
+ var a$d = div;
4769
4790
  var li = div;
4770
4791
  var ul = div;
4771
4792
  var ol = div;
4772
- var p$a = div;
4793
+ var p$9 = div;
4773
4794
  var span = div;
4774
4795
  var body = [
4775
4796
  { property: "margin-top", value: { type: "unit", unit: "number", value: 0 } },
@@ -5080,7 +5101,7 @@ var button = [
5080
5101
  { property: "text-transform", value: { type: "keyword", value: "none" } }
5081
5102
  ];
5082
5103
  var select = button;
5083
- const a$b = {
5104
+ const a$c = {
5084
5105
  body: [
5085
5106
  ...body,
5086
5107
  {
@@ -5092,11 +5113,11 @@ const a$b = {
5092
5113
  value: { type: "keyword", value: "grayscale" }
5093
5114
  }
5094
5115
  ]
5095
- }, n$7 = {
5116
+ }, n$6 = {
5096
5117
  type: "container",
5097
5118
  icon: BodyIcon,
5098
5119
  states: defaultStates,
5099
- presetStyle: a$b
5120
+ presetStyle: a$c
5100
5121
  };
5101
5122
  const v$2 = {
5102
5123
  category: "general",
@@ -5118,7 +5139,7 @@ const v$2 = {
5118
5139
  },
5119
5140
  order: 0
5120
5141
  };
5121
- const s$4 = {
5142
+ const s$6 = {
5122
5143
  type: "container",
5123
5144
  icon: TextIcon,
5124
5145
  states: defaultStates,
@@ -5146,28 +5167,28 @@ const d$6 = {
5146
5167
  h6
5147
5168
  }
5148
5169
  };
5149
- const p$9 = {
5150
- p: p$a
5151
- }, n$6 = {
5170
+ const p$8 = {
5171
+ p: p$9
5172
+ }, n$5 = {
5152
5173
  type: "container",
5153
5174
  placeholder: "Paragraph",
5154
5175
  icon: TextAlignLeftIcon,
5155
5176
  states: defaultStates,
5156
- presetStyle: p$9
5177
+ presetStyle: p$8
5157
5178
  };
5158
- const a$a = {
5179
+ const a$b = {
5159
5180
  a: [
5160
- ...a$c,
5181
+ ...a$d,
5161
5182
  {
5162
5183
  property: "display",
5163
5184
  value: { type: "keyword", value: "inline-block" }
5164
5185
  }
5165
5186
  ]
5166
- }, n$5 = {
5187
+ }, n$4 = {
5167
5188
  type: "container",
5168
5189
  placeholder: "Link",
5169
5190
  icon: LinkIcon,
5170
- presetStyle: a$a,
5191
+ presetStyle: a$b,
5171
5192
  states: [
5172
5193
  ...defaultStates,
5173
5194
  {
@@ -5181,46 +5202,46 @@ const a$a = {
5181
5202
  }
5182
5203
  ]
5183
5204
  };
5184
- const a$9 = {
5185
- ...n$5,
5205
+ const a$a = {
5206
+ ...n$4,
5186
5207
  type: "rich-text-child"
5187
5208
  };
5188
- const s$3 = {
5209
+ const s$5 = {
5189
5210
  span
5190
- }, c$7 = {
5211
+ }, c$6 = {
5191
5212
  type: "rich-text-child",
5192
5213
  label: "Text",
5193
5214
  icon: PaintBrushIcon,
5194
5215
  states: defaultStates,
5195
- presetStyle: s$3
5216
+ presetStyle: s$5
5196
5217
  };
5197
- const p$8 = {
5218
+ const p$7 = {
5198
5219
  b: b$8
5199
5220
  }, l$6 = {
5200
5221
  type: "rich-text-child",
5201
5222
  label: "Bold Text",
5202
5223
  icon: BoldIcon,
5203
5224
  states: defaultStates,
5204
- presetStyle: p$8
5225
+ presetStyle: p$7
5205
5226
  };
5206
- const r$d = {
5227
+ const r$b = {
5207
5228
  i: [
5208
- ...i$3,
5229
+ ...i$1,
5209
5230
  {
5210
5231
  property: "font-style",
5211
5232
  value: { type: "keyword", value: "italic" }
5212
5233
  }
5213
5234
  ]
5214
- }, c$6 = {
5235
+ }, c$5 = {
5215
5236
  type: "rich-text-child",
5216
5237
  label: "Italic Text",
5217
5238
  icon: TextItalicIcon,
5218
5239
  states: defaultStates,
5219
- presetStyle: r$d
5240
+ presetStyle: r$b
5220
5241
  };
5221
5242
  const e$3 = {
5222
5243
  sup
5223
- }, a$8 = {
5244
+ }, a$9 = {
5224
5245
  type: "rich-text-child",
5225
5246
  label: "Superscript Text",
5226
5247
  icon: SuperscriptIcon,
@@ -5229,7 +5250,7 @@ const e$3 = {
5229
5250
  };
5230
5251
  const e$2 = {
5231
5252
  sub
5232
- }, a$7 = {
5253
+ }, a$8 = {
5233
5254
  type: "rich-text-child",
5234
5255
  label: "Subscript Text",
5235
5256
  icon: SubscriptIcon,
@@ -5238,7 +5259,7 @@ const e$2 = {
5238
5259
  };
5239
5260
  const l$5 = {
5240
5261
  button
5241
- }, p$7 = {
5262
+ }, p$6 = {
5242
5263
  icon: ButtonElementIcon,
5243
5264
  type: "container",
5244
5265
  presetStyle: l$5,
@@ -5248,7 +5269,7 @@ const l$5 = {
5248
5269
  { selector: ":enabled", label: "Enabled" }
5249
5270
  ]
5250
5271
  };
5251
- const r$c = {
5272
+ const r$a = {
5252
5273
  input: [
5253
5274
  ...input,
5254
5275
  {
@@ -5256,13 +5277,13 @@ const r$c = {
5256
5277
  value: { type: "keyword", value: "block" }
5257
5278
  }
5258
5279
  ]
5259
- }, c$5 = {
5280
+ }, c$4 = {
5260
5281
  category: "forms",
5261
5282
  type: "control",
5262
5283
  label: "Text Input",
5263
5284
  description: "A single-line text input for collecting string data from your users.",
5264
5285
  icon: FormTextFieldIcon,
5265
- presetStyle: r$c,
5286
+ presetStyle: r$a,
5266
5287
  order: 3,
5267
5288
  states: [
5268
5289
  ...defaultStates,
@@ -5278,7 +5299,7 @@ const r$c = {
5278
5299
  //{ selector: ":read-write", label: "Read Write" },
5279
5300
  ]
5280
5301
  };
5281
- const c$4 = {
5302
+ const c$3 = {
5282
5303
  label: "Webhook Form",
5283
5304
  icon: WebhookFormIcon,
5284
5305
  type: "container",
@@ -5290,22 +5311,22 @@ const c$4 = {
5290
5311
  { selector: "[data-state=success]", label: "Success" }
5291
5312
  ]
5292
5313
  };
5293
- const s$2 = {
5314
+ const s$4 = {
5294
5315
  form: [
5295
5316
  ...form,
5296
5317
  { property: "min-height", value: { type: "unit", unit: "px", value: 20 } }
5297
5318
  ]
5298
- }, n$4 = {
5319
+ }, n$3 = {
5299
5320
  category: "forms",
5300
5321
  type: "container",
5301
5322
  label: "Form",
5302
5323
  description: "Create filters, surveys, searches and more.",
5303
5324
  icon: FormIcon,
5304
5325
  states: defaultStates,
5305
- presetStyle: s$2,
5326
+ presetStyle: s$4,
5306
5327
  order: 0
5307
5328
  };
5308
- const a$6 = {
5329
+ const a$7 = {
5309
5330
  img: [
5310
5331
  ...img,
5311
5332
  // Otherwise on new image insert onto canvas it can overfit screen size multiple times
@@ -5333,10 +5354,10 @@ const a$6 = {
5333
5354
  description: "Add an image asset to the page. Webstudio automatically converts images to WebP or AVIF format and makes them responsive for best performance.",
5334
5355
  icon: ImageIcon,
5335
5356
  states: defaultStates,
5336
- presetStyle: a$6,
5357
+ presetStyle: a$7,
5337
5358
  order: 0
5338
5359
  };
5339
- const r$b = {
5360
+ const r$9 = {
5340
5361
  blockquote: [
5341
5362
  {
5342
5363
  property: "margin-top",
@@ -5383,14 +5404,14 @@ const r$b = {
5383
5404
  value: { type: "rgb", r: 226, g: 226, b: 226, alpha: 1 }
5384
5405
  }
5385
5406
  ]
5386
- }, i$2 = {
5407
+ }, i = {
5387
5408
  type: "container",
5388
5409
  placeholder: "Blockquote",
5389
5410
  icon: BlockquoteIcon,
5390
5411
  states: defaultStates,
5391
- presetStyle: r$b
5412
+ presetStyle: r$9
5392
5413
  };
5393
- const a$5 = {
5414
+ const a$6 = {
5394
5415
  ol: [
5395
5416
  ...ol,
5396
5417
  {
@@ -5425,9 +5446,9 @@ const a$5 = {
5425
5446
  type: "container",
5426
5447
  icon: ListIcon,
5427
5448
  states: defaultStates,
5428
- presetStyle: a$5
5449
+ presetStyle: a$6
5429
5450
  };
5430
- const a$4 = {
5451
+ const a$5 = {
5431
5452
  type: "container",
5432
5453
  placeholder: "List item",
5433
5454
  icon: ListItemIcon,
@@ -5436,7 +5457,7 @@ const a$4 = {
5436
5457
  li
5437
5458
  }
5438
5459
  };
5439
- const p$6 = {
5460
+ const p$5 = {
5440
5461
  hr: [
5441
5462
  ...hr,
5442
5463
  {
@@ -5464,16 +5485,16 @@ const p$6 = {
5464
5485
  value: { type: "keyword", value: "none" }
5465
5486
  }
5466
5487
  ]
5467
- }, n$3 = {
5488
+ }, n$2 = {
5468
5489
  category: "general",
5469
5490
  type: "embed",
5470
5491
  description: "Used to visually divide sections of content, helping to improve readability and organization within a webpage.",
5471
5492
  icon: MinusIcon,
5472
5493
  states: defaultStates,
5473
- presetStyle: p$6,
5494
+ presetStyle: p$5,
5474
5495
  order: 3
5475
5496
  };
5476
- const p$5 = {
5497
+ const p$4 = {
5477
5498
  code: [
5478
5499
  ...code,
5479
5500
  {
@@ -5507,10 +5528,10 @@ const p$5 = {
5507
5528
  description: "Use this component when you want to display code as text on the page.",
5508
5529
  icon: BracesIcon,
5509
5530
  states: defaultStates,
5510
- presetStyle: p$5,
5531
+ presetStyle: p$4,
5511
5532
  order: 5
5512
5533
  };
5513
- const a$3 = {
5534
+ const a$4 = {
5514
5535
  label: [
5515
5536
  ...label,
5516
5537
  { property: "display", value: { type: "keyword", value: "block" } }
@@ -5520,7 +5541,7 @@ const a$3 = {
5520
5541
  label: "Input Label",
5521
5542
  icon: LabelIcon,
5522
5543
  states: defaultStates,
5523
- presetStyle: a$3
5544
+ presetStyle: a$4
5524
5545
  };
5525
5546
  const l$3 = {
5526
5547
  textarea: [
@@ -5532,7 +5553,7 @@ const l$3 = {
5532
5553
  value: { type: "keyword", value: "block" }
5533
5554
  }
5534
5555
  ]
5535
- }, c$3 = {
5556
+ }, c$2 = {
5536
5557
  category: "forms",
5537
5558
  type: "control",
5538
5559
  label: "Text Area",
@@ -5554,7 +5575,7 @@ const l$3 = {
5554
5575
  //{ selector: ":read-write", label: "Read Write" },
5555
5576
  ]
5556
5577
  };
5557
- const a$2 = {
5578
+ const a$3 = {
5558
5579
  input: [
5559
5580
  ...radio,
5560
5581
  {
@@ -5562,11 +5583,11 @@ const a$2 = {
5562
5583
  value: { type: "unit", unit: "em", value: 0.5 }
5563
5584
  }
5564
5585
  ]
5565
- }, s$1 = {
5586
+ }, s$3 = {
5566
5587
  type: "control",
5567
5588
  label: "Radio",
5568
5589
  icon: RadioCheckedIcon,
5569
- presetStyle: a$2,
5590
+ presetStyle: a$3,
5570
5591
  states: [
5571
5592
  ...defaultStates,
5572
5593
  { selector: ":checked", label: "Checked" },
@@ -5602,72 +5623,76 @@ const o$3 = {
5602
5623
  { selector: ":read-write", label: "Read Write" }
5603
5624
  ]
5604
5625
  };
5605
- const r$a = {
5606
- div
5607
- }, c$2 = {
5626
+ const m$2 = {
5608
5627
  type: "container",
5609
5628
  icon: VimeoIcon,
5610
5629
  states: defaultStates,
5611
- presetStyle: r$a,
5612
- constraints: {
5613
- relation: "ancestor",
5614
- component: { $nin: ["Button", "Link", "Heading"] }
5630
+ contentModel: {
5631
+ category: "instance",
5632
+ children: [
5633
+ "instance",
5634
+ "VimeoSpinner",
5635
+ "VimeoPlayButton",
5636
+ "VimeoPreviewImage"
5637
+ ]
5638
+ },
5639
+ presetStyle: {
5640
+ div
5615
5641
  }
5616
5642
  };
5617
- const i$1 = {
5618
- div
5619
- }, c$1 = {
5643
+ const p$3 = {
5620
5644
  type: "container",
5621
5645
  icon: YoutubeIcon,
5622
5646
  states: defaultStates,
5623
- presetStyle: i$1,
5624
- constraints: {
5625
- relation: "ancestor",
5626
- component: { $nin: ["Button", "Link", "Heading"] }
5647
+ contentModel: {
5648
+ category: "instance",
5649
+ children: [
5650
+ "instance",
5651
+ "VimeoSpinner",
5652
+ "VimeoPlayButton",
5653
+ "VimeoPreviewImage"
5654
+ ]
5655
+ },
5656
+ presetStyle: {
5657
+ div
5627
5658
  }
5628
5659
  };
5629
- const i = {
5660
+ const a$2 = {
5630
5661
  ...l$4,
5631
5662
  category: "hidden",
5632
5663
  label: "Preview Image",
5633
- constraints: {
5634
- relation: "ancestor",
5635
- component: { $in: ["Vimeo", "YouTube"] }
5664
+ contentModel: {
5665
+ category: "none",
5666
+ children: ["empty"]
5636
5667
  }
5637
5668
  };
5638
- const r$9 = {
5639
- button
5640
- }, p$4 = {
5669
+ const s$2 = {
5641
5670
  category: "hidden",
5642
5671
  type: "container",
5643
- constraints: [
5644
- {
5645
- relation: "ancestor",
5646
- component: { $in: ["Vimeo", "YouTube"] }
5647
- },
5648
- {
5649
- relation: "ancestor",
5650
- component: { $neq: "Button" }
5651
- }
5652
- ],
5653
5672
  label: "Play Button",
5654
5673
  icon: ButtonElementIcon,
5655
- presetStyle: r$9,
5656
- states: defaultStates
5674
+ states: defaultStates,
5675
+ contentModel: {
5676
+ category: "none",
5677
+ children: ["instance"]
5678
+ },
5679
+ presetStyle: {
5680
+ button
5681
+ }
5657
5682
  };
5658
- const n$2 = {
5659
- div
5660
- }, m$2 = {
5683
+ const s$1 = {
5661
5684
  type: "container",
5662
- constraints: {
5663
- relation: "ancestor",
5664
- component: { $in: ["Vimeo", "YouTube"] }
5665
- },
5666
5685
  icon: BoxIcon,
5667
5686
  states: defaultStates,
5668
- presetStyle: n$2,
5669
5687
  category: "hidden",
5670
- label: "Spinner"
5688
+ label: "Spinner",
5689
+ contentModel: {
5690
+ category: "none",
5691
+ children: ["instance"]
5692
+ },
5693
+ presetStyle: {
5694
+ div
5695
+ }
5671
5696
  };
5672
5697
  const e$1 = {
5673
5698
  category: "xml",
@@ -5701,7 +5726,7 @@ const r$7 = {
5701
5726
  value: { type: "keyword", value: "block" }
5702
5727
  }
5703
5728
  ]
5704
- }, c = {
5729
+ }, c$1 = {
5705
5730
  type: "container",
5706
5731
  icon: SelectIcon,
5707
5732
  presetStyle: r$7,
@@ -5749,42 +5774,36 @@ const r$5 = {
5749
5774
  icon: HeaderIcon,
5750
5775
  type: "container",
5751
5776
  description: "Inserts children into the head of the document",
5752
- constraints: [
5753
- {
5754
- relation: "ancestor",
5755
- component: { $nin: ["HeadSlot"] }
5756
- },
5757
- {
5758
- relation: "child",
5759
- component: { $in: ["HeadLink", "HeadMeta", "HeadTitle"] }
5760
- }
5761
- ]
5777
+ contentModel: {
5778
+ category: "instance",
5779
+ children: ["HeadLink", "HeadMeta", "HeadTitle"]
5780
+ }
5762
5781
  };
5763
- const p$3 = {
5782
+ const p$2 = {
5764
5783
  category: "hidden",
5765
5784
  icon: ResourceIcon,
5766
5785
  type: "embed",
5767
- constraints: {
5768
- relation: "parent",
5769
- component: { $eq: "HeadSlot" }
5786
+ contentModel: {
5787
+ category: "none",
5788
+ children: ["empty"]
5770
5789
  }
5771
5790
  };
5772
- const p$2 = {
5791
+ const p$1 = {
5773
5792
  category: "hidden",
5774
5793
  icon: WindowInfoIcon,
5775
5794
  type: "embed",
5776
- constraints: {
5777
- relation: "parent",
5778
- component: { $eq: "HeadSlot" }
5795
+ contentModel: {
5796
+ category: "none",
5797
+ children: ["empty"]
5779
5798
  }
5780
5799
  };
5781
- const p$1 = {
5800
+ const c = {
5782
5801
  category: "hidden",
5783
5802
  icon: WindowTitleIcon,
5784
5803
  type: "container",
5785
- constraints: {
5786
- relation: "parent",
5787
- component: { $eq: "HeadSlot" }
5804
+ contentModel: {
5805
+ category: "none",
5806
+ children: ["text"]
5788
5807
  }
5789
5808
  };
5790
5809
  const r$4 = {
@@ -5801,51 +5820,51 @@ const r$4 = {
5801
5820
  };
5802
5821
  const baseComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5803
5822
  __proto__: null,
5804
- Blockquote: i$2,
5805
- Body: n$7,
5823
+ Blockquote: i,
5824
+ Body: n$6,
5806
5825
  Bold: l$6,
5807
5826
  Box: v$2,
5808
- Button: p$7,
5827
+ Button: p$6,
5809
5828
  Checkbox: d$3,
5810
5829
  CodeText: d$4,
5811
- Form: c$4,
5830
+ Form: c$3,
5812
5831
  Fragment: o$4,
5813
- HeadLink: p$3,
5814
- HeadMeta: p$2,
5832
+ HeadLink: p$2,
5833
+ HeadMeta: p$1,
5815
5834
  HeadSlot: r$5,
5816
- HeadTitle: p$1,
5835
+ HeadTitle: c,
5817
5836
  Heading: d$6,
5818
- HtmlEmbed: a$d,
5837
+ HtmlEmbed: r$c,
5819
5838
  Image: l$4,
5820
- Input: c$5,
5821
- Italic: c$6,
5839
+ Input: c$4,
5840
+ Italic: c$5,
5822
5841
  Label: m$3,
5823
- Link: n$5,
5842
+ Link: n$4,
5824
5843
  List: d$5,
5825
- ListItem: a$4,
5826
- MarkdownEmbed: t$1,
5844
+ ListItem: a$5,
5845
+ MarkdownEmbed: a$e,
5827
5846
  Option: r$6,
5828
- Paragraph: n$6,
5829
- RadioButton: s$1,
5830
- RemixForm: n$4,
5831
- RichTextLink: a$9,
5832
- Select: c,
5833
- Separator: n$3,
5847
+ Paragraph: n$5,
5848
+ RadioButton: s$3,
5849
+ RemixForm: n$3,
5850
+ RichTextLink: a$a,
5851
+ Select: c$1,
5852
+ Separator: n$2,
5834
5853
  Slot: e$5,
5835
- Span: c$7,
5836
- Subscript: a$7,
5837
- Superscript: a$8,
5838
- Text: s$4,
5839
- Textarea: c$3,
5854
+ Span: c$6,
5855
+ Subscript: a$8,
5856
+ Superscript: a$9,
5857
+ Text: s$6,
5858
+ Textarea: c$2,
5840
5859
  Time: s,
5841
5860
  Video: r$4,
5842
- Vimeo: c$2,
5843
- VimeoPlayButton: p$4,
5844
- VimeoPreviewImage: i,
5845
- VimeoSpinner: m$2,
5861
+ Vimeo: m$2,
5862
+ VimeoPlayButton: s$2,
5863
+ VimeoPreviewImage: a$2,
5864
+ VimeoSpinner: s$1,
5846
5865
  XmlNode: e$1,
5847
5866
  XmlTime: a$1,
5848
- YouTube: c$1
5867
+ YouTube: p$3
5849
5868
  }, Symbol.toStringTag, { value: "Module" }));
5850
5869
  const o$2 = {
5851
5870
  category: "animations",
@@ -5920,11 +5939,11 @@ const animationComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Ob
5920
5939
  }, Symbol.toStringTag, { value: "Module" }));
5921
5940
  const remixComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5922
5941
  __proto__: null,
5923
- Body: n$7,
5924
- Form: c$4,
5925
- Link: n$5,
5926
- RemixForm: n$4,
5927
- RichTextLink: a$9
5942
+ Body: n$6,
5943
+ Form: c$3,
5944
+ Link: n$4,
5945
+ RemixForm: n$3,
5946
+ RichTextLink: a$a
5928
5947
  }, Symbol.toStringTag, { value: "Module" }));
5929
5948
  const r = (t2) => new Proxy(
5930
5949
  {},
@@ -6069,7 +6088,7 @@ const S$1 = {
6069
6088
  }, h$1 = {
6070
6089
  type: "container",
6071
6090
  presetStyle: {
6072
- p: p$a
6091
+ p: p$9
6073
6092
  },
6074
6093
  icon: TextIcon,
6075
6094
  constraints: {
@@ -6798,11 +6817,11 @@ const createFramework$2 = async () => {
6798
6817
  };
6799
6818
  const reactRouterComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6800
6819
  __proto__: null,
6801
- Body: n$7,
6802
- Form: c$4,
6803
- Link: n$5,
6804
- RemixForm: n$4,
6805
- RichTextLink: a$9
6820
+ Body: n$6,
6821
+ Form: c$3,
6822
+ Link: n$4,
6823
+ RemixForm: n$3,
6824
+ RichTextLink: a$a
6806
6825
  }, Symbol.toStringTag, { value: "Module" }));
6807
6826
  const createFramework$1 = async () => {
6808
6827
  const routeTemplatesDir = join("app", "route-templates");
@@ -7622,7 +7641,7 @@ const getDeploymentInstructions = (deployTarget) => {
7622
7641
  }
7623
7642
  };
7624
7643
  const name = "webstudio";
7625
- const version = "0.212.0";
7644
+ const version = "0.213.0";
7626
7645
  const description = "Webstudio CLI";
7627
7646
  const author = "Webstudio <github@webstudio.is>";
7628
7647
  const homepage = "https://webstudio.is";
@@ -7670,15 +7689,15 @@ const dependencies = {
7670
7689
  zod: "^3.24.2"
7671
7690
  };
7672
7691
  const devDependencies = {
7673
- "@netlify/vite-plugin-react-router": "^1.0.0",
7674
- "@react-router/dev": "^7.4.0",
7675
- "@react-router/fs-routes": "^7.4.0",
7676
- "@remix-run/cloudflare": "^2.16.2",
7677
- "@remix-run/cloudflare-pages": "^2.16.2",
7678
- "@remix-run/dev": "^2.16.2",
7679
- "@remix-run/node": "^2.16.2",
7680
- "@remix-run/react": "^2.16.2",
7681
- "@remix-run/server-runtime": "^2.16.2",
7692
+ "@netlify/vite-plugin-react-router": "^1.0.1",
7693
+ "@react-router/dev": "^7.5.0",
7694
+ "@react-router/fs-routes": "^7.5.0",
7695
+ "@remix-run/cloudflare": "^2.16.4",
7696
+ "@remix-run/cloudflare-pages": "^2.16.4",
7697
+ "@remix-run/dev": "^2.16.4",
7698
+ "@remix-run/node": "^2.16.4",
7699
+ "@remix-run/react": "^2.16.4",
7700
+ "@remix-run/server-runtime": "^2.16.4",
7682
7701
  "@types/react": "^18.2.70",
7683
7702
  "@types/react-dom": "^18.2.25",
7684
7703
  "@types/yargs": "^17.0.33",
@@ -7700,9 +7719,9 @@ const devDependencies = {
7700
7719
  prettier: "3.5.3",
7701
7720
  react: "18.3.0-canary-14898b6a9-20240318",
7702
7721
  "react-dom": "18.3.0-canary-14898b6a9-20240318",
7703
- "react-router": "^7.4.0",
7722
+ "react-router": "^7.5.0",
7704
7723
  "ts-expect": "^1.3.0",
7705
- vike: "^0.4.227",
7724
+ vike: "^0.4.228",
7706
7725
  vite: "^5.4.11",
7707
7726
  vitest: "^3.0.8",
7708
7727
  wrangler: "^3.63.2"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webstudio",
3
- "version": "0.212.0",
3
+ "version": "0.213.0",
4
4
  "description": "Webstudio CLI",
5
5
  "author": "Webstudio <github@webstudio.is>",
6
6
  "homepage": "https://webstudio.is",
@@ -43,15 +43,15 @@
43
43
  "zod": "^3.24.2"
44
44
  },
45
45
  "devDependencies": {
46
- "@netlify/vite-plugin-react-router": "^1.0.0",
47
- "@react-router/dev": "^7.4.0",
48
- "@react-router/fs-routes": "^7.4.0",
49
- "@remix-run/cloudflare": "^2.16.2",
50
- "@remix-run/cloudflare-pages": "^2.16.2",
51
- "@remix-run/dev": "^2.16.2",
52
- "@remix-run/node": "^2.16.2",
53
- "@remix-run/react": "^2.16.2",
54
- "@remix-run/server-runtime": "^2.16.2",
46
+ "@netlify/vite-plugin-react-router": "^1.0.1",
47
+ "@react-router/dev": "^7.5.0",
48
+ "@react-router/fs-routes": "^7.5.0",
49
+ "@remix-run/cloudflare": "^2.16.4",
50
+ "@remix-run/cloudflare-pages": "^2.16.4",
51
+ "@remix-run/dev": "^2.16.4",
52
+ "@remix-run/node": "^2.16.4",
53
+ "@remix-run/react": "^2.16.4",
54
+ "@remix-run/server-runtime": "^2.16.4",
55
55
  "@types/react": "^18.2.70",
56
56
  "@types/react-dom": "^18.2.25",
57
57
  "@types/yargs": "^17.0.33",
@@ -62,23 +62,23 @@
62
62
  "prettier": "3.5.3",
63
63
  "react": "18.3.0-canary-14898b6a9-20240318",
64
64
  "react-dom": "18.3.0-canary-14898b6a9-20240318",
65
- "react-router": "^7.4.0",
65
+ "react-router": "^7.5.0",
66
66
  "ts-expect": "^1.3.0",
67
- "vike": "^0.4.227",
67
+ "vike": "^0.4.228",
68
68
  "vite": "^5.4.11",
69
69
  "vitest": "^3.0.8",
70
70
  "wrangler": "^3.63.2",
71
- "@webstudio-is/css-engine": "0.212.0",
72
- "@webstudio-is/http-client": "0.212.0",
73
- "@webstudio-is/image": "0.212.0",
74
- "@webstudio-is/react-sdk": "0.212.0",
75
- "@webstudio-is/sdk": "0.212.0",
76
- "@webstudio-is/sdk-components-animation": "0.212.0",
77
- "@webstudio-is/sdk-components-react": "0.212.0",
78
- "@webstudio-is/sdk-components-react-radix": "0.212.0",
79
- "@webstudio-is/sdk-components-react-remix": "0.212.0",
80
- "@webstudio-is/sdk-components-react-router": "0.212.0",
81
- "@webstudio-is/tsconfig": "1.0.7"
71
+ "@webstudio-is/css-engine": "0.213.0",
72
+ "@webstudio-is/http-client": "0.213.0",
73
+ "@webstudio-is/image": "0.213.0",
74
+ "@webstudio-is/react-sdk": "0.213.0",
75
+ "@webstudio-is/sdk-components-animation": "0.213.0",
76
+ "@webstudio-is/sdk-components-react": "0.213.0",
77
+ "@webstudio-is/sdk-components-react-radix": "0.213.0",
78
+ "@webstudio-is/sdk-components-react-remix": "0.213.0",
79
+ "@webstudio-is/sdk-components-react-router": "0.213.0",
80
+ "@webstudio-is/tsconfig": "1.0.7",
81
+ "@webstudio-is/sdk": "0.213.0"
82
82
  },
83
83
  "scripts": {
84
84
  "typecheck": "tsc",
@@ -12,8 +12,8 @@
12
12
  "build-cf-types": "wrangler types"
13
13
  },
14
14
  "dependencies": {
15
- "@remix-run/cloudflare": "2.16.2",
16
- "@remix-run/cloudflare-pages": "2.16.2"
15
+ "@remix-run/cloudflare": "2.16.4",
16
+ "@remix-run/cloudflare-pages": "2.16.4"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@cloudflare/workers-types": "^4.20240620.0",
@@ -8,22 +8,22 @@
8
8
  "typecheck": "tsc"
9
9
  },
10
10
  "dependencies": {
11
- "@remix-run/node": "2.16.2",
12
- "@remix-run/react": "2.16.2",
13
- "@remix-run/server-runtime": "2.16.2",
14
- "@webstudio-is/image": "0.212.0",
15
- "@webstudio-is/react-sdk": "0.212.0",
16
- "@webstudio-is/sdk": "0.212.0",
17
- "@webstudio-is/sdk-components-react": "0.212.0",
18
- "@webstudio-is/sdk-components-animation": "0.212.0",
19
- "@webstudio-is/sdk-components-react-radix": "0.212.0",
20
- "@webstudio-is/sdk-components-react-remix": "0.212.0",
11
+ "@remix-run/node": "2.16.4",
12
+ "@remix-run/react": "2.16.4",
13
+ "@remix-run/server-runtime": "2.16.4",
14
+ "@webstudio-is/image": "0.213.0",
15
+ "@webstudio-is/react-sdk": "0.213.0",
16
+ "@webstudio-is/sdk": "0.213.0",
17
+ "@webstudio-is/sdk-components-react": "0.213.0",
18
+ "@webstudio-is/sdk-components-animation": "0.213.0",
19
+ "@webstudio-is/sdk-components-react-radix": "0.213.0",
20
+ "@webstudio-is/sdk-components-react-remix": "0.213.0",
21
21
  "isbot": "^5.1.25",
22
22
  "react": "18.3.0-canary-14898b6a9-20240318",
23
23
  "react-dom": "18.3.0-canary-14898b6a9-20240318"
24
24
  },
25
25
  "devDependencies": {
26
- "@remix-run/dev": "2.16.2",
26
+ "@remix-run/dev": "2.16.4",
27
27
  "@types/react": "^18.2.70",
28
28
  "@types/react-dom": "^18.2.25",
29
29
  "typescript": "5.8.2",
@@ -8,19 +8,19 @@
8
8
  "typecheck": "tsc"
9
9
  },
10
10
  "dependencies": {
11
- "@react-router/dev": "^7.4.0",
12
- "@react-router/fs-routes": "^7.4.0",
13
- "@webstudio-is/image": "0.212.0",
14
- "@webstudio-is/react-sdk": "0.212.0",
15
- "@webstudio-is/sdk": "0.212.0",
16
- "@webstudio-is/sdk-components-animation": "0.212.0",
17
- "@webstudio-is/sdk-components-react-radix": "0.212.0",
18
- "@webstudio-is/sdk-components-react-router": "0.212.0",
19
- "@webstudio-is/sdk-components-react": "0.212.0",
11
+ "@react-router/dev": "^7.5.0",
12
+ "@react-router/fs-routes": "^7.5.0",
13
+ "@webstudio-is/image": "0.213.0",
14
+ "@webstudio-is/react-sdk": "0.213.0",
15
+ "@webstudio-is/sdk": "0.213.0",
16
+ "@webstudio-is/sdk-components-animation": "0.213.0",
17
+ "@webstudio-is/sdk-components-react-radix": "0.213.0",
18
+ "@webstudio-is/sdk-components-react-router": "0.213.0",
19
+ "@webstudio-is/sdk-components-react": "0.213.0",
20
20
  "isbot": "^5.1.25",
21
21
  "react": "18.3.0-canary-14898b6a9-20240318",
22
22
  "react-dom": "18.3.0-canary-14898b6a9-20240318",
23
- "react-router": "^7.4.0",
23
+ "react-router": "^7.5.0",
24
24
  "vite": "^5.4.11"
25
25
  },
26
26
  "devDependencies": {
@@ -3,8 +3,8 @@
3
3
  "start": "react-router-serve ./build/server/index.js"
4
4
  },
5
5
  "dependencies": {
6
- "@react-router/node": "^7.4.0",
7
- "@react-router/serve": "^7.4.0",
6
+ "@react-router/node": "^7.5.0",
7
+ "@react-router/serve": "^7.5.0",
8
8
  "h3": "^1.15.1",
9
9
  "ipx": "^3.0.3"
10
10
  }
@@ -4,7 +4,7 @@
4
4
  "deploy": "npx netlify-cli deploy --build --prod"
5
5
  },
6
6
  "dependencies": {
7
- "@netlify/vite-plugin-react-router": "^1.0.0",
8
- "@react-router/node": "^7.4.0"
7
+ "@netlify/vite-plugin-react-router": "^1.0.1",
8
+ "@react-router/node": "^7.5.0"
9
9
  }
10
10
  }
@@ -3,7 +3,7 @@
3
3
  "deploy": "npx vercel deploy"
4
4
  },
5
5
  "dependencies": {
6
- "@react-router/node": "^7.4.0",
6
+ "@react-router/node": "^7.5.0",
7
7
  "@vercel/react-router": "^1.1.0"
8
8
  }
9
9
  }
@@ -8,15 +8,15 @@
8
8
  "typecheck": "tsc"
9
9
  },
10
10
  "dependencies": {
11
- "@webstudio-is/image": "0.212.0",
12
- "@webstudio-is/react-sdk": "0.212.0",
13
- "@webstudio-is/sdk": "0.212.0",
14
- "@webstudio-is/sdk-components-react": "0.212.0",
15
- "@webstudio-is/sdk-components-animation": "0.212.0",
16
- "@webstudio-is/sdk-components-react-radix": "0.212.0",
11
+ "@webstudio-is/image": "0.213.0",
12
+ "@webstudio-is/react-sdk": "0.213.0",
13
+ "@webstudio-is/sdk": "0.213.0",
14
+ "@webstudio-is/sdk-components-react": "0.213.0",
15
+ "@webstudio-is/sdk-components-animation": "0.213.0",
16
+ "@webstudio-is/sdk-components-react-radix": "0.213.0",
17
17
  "react": "18.3.0-canary-14898b6a9-20240318",
18
18
  "react-dom": "18.3.0-canary-14898b6a9-20240318",
19
- "vike": "^0.4.227"
19
+ "vike": "^0.4.228"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/react": "^18.2.70",