webstudio 0.210.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
@@ -1657,6 +1657,7 @@ var FormTextFieldIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" vie
1657
1657
  var FormIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M13.184 5.5h.731a.75.75 0 0 0 .75-.75v-1.5a.75.75 0 0 0-.75-.75H2.085a.75.75 0 0 0-.75.75v1.5c0 .414.336.75.75.75h11.099ZM13.184 10.5h.732a.75.75 0 0 0 .75-.75v-1.5a.75.75 0 0 0-.75-.75H2.084a.75.75 0 0 0-.75.75v1.5c0 .414.336.75.75.75h11.099Z"/><path fill="currentColor" d="M6.613 14.5h.222a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-5.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5H6.613Z"/></svg>`;
1658
1658
  var HeaderIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12.667 2H3.333C2.597 2 2 2.597 2 3.333v9.334C2 13.403 2.597 14 3.333 14h9.334c.736 0 1.333-.597 1.333-1.333V3.333C14 2.597 13.403 2 12.667 2ZM4 4h8"/></svg>`;
1659
1659
  var HeadingIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M4 8h8M4 13.333V2.667M12 13.333V2.667"/></svg>`;
1660
+ var HtmlElementIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M13.556 2H3.444C2.647 2 2 2.647 2 3.444v10.112C2 14.353 2.647 15 3.444 15h10.112c.797 0 1.444-.647 1.444-1.444V3.444C15 2.647 14.353 2 13.556 2Z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.5 10 12 8.5 10.5 7M6 7 4.5 8.5 6 10m3.188-4.5-1.876 6"/></svg>`;
1660
1661
  var ImageIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12.667 2H3.333C2.597 2 2 2.597 2 3.333v9.334C2 13.403 2.597 14 3.333 14h9.334c.736 0 1.333-.597 1.333-1.333V3.333C14 2.597 13.403 2 12.667 2Z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M6 7.333a1.333 1.333 0 1 0 0-2.666 1.333 1.333 0 0 0 0 2.666ZM14 10l-2.057-2.057a1.333 1.333 0 0 0-1.886 0L4 14"/></svg>`;
1661
1662
  var ItemIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M2 6h.007M5.333 10H14M5.333 6H14"/></svg>`;
1662
1663
  var LabelIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12.667 2H3.333C2.597 2 2 2.597 2 3.333v9.334C2 13.403 2.597 14 3.333 14h9.334c.736 0 1.333-.597 1.333-1.333V3.333C14 2.597 13.403 2 12.667 2Z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M6.476 11.074V4.926m0 6.148h3.77v-.615m-3.77.615h-.722m.722-6.148h.632m-.632 0h-.722"/></svg>`;
@@ -1687,12 +1688,14 @@ var TextItalicIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBo
1687
1688
  var TextIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M2.667 4.667v-2h10.666v2M6 13.333h4M8 2.667v10.666"/></svg>`;
1688
1689
  var TooltipIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="#000" stroke-linecap="round" stroke-linejoin="round" d="M14 10a1.333 1.333 0 0 1-1.333 1.333h-8L2 14V3.333A1.333 1.333 0 0 1 3.333 2h9.334A1.333 1.333 0 0 1 14 3.333V10Z"/></svg>`;
1689
1690
  var TriggerIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M11.915 7.354v-.647a1.294 1.294 0 1 0-2.587 0"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M9.328 6.707V6.06a1.294 1.294 0 1 0-2.587 0v.647"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M6.74 6.383V2.826a1.293 1.293 0 1 0-2.586 0v6.467"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M11.914 7.353a1.293 1.293 0 0 1 2.587 0v1.94a5.174 5.174 0 0 1-5.174 5.174H8.034c-1.81 0-2.91-.556-3.874-1.513l-2.328-2.328a1.293 1.293 0 0 1 1.83-1.824L4.8 9.94"/></svg>`;
1691
+ var VideoIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path fill="currentColor" fill-rule="evenodd" d="M1.833 5.333c0-.46.373-.833.834-.833h6.666c.46 0 .834.373.834.833v5.334c0 .46-.374.833-.834.833H2.667a.833.833 0 0 1-.834-.833V5.333ZM2.667 3.5C1.654 3.5.833 4.32.833 5.333v5.334c0 1.012.821 1.833 1.834 1.833h6.666c1.013 0 1.834-.82 1.834-1.833V9.6l2.704 1.803a.833.833 0 0 0 1.296-.693V5.247a.833.833 0 0 0-1.254-.72l-2.746 1.602v-.796c0-1.012-.821-1.833-1.834-1.833H2.667Zm8.5 3.787V8.4l3 2V5.537l-3 1.75Z" clip-rule="evenodd"/></svg>`;
1690
1692
  var ViewportIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" width="100%" height="100%" style="display: block;"><path fill-rule="evenodd" d="M5.173 1.35h.157a.65.65 0 0 1 0 1.3H5.2c-.57 0-.96 0-1.26.025-.294.024-.446.068-.553.122a1.35 1.35 0 0 0-.59.59c-.054.107-.098.259-.122.552-.025.301-.025.69-.025 1.261v.13a.65.65 0 0 1-1.3 0v-.157c0-.537 0-.98.03-1.34.03-.373.095-.715.259-1.036a2.65 2.65 0 0 1 1.158-1.158c.32-.164.663-.229 1.036-.26.36-.029.803-.029 1.34-.029Zm6.888 1.325c-.301-.024-.69-.025-1.261-.025h-.13a.65.65 0 1 1 0-1.3h.157c.537 0 .98 0 1.34.03.373.03.715.095 1.036.259.499.254.904.66 1.158 1.158.164.32.229.663.26 1.036.029.36.029.803.029 1.34v.157a.65.65 0 1 1-1.3 0V5.2c0-.57 0-.96-.025-1.26-.024-.294-.068-.446-.122-.553a1.35 1.35 0 0 0-.59-.59c-.107-.054-.26-.098-.552-.122ZM2 10.02a.65.65 0 0 1 .65.65v.13c0 .57 0 .96.025 1.26.024.294.068.446.122.553.13.254.336.46.59.59.107.054.259.098.552.122.301.025.69.025 1.261.025h.13a.65.65 0 1 1 0 1.3h-.157c-.537 0-.98 0-1.34-.03-.373-.03-.715-.095-1.036-.259a2.65 2.65 0 0 1-1.158-1.158c-.164-.32-.23-.663-.26-1.037-.029-.36-.029-.802-.029-1.34v-.156a.65.65 0 0 1 .65-.65Zm12 0a.65.65 0 0 1 .65.65v.157c0 .537 0 .98-.03 1.34-.03.373-.095.715-.259 1.036a2.65 2.65 0 0 1-1.158 1.158c-.32.164-.663.23-1.037.26-.36.029-.802.029-1.34.029h-.156a.65.65 0 1 1 0-1.3h.13c.57 0 .96 0 1.26-.025.294-.024.446-.068.553-.122.254-.13.46-.336.59-.59.054-.107.098-.259.122-.552.025-.301.025-.69.025-1.261v-.13a.65.65 0 0 1 .65-.65ZM8 10.033a2.033 2.033 0 1 0 0-4.066 2.033 2.033 0 0 0 0 4.066Zm0 1.3a3.333 3.333 0 1 0 0-6.666 3.333 3.333 0 0 0 0 6.666Z" clip-rule="evenodd"/></svg>`;
1691
1693
  var VimeoIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M14.993 4.801c-.062 1.363-1.014 3.228-2.855 5.597-1.903 2.473-3.514 3.71-4.83 3.71-.817 0-1.508-.753-2.072-2.26l-1.13-4.143c-.419-1.506-.868-2.259-1.349-2.26a4.332 4.332 0 0 0-1.099.66L1 5.257c.69-.607 1.372-1.214 2.043-1.822.921-.796 1.613-1.215 2.074-1.257 1.09-.105 1.76.64 2.012 2.234.272 1.72.461 2.79.566 3.208.315 1.427.66 2.14 1.038 2.14.292 0 .733-.463 1.32-1.39.586-.925.9-1.63.942-2.113.084-.798-.23-1.198-.942-1.199-.357.005-.71.084-1.036.23.688-2.253 2.002-3.349 3.942-3.285 1.439.042 2.117.975 2.034 2.798Z"/></svg>`;
1692
1694
  var WebhookFormIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12 11.32H8.007c-.734 0-1.3.627-1.654 1.267a2.666 2.666 0 0 1-5.02-1.254A2.62 2.62 0 0 1 1.713 10"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M4 11.333 6.087 7.48c.353-.647.066-1.453-.334-2.067a2.667 2.667 0 1 1 4.594-2.706"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m8 4 2.087 3.82c.353.647 1.18.847 1.913.847A2.667 2.667 0 0 1 12 14"/></svg>`;
1693
1695
  var WindowInfoIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12.667 2H3.333C2.597 2 2 2.597 2 3.333v9.334C2 13.403 2.597 14 3.333 14h9.334c.736 0 1.333-.597 1.333-1.333V3.333C14 2.597 13.403 2 12.667 2ZM8 11.516V7.853"/><rect width="1.4" height="1.4" x="7.3" y="4.484" fill="currentColor" rx=".7"/></svg>`;
1694
1696
  var WindowTitleIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12.667 4H3.333C2.597 4 2 4.497 2 5.111v7.778C2 13.503 2.597 14 3.333 14h9.334c.736 0 1.333-.498 1.333-1.111V5.11C14 4.497 13.403 4 12.667 4ZM4 2h8"/></svg>`;
1695
1697
  var XmlIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12.163 9.02v-4L8.83 1.686h-5.5A1.333 1.333 0 0 0 1.997 3.02v6"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M8.164 2.186v1.667a1.333 1.333 0 0 0 1.333 1.333h2.667M1.997 11.314l3 3M4.997 11.314l-3 3M6.997 14.314v-3l1.5 1.523 1.5-1.523v3M12.163 11.314v3h1.84"/></svg>`;
1698
+ var Youtube1cIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path fill-rule="evenodd" d="M13.47 3.299a1.771 1.771 0 0 1 1.238 1.263C15 5.675 15 8 15 8s0 2.325-.293 3.438a1.771 1.771 0 0 1-1.238 1.263C12.38 13 8 13 8 13s-4.378 0-5.47-.299a1.771 1.771 0 0 1-1.237-1.263C1 10.325 1 8 1 8s0-2.325.293-3.438A1.771 1.771 0 0 1 2.53 3.299C3.622 3 8 3 8 3s4.378 0 5.47.299Zm-3.232 4.7L6.6 10.144V5.857L10.238 8Z" clip-rule="evenodd"/></svg>`;
1696
1699
  var YoutubeIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path d="M.892 11.528a18.047 18.047 0 0 1 0-7.482A1.496 1.496 0 0 1 1.94 3a37.082 37.082 0 0 1 12.12 0 1.497 1.497 0 0 1 1.048 1.047 18.046 18.046 0 0 1 0 7.482 1.497 1.497 0 0 1-1.048 1.048 37.077 37.077 0 0 1-12.12 0 1.497 1.497 0 0 1-1.048-1.048Z"/><path d="m6.5 10.3 4-2.4-4-2.4v4.8Z"/></svg>`;
1697
1700
  var AssetId = z.string();
1698
1701
  var baseAsset = {
@@ -1778,10 +1781,7 @@ var HomePage = z.object({
1778
1781
  ...commonPageFields,
1779
1782
  path: HomePagePath
1780
1783
  });
1781
- var PagePath = z.string().refine((path) => path !== "", "Can't be empty").refine((path) => path !== "/", "Can't be just a /").refine(
1782
- (path) => path === "" || path.startsWith("/"),
1783
- "Must start with a / or a full URL e.g. https://website.org"
1784
- ).refine((path) => path.endsWith("/") === false, "Can't end with a /").refine((path) => path.includes("//") === false, "Can't contain repeating /").refine(
1784
+ var DefaultPagePage = z.string().refine((path) => path !== "", "Can't be empty").refine((path) => path !== "/", "Can't be just a /").refine((path) => path.endsWith("/") === false, "Can't end with a /").refine((path) => path.includes("//") === false, "Can't contain repeating /").refine(
1785
1785
  (path) => /^[-_a-z0-9*:?\\/.]*$/.test(path),
1786
1786
  "Only a-z, 0-9, -, _, /, :, ?, . and * are allowed"
1787
1787
  ).refine(
@@ -1794,6 +1794,14 @@ var PagePath = z.string().refine((path) => path !== "", "Can't be empty").refine
1794
1794
  (path) => path !== "/build" && path.startsWith("/build/") === false,
1795
1795
  "/build prefix is reserved for the system"
1796
1796
  );
1797
+ var PagePath = DefaultPagePage.refine(
1798
+ (path) => path === "" || path.startsWith("/"),
1799
+ "Must start with a / or a full URL e.g. https://website.org"
1800
+ );
1801
+ DefaultPagePage.refine(
1802
+ (path) => path === "" || path.startsWith("/"),
1803
+ "Must start with a / and it must be full path e.g. /project/id"
1804
+ );
1797
1805
  var Page = z.object({
1798
1806
  ...commonPageFields,
1799
1807
  path: PagePath
@@ -1854,6 +1862,7 @@ var Instance = z.object({
1854
1862
  type: z.literal("instance"),
1855
1863
  id: InstanceId,
1856
1864
  component: z.string(),
1865
+ tag: z.string().optional(),
1857
1866
  label: z.string().optional(),
1858
1867
  children: z.array(InstanceChild)
1859
1868
  });
@@ -2024,6 +2033,23 @@ var rangeUnitValueSchema = z.union([
2024
2033
  z.object({
2025
2034
  type: z.literal("unparsed"),
2026
2035
  value: z.string()
2036
+ }),
2037
+ z.object({
2038
+ type: z.literal("var"),
2039
+ value: z.string()
2040
+ })
2041
+ ]);
2042
+ var TIME_UNITS = ["ms", "s"];
2043
+ var timeUnitSchema = literalUnion(TIME_UNITS);
2044
+ var durationUnitValueSchema = z.union([
2045
+ z.object({
2046
+ type: z.literal("unit"),
2047
+ value: z.number(),
2048
+ unit: timeUnitSchema
2049
+ }),
2050
+ z.object({
2051
+ type: z.literal("var"),
2052
+ value: z.string()
2027
2053
  })
2028
2054
  ]);
2029
2055
  var insetUnitValueSchema = z.union([
@@ -2045,8 +2071,9 @@ var keyframeEffectOptionsSchema = z.object({
2045
2071
  z.literal("forwards"),
2046
2072
  z.literal("backwards"),
2047
2073
  z.literal("both")
2048
- ]).optional()
2074
+ ]).optional(),
2049
2075
  // FillMode
2076
+ duration: durationUnitValueSchema.optional()
2050
2077
  });
2051
2078
  var scrollNamedRangeSchema = z.union([
2052
2079
  z.literal("start"),
@@ -2295,6 +2322,13 @@ var common = {
2295
2322
  description: z.string().optional(),
2296
2323
  required: z.boolean()
2297
2324
  };
2325
+ var Tag = z.object({
2326
+ ...common,
2327
+ control: z.literal("tag"),
2328
+ type: z.literal("string"),
2329
+ defaultValue: z.undefined().optional(),
2330
+ options: z.array(z.string())
2331
+ });
2298
2332
  var Number = z.object({
2299
2333
  ...common,
2300
2334
  control: z.literal("number"),
@@ -2438,6 +2472,7 @@ var AnimationAction = z.object({
2438
2472
  defaultValue: z.undefined().optional()
2439
2473
  });
2440
2474
  var PropMeta = z.union([
2475
+ Tag,
2441
2476
  Number,
2442
2477
  Range,
2443
2478
  Text,
@@ -2582,6 +2617,23 @@ var defaultStates = [
2582
2617
  { selector: ":focus-visible", label: "Focus Visible" },
2583
2618
  { selector: ":focus-within", label: "Focus Within" }
2584
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
+ });
2585
2637
  z.object({
2586
2638
  category: z.enum(componentCategories).optional(),
2587
2639
  // container - can accept other components with dnd or be edited as text
@@ -2595,6 +2647,7 @@ z.object({
2595
2647
  */
2596
2648
  placeholder: z.string().optional(),
2597
2649
  constraints: Matchers.optional(),
2650
+ contentModel: ContentModel.optional(),
2598
2651
  // when this field is specified component receives
2599
2652
  // prop with index of same components withiin specified ancestor
2600
2653
  // important to automatically enumerate collections without
@@ -2633,6 +2686,12 @@ var rootMeta = {
2633
2686
  html
2634
2687
  }
2635
2688
  };
2689
+ var elementComponent = "ws:element";
2690
+ var elementMeta = {
2691
+ type: "container",
2692
+ label: "Element",
2693
+ icon: HtmlElementIcon
2694
+ };
2636
2695
  var collectionComponent = "ws:collection";
2637
2696
  var collectionMeta = {
2638
2697
  type: "container",
@@ -2644,46 +2703,42 @@ var descendantMeta = {
2644
2703
  type: "control",
2645
2704
  label: "Descendant",
2646
2705
  icon: PaintBrushIcon,
2706
+ contentModel: {
2707
+ category: "none",
2708
+ children: ["empty"]
2709
+ },
2647
2710
  // @todo infer possible presets
2648
- presetStyle: {},
2649
- constraints: {
2650
- relation: "parent",
2651
- component: { $in: ["HtmlEmbed", "MarkdownEmbed"] }
2652
- }
2711
+ presetStyle: {}
2653
2712
  };
2654
2713
  var blockComponent = "ws:block";
2655
2714
  var blockTemplateComponent = "ws:block-template";
2656
2715
  var blockTemplateMeta = {
2657
2716
  type: "container",
2658
2717
  icon: AddTemplateInstanceIcon,
2659
- constraints: {
2660
- relation: "parent",
2661
- component: { $eq: blockComponent }
2718
+ contentModel: {
2719
+ category: "none",
2720
+ children: ["instance"]
2662
2721
  }
2663
2722
  };
2664
2723
  var blockMeta = {
2665
2724
  type: "container",
2666
2725
  label: "Content Block",
2667
2726
  icon: ContentBlockIcon,
2668
- constraints: [
2669
- {
2670
- relation: "ancestor",
2671
- component: { $nin: [collectionComponent, blockComponent] }
2672
- },
2673
- {
2674
- relation: "child",
2675
- component: { $eq: blockTemplateComponent }
2676
- }
2677
- ]
2727
+ contentModel: {
2728
+ category: "instance",
2729
+ children: [blockTemplateComponent, "instance"]
2730
+ // @todo prevent deleting block template
2731
+ }
2678
2732
  };
2679
2733
  var coreMetas = {
2680
2734
  [rootComponent]: rootMeta,
2735
+ [elementComponent]: elementMeta,
2681
2736
  [collectionComponent]: collectionMeta,
2682
2737
  [descendantComponent]: descendantMeta,
2683
2738
  [blockComponent]: blockMeta,
2684
2739
  [blockTemplateComponent]: blockTemplateMeta
2685
2740
  };
2686
- var isCoreComponent = (component) => component === rootComponent || component === collectionComponent || component === descendantComponent || component === blockComponent || component === blockTemplateComponent;
2741
+ var isCoreComponent = (component) => component === rootComponent || component === elementComponent || component === collectionComponent || component === descendantComponent || component === blockComponent || component === blockTemplateComponent;
2687
2742
  var ROOT_INSTANCE_ID = ":root";
2688
2743
  var traverseInstances = (instances, instanceId, callback) => {
2689
2744
  const instance = instances.get(instanceId);
@@ -3428,6 +3483,8 @@ ${userSheet.cssText}`,
3428
3483
  classes
3429
3484
  };
3430
3485
  };
3486
+ var tagProperty = "data-ws-tag";
3487
+ var indexProperty = "data-ws-index";
3431
3488
  var getRemixSegment = (segment) => {
3432
3489
  var _a2, _b2;
3433
3490
  if (segment === "*") {
@@ -3575,7 +3632,6 @@ var normalizeProps = ({
3575
3632
  return newProps;
3576
3633
  };
3577
3634
  var showAttribute = "data-ws-show";
3578
- var indexAttribute = "data-ws-index";
3579
3635
  var attributeNameStartChar = "A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";
3580
3636
  var attributeNameChar = attributeNameStartChar + ":\\-0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";
3581
3637
  var validAttributeNameRegex = new RegExp(
@@ -3598,6 +3654,502 @@ var isAttributeNameSafe = (attributeName) => {
3598
3654
  illegalAttributeNameCache.set(attributeName, true);
3599
3655
  return false;
3600
3656
  };
3657
+ var standardAttributesToReactProps = {
3658
+ // HTML
3659
+ accept: "accept",
3660
+ acceptcharset: "acceptCharset",
3661
+ "accept-charset": "acceptCharset",
3662
+ accesskey: "accessKey",
3663
+ action: "action",
3664
+ allowfullscreen: "allowFullScreen",
3665
+ alt: "alt",
3666
+ as: "as",
3667
+ async: "async",
3668
+ autocapitalize: "autoCapitalize",
3669
+ autocomplete: "autoComplete",
3670
+ autocorrect: "autoCorrect",
3671
+ autofocus: "autoFocus",
3672
+ autoplay: "autoPlay",
3673
+ autosave: "autoSave",
3674
+ capture: "capture",
3675
+ cellpadding: "cellPadding",
3676
+ cellspacing: "cellSpacing",
3677
+ challenge: "challenge",
3678
+ charset: "charSet",
3679
+ checked: "checked",
3680
+ children: "children",
3681
+ cite: "cite",
3682
+ class: "className",
3683
+ classid: "classID",
3684
+ classname: "className",
3685
+ cols: "cols",
3686
+ colspan: "colSpan",
3687
+ content: "content",
3688
+ contenteditable: "contentEditable",
3689
+ contextmenu: "contextMenu",
3690
+ controls: "controls",
3691
+ controlslist: "controlsList",
3692
+ coords: "coords",
3693
+ crossorigin: "crossOrigin",
3694
+ dangerouslysetinnerhtml: "dangerouslySetInnerHTML",
3695
+ data: "data",
3696
+ datetime: "dateTime",
3697
+ default: "default",
3698
+ defaultchecked: "defaultChecked",
3699
+ defaultvalue: "defaultValue",
3700
+ defer: "defer",
3701
+ dir: "dir",
3702
+ disabled: "disabled",
3703
+ disablepictureinpicture: "disablePictureInPicture",
3704
+ disableremoteplayback: "disableRemotePlayback",
3705
+ download: "download",
3706
+ draggable: "draggable",
3707
+ enctype: "encType",
3708
+ enterkeyhint: "enterKeyHint",
3709
+ fetchpriority: "fetchPriority",
3710
+ for: "htmlFor",
3711
+ form: "form",
3712
+ formmethod: "formMethod",
3713
+ formaction: "formAction",
3714
+ formenctype: "formEncType",
3715
+ formnovalidate: "formNoValidate",
3716
+ formtarget: "formTarget",
3717
+ frameborder: "frameBorder",
3718
+ headers: "headers",
3719
+ height: "height",
3720
+ hidden: "hidden",
3721
+ high: "high",
3722
+ href: "href",
3723
+ hreflang: "hrefLang",
3724
+ htmlfor: "htmlFor",
3725
+ httpequiv: "httpEquiv",
3726
+ "http-equiv": "httpEquiv",
3727
+ icon: "icon",
3728
+ id: "id",
3729
+ imagesizes: "imageSizes",
3730
+ imagesrcset: "imageSrcSet",
3731
+ inert: "inert",
3732
+ innerhtml: "innerHTML",
3733
+ inputmode: "inputMode",
3734
+ integrity: "integrity",
3735
+ is: "is",
3736
+ itemid: "itemID",
3737
+ itemprop: "itemProp",
3738
+ itemref: "itemRef",
3739
+ itemscope: "itemScope",
3740
+ itemtype: "itemType",
3741
+ keyparams: "keyParams",
3742
+ keytype: "keyType",
3743
+ kind: "kind",
3744
+ label: "label",
3745
+ lang: "lang",
3746
+ list: "list",
3747
+ loop: "loop",
3748
+ low: "low",
3749
+ manifest: "manifest",
3750
+ marginwidth: "marginWidth",
3751
+ marginheight: "marginHeight",
3752
+ max: "max",
3753
+ maxlength: "maxLength",
3754
+ media: "media",
3755
+ mediagroup: "mediaGroup",
3756
+ method: "method",
3757
+ min: "min",
3758
+ minlength: "minLength",
3759
+ multiple: "multiple",
3760
+ muted: "muted",
3761
+ name: "name",
3762
+ nomodule: "noModule",
3763
+ nonce: "nonce",
3764
+ novalidate: "noValidate",
3765
+ open: "open",
3766
+ optimum: "optimum",
3767
+ pattern: "pattern",
3768
+ placeholder: "placeholder",
3769
+ playsinline: "playsInline",
3770
+ poster: "poster",
3771
+ preload: "preload",
3772
+ profile: "profile",
3773
+ radiogroup: "radioGroup",
3774
+ readonly: "readOnly",
3775
+ referrerpolicy: "referrerPolicy",
3776
+ rel: "rel",
3777
+ required: "required",
3778
+ reversed: "reversed",
3779
+ role: "role",
3780
+ rows: "rows",
3781
+ rowspan: "rowSpan",
3782
+ sandbox: "sandbox",
3783
+ scope: "scope",
3784
+ scoped: "scoped",
3785
+ scrolling: "scrolling",
3786
+ seamless: "seamless",
3787
+ selected: "selected",
3788
+ shape: "shape",
3789
+ size: "size",
3790
+ sizes: "sizes",
3791
+ span: "span",
3792
+ spellcheck: "spellCheck",
3793
+ src: "src",
3794
+ srcdoc: "srcDoc",
3795
+ srclang: "srcLang",
3796
+ srcset: "srcSet",
3797
+ start: "start",
3798
+ step: "step",
3799
+ style: "style",
3800
+ summary: "summary",
3801
+ tabindex: "tabIndex",
3802
+ target: "target",
3803
+ title: "title",
3804
+ type: "type",
3805
+ usemap: "useMap",
3806
+ value: "value",
3807
+ width: "width",
3808
+ wmode: "wmode",
3809
+ wrap: "wrap",
3810
+ // SVG
3811
+ about: "about",
3812
+ accentheight: "accentHeight",
3813
+ "accent-height": "accentHeight",
3814
+ accumulate: "accumulate",
3815
+ additive: "additive",
3816
+ alignmentbaseline: "alignmentBaseline",
3817
+ "alignment-baseline": "alignmentBaseline",
3818
+ allowreorder: "allowReorder",
3819
+ alphabetic: "alphabetic",
3820
+ amplitude: "amplitude",
3821
+ arabicform: "arabicForm",
3822
+ "arabic-form": "arabicForm",
3823
+ ascent: "ascent",
3824
+ attributename: "attributeName",
3825
+ attributetype: "attributeType",
3826
+ autoreverse: "autoReverse",
3827
+ azimuth: "azimuth",
3828
+ basefrequency: "baseFrequency",
3829
+ baselineshift: "baselineShift",
3830
+ "baseline-shift": "baselineShift",
3831
+ baseprofile: "baseProfile",
3832
+ bbox: "bbox",
3833
+ begin: "begin",
3834
+ bias: "bias",
3835
+ by: "by",
3836
+ calcmode: "calcMode",
3837
+ capheight: "capHeight",
3838
+ "cap-height": "capHeight",
3839
+ clip: "clip",
3840
+ clippath: "clipPath",
3841
+ "clip-path": "clipPath",
3842
+ clippathunits: "clipPathUnits",
3843
+ cliprule: "clipRule",
3844
+ "clip-rule": "clipRule",
3845
+ color: "color",
3846
+ colorinterpolation: "colorInterpolation",
3847
+ "color-interpolation": "colorInterpolation",
3848
+ colorinterpolationfilters: "colorInterpolationFilters",
3849
+ "color-interpolation-filters": "colorInterpolationFilters",
3850
+ colorprofile: "colorProfile",
3851
+ "color-profile": "colorProfile",
3852
+ colorrendering: "colorRendering",
3853
+ "color-rendering": "colorRendering",
3854
+ contentscripttype: "contentScriptType",
3855
+ contentstyletype: "contentStyleType",
3856
+ cursor: "cursor",
3857
+ cx: "cx",
3858
+ cy: "cy",
3859
+ d: "d",
3860
+ datatype: "datatype",
3861
+ decelerate: "decelerate",
3862
+ descent: "descent",
3863
+ diffuseconstant: "diffuseConstant",
3864
+ direction: "direction",
3865
+ display: "display",
3866
+ divisor: "divisor",
3867
+ dominantbaseline: "dominantBaseline",
3868
+ "dominant-baseline": "dominantBaseline",
3869
+ dur: "dur",
3870
+ dx: "dx",
3871
+ dy: "dy",
3872
+ edgemode: "edgeMode",
3873
+ elevation: "elevation",
3874
+ enablebackground: "enableBackground",
3875
+ "enable-background": "enableBackground",
3876
+ end: "end",
3877
+ exponent: "exponent",
3878
+ externalresourcesrequired: "externalResourcesRequired",
3879
+ fill: "fill",
3880
+ fillopacity: "fillOpacity",
3881
+ "fill-opacity": "fillOpacity",
3882
+ fillrule: "fillRule",
3883
+ "fill-rule": "fillRule",
3884
+ filter: "filter",
3885
+ filterres: "filterRes",
3886
+ filterunits: "filterUnits",
3887
+ floodopacity: "floodOpacity",
3888
+ "flood-opacity": "floodOpacity",
3889
+ floodcolor: "floodColor",
3890
+ "flood-color": "floodColor",
3891
+ focusable: "focusable",
3892
+ fontfamily: "fontFamily",
3893
+ "font-family": "fontFamily",
3894
+ fontsize: "fontSize",
3895
+ "font-size": "fontSize",
3896
+ fontsizeadjust: "fontSizeAdjust",
3897
+ "font-size-adjust": "fontSizeAdjust",
3898
+ fontstretch: "fontStretch",
3899
+ "font-stretch": "fontStretch",
3900
+ fontstyle: "fontStyle",
3901
+ "font-style": "fontStyle",
3902
+ fontvariant: "fontVariant",
3903
+ "font-variant": "fontVariant",
3904
+ fontweight: "fontWeight",
3905
+ "font-weight": "fontWeight",
3906
+ format: "format",
3907
+ from: "from",
3908
+ fx: "fx",
3909
+ fy: "fy",
3910
+ g1: "g1",
3911
+ g2: "g2",
3912
+ glyphname: "glyphName",
3913
+ "glyph-name": "glyphName",
3914
+ glyphorientationhorizontal: "glyphOrientationHorizontal",
3915
+ "glyph-orientation-horizontal": "glyphOrientationHorizontal",
3916
+ glyphorientationvertical: "glyphOrientationVertical",
3917
+ "glyph-orientation-vertical": "glyphOrientationVertical",
3918
+ glyphref: "glyphRef",
3919
+ gradienttransform: "gradientTransform",
3920
+ gradientunits: "gradientUnits",
3921
+ hanging: "hanging",
3922
+ horizadvx: "horizAdvX",
3923
+ "horiz-adv-x": "horizAdvX",
3924
+ horizoriginx: "horizOriginX",
3925
+ "horiz-origin-x": "horizOriginX",
3926
+ ideographic: "ideographic",
3927
+ imagerendering: "imageRendering",
3928
+ "image-rendering": "imageRendering",
3929
+ in2: "in2",
3930
+ in: "in",
3931
+ inlist: "inlist",
3932
+ intercept: "intercept",
3933
+ k1: "k1",
3934
+ k2: "k2",
3935
+ k3: "k3",
3936
+ k4: "k4",
3937
+ k: "k",
3938
+ kernelmatrix: "kernelMatrix",
3939
+ kernelunitlength: "kernelUnitLength",
3940
+ kerning: "kerning",
3941
+ keypoints: "keyPoints",
3942
+ keysplines: "keySplines",
3943
+ keytimes: "keyTimes",
3944
+ lengthadjust: "lengthAdjust",
3945
+ letterspacing: "letterSpacing",
3946
+ "letter-spacing": "letterSpacing",
3947
+ lightingcolor: "lightingColor",
3948
+ "lighting-color": "lightingColor",
3949
+ limitingconeangle: "limitingConeAngle",
3950
+ local: "local",
3951
+ markerend: "markerEnd",
3952
+ "marker-end": "markerEnd",
3953
+ markerheight: "markerHeight",
3954
+ markermid: "markerMid",
3955
+ "marker-mid": "markerMid",
3956
+ markerstart: "markerStart",
3957
+ "marker-start": "markerStart",
3958
+ markerunits: "markerUnits",
3959
+ markerwidth: "markerWidth",
3960
+ mask: "mask",
3961
+ maskcontentunits: "maskContentUnits",
3962
+ maskunits: "maskUnits",
3963
+ mathematical: "mathematical",
3964
+ mode: "mode",
3965
+ numoctaves: "numOctaves",
3966
+ offset: "offset",
3967
+ opacity: "opacity",
3968
+ operator: "operator",
3969
+ order: "order",
3970
+ orient: "orient",
3971
+ orientation: "orientation",
3972
+ origin: "origin",
3973
+ overflow: "overflow",
3974
+ overlineposition: "overlinePosition",
3975
+ "overline-position": "overlinePosition",
3976
+ overlinethickness: "overlineThickness",
3977
+ "overline-thickness": "overlineThickness",
3978
+ paintorder: "paintOrder",
3979
+ "paint-order": "paintOrder",
3980
+ panose1: "panose1",
3981
+ "panose-1": "panose1",
3982
+ pathlength: "pathLength",
3983
+ patterncontentunits: "patternContentUnits",
3984
+ patterntransform: "patternTransform",
3985
+ patternunits: "patternUnits",
3986
+ pointerevents: "pointerEvents",
3987
+ "pointer-events": "pointerEvents",
3988
+ points: "points",
3989
+ pointsatx: "pointsAtX",
3990
+ pointsaty: "pointsAtY",
3991
+ pointsatz: "pointsAtZ",
3992
+ popover: "popover",
3993
+ popovertarget: "popoverTarget",
3994
+ popovertargetaction: "popoverTargetAction",
3995
+ prefix: "prefix",
3996
+ preservealpha: "preserveAlpha",
3997
+ preserveaspectratio: "preserveAspectRatio",
3998
+ primitiveunits: "primitiveUnits",
3999
+ property: "property",
4000
+ r: "r",
4001
+ radius: "radius",
4002
+ refx: "refX",
4003
+ refy: "refY",
4004
+ renderingintent: "renderingIntent",
4005
+ "rendering-intent": "renderingIntent",
4006
+ repeatcount: "repeatCount",
4007
+ repeatdur: "repeatDur",
4008
+ requiredextensions: "requiredExtensions",
4009
+ requiredfeatures: "requiredFeatures",
4010
+ resource: "resource",
4011
+ restart: "restart",
4012
+ result: "result",
4013
+ results: "results",
4014
+ rotate: "rotate",
4015
+ rx: "rx",
4016
+ ry: "ry",
4017
+ scale: "scale",
4018
+ security: "security",
4019
+ seed: "seed",
4020
+ shaperendering: "shapeRendering",
4021
+ "shape-rendering": "shapeRendering",
4022
+ slope: "slope",
4023
+ spacing: "spacing",
4024
+ specularconstant: "specularConstant",
4025
+ specularexponent: "specularExponent",
4026
+ speed: "speed",
4027
+ spreadmethod: "spreadMethod",
4028
+ startoffset: "startOffset",
4029
+ stddeviation: "stdDeviation",
4030
+ stemh: "stemh",
4031
+ stemv: "stemv",
4032
+ stitchtiles: "stitchTiles",
4033
+ stopcolor: "stopColor",
4034
+ "stop-color": "stopColor",
4035
+ stopopacity: "stopOpacity",
4036
+ "stop-opacity": "stopOpacity",
4037
+ strikethroughposition: "strikethroughPosition",
4038
+ "strikethrough-position": "strikethroughPosition",
4039
+ strikethroughthickness: "strikethroughThickness",
4040
+ "strikethrough-thickness": "strikethroughThickness",
4041
+ string: "string",
4042
+ stroke: "stroke",
4043
+ strokedasharray: "strokeDasharray",
4044
+ "stroke-dasharray": "strokeDasharray",
4045
+ strokedashoffset: "strokeDashoffset",
4046
+ "stroke-dashoffset": "strokeDashoffset",
4047
+ strokelinecap: "strokeLinecap",
4048
+ "stroke-linecap": "strokeLinecap",
4049
+ strokelinejoin: "strokeLinejoin",
4050
+ "stroke-linejoin": "strokeLinejoin",
4051
+ strokemiterlimit: "strokeMiterlimit",
4052
+ "stroke-miterlimit": "strokeMiterlimit",
4053
+ strokewidth: "strokeWidth",
4054
+ "stroke-width": "strokeWidth",
4055
+ strokeopacity: "strokeOpacity",
4056
+ "stroke-opacity": "strokeOpacity",
4057
+ suppresscontenteditablewarning: "suppressContentEditableWarning",
4058
+ suppresshydrationwarning: "suppressHydrationWarning",
4059
+ surfacescale: "surfaceScale",
4060
+ systemlanguage: "systemLanguage",
4061
+ tablevalues: "tableValues",
4062
+ targetx: "targetX",
4063
+ targety: "targetY",
4064
+ textanchor: "textAnchor",
4065
+ "text-anchor": "textAnchor",
4066
+ textdecoration: "textDecoration",
4067
+ "text-decoration": "textDecoration",
4068
+ textlength: "textLength",
4069
+ textrendering: "textRendering",
4070
+ "text-rendering": "textRendering",
4071
+ to: "to",
4072
+ transform: "transform",
4073
+ transformorigin: "transformOrigin",
4074
+ "transform-origin": "transformOrigin",
4075
+ typeof: "typeof",
4076
+ u1: "u1",
4077
+ u2: "u2",
4078
+ underlineposition: "underlinePosition",
4079
+ "underline-position": "underlinePosition",
4080
+ underlinethickness: "underlineThickness",
4081
+ "underline-thickness": "underlineThickness",
4082
+ unicode: "unicode",
4083
+ unicodebidi: "unicodeBidi",
4084
+ "unicode-bidi": "unicodeBidi",
4085
+ unicoderange: "unicodeRange",
4086
+ "unicode-range": "unicodeRange",
4087
+ unitsperem: "unitsPerEm",
4088
+ "units-per-em": "unitsPerEm",
4089
+ unselectable: "unselectable",
4090
+ valphabetic: "vAlphabetic",
4091
+ "v-alphabetic": "vAlphabetic",
4092
+ values: "values",
4093
+ vectoreffect: "vectorEffect",
4094
+ "vector-effect": "vectorEffect",
4095
+ version: "version",
4096
+ vertadvy: "vertAdvY",
4097
+ "vert-adv-y": "vertAdvY",
4098
+ vertoriginx: "vertOriginX",
4099
+ "vert-origin-x": "vertOriginX",
4100
+ vertoriginy: "vertOriginY",
4101
+ "vert-origin-y": "vertOriginY",
4102
+ vhanging: "vHanging",
4103
+ "v-hanging": "vHanging",
4104
+ videographic: "vIdeographic",
4105
+ "v-ideographic": "vIdeographic",
4106
+ viewbox: "viewBox",
4107
+ viewtarget: "viewTarget",
4108
+ visibility: "visibility",
4109
+ vmathematical: "vMathematical",
4110
+ "v-mathematical": "vMathematical",
4111
+ vocab: "vocab",
4112
+ widths: "widths",
4113
+ wordspacing: "wordSpacing",
4114
+ "word-spacing": "wordSpacing",
4115
+ writingmode: "writingMode",
4116
+ "writing-mode": "writingMode",
4117
+ x1: "x1",
4118
+ x2: "x2",
4119
+ x: "x",
4120
+ xchannelselector: "xChannelSelector",
4121
+ xheight: "xHeight",
4122
+ "x-height": "xHeight",
4123
+ xlinkactuate: "xlinkActuate",
4124
+ "xlink:actuate": "xlinkActuate",
4125
+ xlinkarcrole: "xlinkArcrole",
4126
+ "xlink:arcrole": "xlinkArcrole",
4127
+ xlinkhref: "xlinkHref",
4128
+ "xlink:href": "xlinkHref",
4129
+ xlinkrole: "xlinkRole",
4130
+ "xlink:role": "xlinkRole",
4131
+ xlinkshow: "xlinkShow",
4132
+ "xlink:show": "xlinkShow",
4133
+ xlinktitle: "xlinkTitle",
4134
+ "xlink:title": "xlinkTitle",
4135
+ xlinktype: "xlinkType",
4136
+ "xlink:type": "xlinkType",
4137
+ xmlbase: "xmlBase",
4138
+ "xml:base": "xmlBase",
4139
+ xmllang: "xmlLang",
4140
+ "xml:lang": "xmlLang",
4141
+ xmlns: "xmlns",
4142
+ "xml:space": "xmlSpace",
4143
+ xmlnsxlink: "xmlnsXlink",
4144
+ "xmlns:xlink": "xmlnsXlink",
4145
+ xmlspace: "xmlSpace",
4146
+ y1: "y1",
4147
+ y2: "y2",
4148
+ y: "y",
4149
+ ychannelselector: "yChannelSelector",
4150
+ z: "z",
4151
+ zoomandpan: "zoomAndPan"
4152
+ };
3601
4153
  var generateAction = ({
3602
4154
  scope,
3603
4155
  prop,
@@ -3704,7 +4256,11 @@ var generateJsxElement = ({
3704
4256
  const index = indexesWithinAncestors.get(instance.id);
3705
4257
  if (index !== void 0) {
3706
4258
  generatedProps += `
3707
- ${indexAttribute}="${index}"`;
4259
+ ${indexProperty}="${index}"`;
4260
+ }
4261
+ if (instance.tag !== void 0 && instance.component !== elementComponent) {
4262
+ generatedProps += `
4263
+ ${tagProperty}=${JSON.stringify(instance.tag)}`;
3708
4264
  }
3709
4265
  let conditionValue;
3710
4266
  let collectionDataValue;
@@ -3723,6 +4279,10 @@ ${indexAttribute}="${index}"`;
3723
4279
  if (isAttributeNameSafe(prop.name) === false) {
3724
4280
  continue;
3725
4281
  }
4282
+ let name2 = prop.name;
4283
+ if (instance.component === elementComponent) {
4284
+ name2 = standardAttributesToReactProps[prop.name] ?? prop.name;
4285
+ }
3726
4286
  if (prop.name === showAttribute) {
3727
4287
  if (propValue === "true") {
3728
4288
  continue;
@@ -3742,13 +4302,13 @@ ${indexAttribute}="${index}"`;
3742
4302
  }
3743
4303
  continue;
3744
4304
  }
3745
- if (prop.name === "className" && propValue !== void 0) {
4305
+ if (name2 === "className" && propValue !== void 0) {
3746
4306
  classNameValue = propValue;
3747
4307
  continue;
3748
4308
  }
3749
4309
  if (propValue !== void 0) {
3750
4310
  generatedProps += `
3751
- ${prop.name}={${propValue}}`;
4311
+ ${name2}={${propValue}}`;
3752
4312
  }
3753
4313
  }
3754
4314
  const classMapArray = classesMap == null ? void 0 : classesMap.get(instance.id);
@@ -3782,6 +4342,18 @@ ${prop.name}={${propValue}}`;
3782
4342
  `;
3783
4343
  } else if (instance.component === blockComponent) {
3784
4344
  generatedElement += children;
4345
+ } else if (instance.component === elementComponent) {
4346
+ const tagName = instance.tag ?? "div";
4347
+ if (instance.children.length === 0) {
4348
+ generatedElement += `<${tagName}${generatedProps} />
4349
+ `;
4350
+ } else {
4351
+ generatedElement += `<${tagName}${generatedProps}>
4352
+ `;
4353
+ generatedElement += children;
4354
+ generatedElement += `</${tagName}>
4355
+ `;
4356
+ }
3785
4357
  } else {
3786
4358
  const [_namespace, shortName] = parseComponentName(instance.component);
3787
4359
  const componentVariable = scope.getName(instance.component, shortName);
@@ -4109,25 +4681,29 @@ const e$4 = {
4109
4681
  type: "boolean"
4110
4682
  }
4111
4683
  };
4112
- const i$4 = {
4113
- div: [
4114
- {
4115
- property: "display",
4116
- value: { type: "keyword", value: "contents" }
4117
- },
4118
- {
4119
- property: "white-space-collapse",
4120
- value: { type: "keyword", value: "collapse" }
4121
- }
4122
- ]
4123
- }, a$c = {
4684
+ const r$c = {
4124
4685
  category: "general",
4125
- type: "embed",
4686
+ type: "container",
4126
4687
  label: "HTML Embed",
4127
4688
  description: "Used to add HTML code to the page, such as an SVG or script.",
4128
4689
  icon: EmbedIcon,
4129
- presetStyle: i$4,
4130
- 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
+ }
4131
4707
  };
4132
4708
  ({
4133
4709
  props: {
@@ -4150,9 +4726,13 @@ const i$4 = {
4150
4726
  },
4151
4727
  initialProps: ["className", "clientOnly", "executeScriptOnCanvas"]
4152
4728
  });
4153
- const t$1 = {
4154
- type: "embed",
4729
+ const a$e = {
4730
+ type: "container",
4155
4731
  icon: MarkdownEmbedIcon,
4732
+ contentModel: {
4733
+ category: "instance",
4734
+ children: [descendantComponent]
4735
+ },
4156
4736
  presetStyle: {
4157
4737
  div: [
4158
4738
  {
@@ -4204,13 +4784,13 @@ var h3 = div;
4204
4784
  var h4 = div;
4205
4785
  var h5 = div;
4206
4786
  var h6 = div;
4207
- var i$3 = div;
4787
+ var i$1 = div;
4208
4788
  var img = div;
4209
- var a$b = div;
4789
+ var a$d = div;
4210
4790
  var li = div;
4211
4791
  var ul = div;
4212
4792
  var ol = div;
4213
- var p$a = div;
4793
+ var p$9 = div;
4214
4794
  var span = div;
4215
4795
  var body = [
4216
4796
  { property: "margin-top", value: { type: "unit", unit: "number", value: 0 } },
@@ -4521,7 +5101,7 @@ var button = [
4521
5101
  { property: "text-transform", value: { type: "keyword", value: "none" } }
4522
5102
  ];
4523
5103
  var select = button;
4524
- const a$a = {
5104
+ const a$c = {
4525
5105
  body: [
4526
5106
  ...body,
4527
5107
  {
@@ -4533,82 +5113,82 @@ const a$a = {
4533
5113
  value: { type: "keyword", value: "grayscale" }
4534
5114
  }
4535
5115
  ]
4536
- }, n$9 = {
5116
+ }, n$6 = {
4537
5117
  type: "container",
4538
5118
  icon: BodyIcon,
4539
5119
  states: defaultStates,
4540
- presetStyle: a$a
4541
- };
4542
- const g$3 = {
4543
- div,
4544
- address,
4545
- article,
4546
- aside,
4547
- figure,
4548
- footer,
4549
- header,
4550
- main: main$1,
4551
- nav,
4552
- section
4553
- }, v$2 = {
5120
+ presetStyle: a$c
5121
+ };
5122
+ const v$2 = {
4554
5123
  category: "general",
4555
5124
  type: "container",
4556
5125
  description: "A container for content. By default this is a Div, but the tag can be changed in settings.",
4557
5126
  icon: BoxIcon,
4558
5127
  states: defaultStates,
4559
- presetStyle: g$3,
5128
+ presetStyle: {
5129
+ div,
5130
+ address,
5131
+ article,
5132
+ aside,
5133
+ figure,
5134
+ footer,
5135
+ header,
5136
+ main: main$1,
5137
+ nav,
5138
+ section
5139
+ },
4560
5140
  order: 0
4561
5141
  };
4562
- const r$d = {
4563
- div: [
4564
- ...div,
4565
- {
4566
- property: "min-height",
4567
- value: { type: "unit", unit: "em", value: 1 }
4568
- }
4569
- ]
4570
- }, n$8 = {
5142
+ const s$6 = {
4571
5143
  type: "container",
4572
5144
  icon: TextIcon,
4573
5145
  states: defaultStates,
4574
- presetStyle: r$d
4575
- };
4576
- const n$7 = {
4577
- h1,
4578
- h2,
4579
- h3,
4580
- h4,
4581
- h5,
4582
- h6
4583
- }, f$1 = {
5146
+ presetStyle: {
5147
+ div: [
5148
+ ...div,
5149
+ {
5150
+ property: "min-height",
5151
+ value: { type: "unit", unit: "em", value: 1 }
5152
+ }
5153
+ ]
5154
+ }
5155
+ };
5156
+ const d$6 = {
4584
5157
  type: "container",
4585
5158
  placeholder: "Heading",
4586
5159
  icon: HeadingIcon,
4587
5160
  states: defaultStates,
4588
- presetStyle: n$7
5161
+ presetStyle: {
5162
+ h1,
5163
+ h2,
5164
+ h3,
5165
+ h4,
5166
+ h5,
5167
+ h6
5168
+ }
4589
5169
  };
4590
- const p$9 = {
4591
- p: p$a
4592
- }, n$6 = {
5170
+ const p$8 = {
5171
+ p: p$9
5172
+ }, n$5 = {
4593
5173
  type: "container",
4594
5174
  placeholder: "Paragraph",
4595
5175
  icon: TextAlignLeftIcon,
4596
5176
  states: defaultStates,
4597
- presetStyle: p$9
5177
+ presetStyle: p$8
4598
5178
  };
4599
- const a$9 = {
5179
+ const a$b = {
4600
5180
  a: [
4601
- ...a$b,
5181
+ ...a$d,
4602
5182
  {
4603
5183
  property: "display",
4604
5184
  value: { type: "keyword", value: "inline-block" }
4605
5185
  }
4606
5186
  ]
4607
- }, n$5 = {
5187
+ }, n$4 = {
4608
5188
  type: "container",
4609
5189
  placeholder: "Link",
4610
5190
  icon: LinkIcon,
4611
- presetStyle: a$9,
5191
+ presetStyle: a$b,
4612
5192
  states: [
4613
5193
  ...defaultStates,
4614
5194
  {
@@ -4622,46 +5202,46 @@ const a$9 = {
4622
5202
  }
4623
5203
  ]
4624
5204
  };
4625
- const a$8 = {
4626
- ...n$5,
5205
+ const a$a = {
5206
+ ...n$4,
4627
5207
  type: "rich-text-child"
4628
5208
  };
4629
- const s$3 = {
5209
+ const s$5 = {
4630
5210
  span
4631
- }, c$7 = {
5211
+ }, c$6 = {
4632
5212
  type: "rich-text-child",
4633
5213
  label: "Text",
4634
5214
  icon: PaintBrushIcon,
4635
5215
  states: defaultStates,
4636
- presetStyle: s$3
5216
+ presetStyle: s$5
4637
5217
  };
4638
- const p$8 = {
5218
+ const p$7 = {
4639
5219
  b: b$8
4640
5220
  }, l$6 = {
4641
5221
  type: "rich-text-child",
4642
5222
  label: "Bold Text",
4643
5223
  icon: BoldIcon,
4644
5224
  states: defaultStates,
4645
- presetStyle: p$8
5225
+ presetStyle: p$7
4646
5226
  };
4647
- const r$c = {
5227
+ const r$b = {
4648
5228
  i: [
4649
- ...i$3,
5229
+ ...i$1,
4650
5230
  {
4651
5231
  property: "font-style",
4652
5232
  value: { type: "keyword", value: "italic" }
4653
5233
  }
4654
5234
  ]
4655
- }, c$6 = {
5235
+ }, c$5 = {
4656
5236
  type: "rich-text-child",
4657
5237
  label: "Italic Text",
4658
5238
  icon: TextItalicIcon,
4659
5239
  states: defaultStates,
4660
- presetStyle: r$c
5240
+ presetStyle: r$b
4661
5241
  };
4662
5242
  const e$3 = {
4663
5243
  sup
4664
- }, a$7 = {
5244
+ }, a$9 = {
4665
5245
  type: "rich-text-child",
4666
5246
  label: "Superscript Text",
4667
5247
  icon: SuperscriptIcon,
@@ -4670,7 +5250,7 @@ const e$3 = {
4670
5250
  };
4671
5251
  const e$2 = {
4672
5252
  sub
4673
- }, a$6 = {
5253
+ }, a$8 = {
4674
5254
  type: "rich-text-child",
4675
5255
  label: "Subscript Text",
4676
5256
  icon: SubscriptIcon,
@@ -4679,7 +5259,7 @@ const e$2 = {
4679
5259
  };
4680
5260
  const l$5 = {
4681
5261
  button
4682
- }, p$7 = {
5262
+ }, p$6 = {
4683
5263
  icon: ButtonElementIcon,
4684
5264
  type: "container",
4685
5265
  presetStyle: l$5,
@@ -4689,7 +5269,7 @@ const l$5 = {
4689
5269
  { selector: ":enabled", label: "Enabled" }
4690
5270
  ]
4691
5271
  };
4692
- const r$b = {
5272
+ const r$a = {
4693
5273
  input: [
4694
5274
  ...input,
4695
5275
  {
@@ -4697,13 +5277,13 @@ const r$b = {
4697
5277
  value: { type: "keyword", value: "block" }
4698
5278
  }
4699
5279
  ]
4700
- }, c$5 = {
5280
+ }, c$4 = {
4701
5281
  category: "forms",
4702
5282
  type: "control",
4703
5283
  label: "Text Input",
4704
5284
  description: "A single-line text input for collecting string data from your users.",
4705
5285
  icon: FormTextFieldIcon,
4706
- presetStyle: r$b,
5286
+ presetStyle: r$a,
4707
5287
  order: 3,
4708
5288
  states: [
4709
5289
  ...defaultStates,
@@ -4719,7 +5299,7 @@ const r$b = {
4719
5299
  //{ selector: ":read-write", label: "Read Write" },
4720
5300
  ]
4721
5301
  };
4722
- const c$4 = {
5302
+ const c$3 = {
4723
5303
  label: "Webhook Form",
4724
5304
  icon: WebhookFormIcon,
4725
5305
  type: "container",
@@ -4731,22 +5311,22 @@ const c$4 = {
4731
5311
  { selector: "[data-state=success]", label: "Success" }
4732
5312
  ]
4733
5313
  };
4734
- const s$2 = {
5314
+ const s$4 = {
4735
5315
  form: [
4736
5316
  ...form,
4737
5317
  { property: "min-height", value: { type: "unit", unit: "px", value: 20 } }
4738
5318
  ]
4739
- }, n$4 = {
5319
+ }, n$3 = {
4740
5320
  category: "forms",
4741
5321
  type: "container",
4742
5322
  label: "Form",
4743
5323
  description: "Create filters, surveys, searches and more.",
4744
5324
  icon: FormIcon,
4745
5325
  states: defaultStates,
4746
- presetStyle: s$2,
5326
+ presetStyle: s$4,
4747
5327
  order: 0
4748
5328
  };
4749
- const a$5 = {
5329
+ const a$7 = {
4750
5330
  img: [
4751
5331
  ...img,
4752
5332
  // Otherwise on new image insert onto canvas it can overfit screen size multiple times
@@ -4774,10 +5354,10 @@ const a$5 = {
4774
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.",
4775
5355
  icon: ImageIcon,
4776
5356
  states: defaultStates,
4777
- presetStyle: a$5,
5357
+ presetStyle: a$7,
4778
5358
  order: 0
4779
5359
  };
4780
- const r$a = {
5360
+ const r$9 = {
4781
5361
  blockquote: [
4782
5362
  {
4783
5363
  property: "margin-top",
@@ -4824,14 +5404,14 @@ const r$a = {
4824
5404
  value: { type: "rgb", r: 226, g: 226, b: 226, alpha: 1 }
4825
5405
  }
4826
5406
  ]
4827
- }, i$2 = {
5407
+ }, i = {
4828
5408
  type: "container",
4829
5409
  placeholder: "Blockquote",
4830
5410
  icon: BlockquoteIcon,
4831
5411
  states: defaultStates,
4832
- presetStyle: r$a
5412
+ presetStyle: r$9
4833
5413
  };
4834
- const a$4 = {
5414
+ const a$6 = {
4835
5415
  ol: [
4836
5416
  ...ol,
4837
5417
  {
@@ -4866,9 +5446,9 @@ const a$4 = {
4866
5446
  type: "container",
4867
5447
  icon: ListIcon,
4868
5448
  states: defaultStates,
4869
- presetStyle: a$4
5449
+ presetStyle: a$6
4870
5450
  };
4871
- const a$3 = {
5451
+ const a$5 = {
4872
5452
  type: "container",
4873
5453
  placeholder: "List item",
4874
5454
  icon: ListItemIcon,
@@ -4877,7 +5457,7 @@ const a$3 = {
4877
5457
  li
4878
5458
  }
4879
5459
  };
4880
- const p$6 = {
5460
+ const p$5 = {
4881
5461
  hr: [
4882
5462
  ...hr,
4883
5463
  {
@@ -4905,16 +5485,16 @@ const p$6 = {
4905
5485
  value: { type: "keyword", value: "none" }
4906
5486
  }
4907
5487
  ]
4908
- }, n$3 = {
5488
+ }, n$2 = {
4909
5489
  category: "general",
4910
5490
  type: "embed",
4911
5491
  description: "Used to visually divide sections of content, helping to improve readability and organization within a webpage.",
4912
5492
  icon: MinusIcon,
4913
5493
  states: defaultStates,
4914
- presetStyle: p$6,
5494
+ presetStyle: p$5,
4915
5495
  order: 3
4916
5496
  };
4917
- const p$5 = {
5497
+ const p$4 = {
4918
5498
  code: [
4919
5499
  ...code,
4920
5500
  {
@@ -4948,10 +5528,10 @@ const p$5 = {
4948
5528
  description: "Use this component when you want to display code as text on the page.",
4949
5529
  icon: BracesIcon,
4950
5530
  states: defaultStates,
4951
- presetStyle: p$5,
5531
+ presetStyle: p$4,
4952
5532
  order: 5
4953
5533
  };
4954
- const a$2 = {
5534
+ const a$4 = {
4955
5535
  label: [
4956
5536
  ...label,
4957
5537
  { property: "display", value: { type: "keyword", value: "block" } }
@@ -4961,7 +5541,7 @@ const a$2 = {
4961
5541
  label: "Input Label",
4962
5542
  icon: LabelIcon,
4963
5543
  states: defaultStates,
4964
- presetStyle: a$2
5544
+ presetStyle: a$4
4965
5545
  };
4966
5546
  const l$3 = {
4967
5547
  textarea: [
@@ -4973,7 +5553,7 @@ const l$3 = {
4973
5553
  value: { type: "keyword", value: "block" }
4974
5554
  }
4975
5555
  ]
4976
- }, c$3 = {
5556
+ }, c$2 = {
4977
5557
  category: "forms",
4978
5558
  type: "control",
4979
5559
  label: "Text Area",
@@ -4995,7 +5575,7 @@ const l$3 = {
4995
5575
  //{ selector: ":read-write", label: "Read Write" },
4996
5576
  ]
4997
5577
  };
4998
- const a$1 = {
5578
+ const a$3 = {
4999
5579
  input: [
5000
5580
  ...radio,
5001
5581
  {
@@ -5003,11 +5583,11 @@ const a$1 = {
5003
5583
  value: { type: "unit", unit: "em", value: 0.5 }
5004
5584
  }
5005
5585
  ]
5006
- }, s$1 = {
5586
+ }, s$3 = {
5007
5587
  type: "control",
5008
5588
  label: "Radio",
5009
5589
  icon: RadioCheckedIcon,
5010
- presetStyle: a$1,
5590
+ presetStyle: a$3,
5011
5591
  states: [
5012
5592
  ...defaultStates,
5013
5593
  { selector: ":checked", label: "Checked" },
@@ -5043,72 +5623,76 @@ const o$3 = {
5043
5623
  { selector: ":read-write", label: "Read Write" }
5044
5624
  ]
5045
5625
  };
5046
- const r$9 = {
5047
- div
5048
- }, c$2 = {
5626
+ const m$2 = {
5049
5627
  type: "container",
5050
5628
  icon: VimeoIcon,
5051
5629
  states: defaultStates,
5052
- presetStyle: r$9,
5053
- constraints: {
5054
- relation: "ancestor",
5055
- 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
5056
5641
  }
5057
5642
  };
5058
- const i$1 = {
5059
- div
5060
- }, c$1 = {
5643
+ const p$3 = {
5061
5644
  type: "container",
5062
5645
  icon: YoutubeIcon,
5063
5646
  states: defaultStates,
5064
- presetStyle: i$1,
5065
- constraints: {
5066
- relation: "ancestor",
5067
- 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
5068
5658
  }
5069
5659
  };
5070
- const i = {
5660
+ const a$2 = {
5071
5661
  ...l$4,
5072
5662
  category: "hidden",
5073
5663
  label: "Preview Image",
5074
- constraints: {
5075
- relation: "ancestor",
5076
- component: { $in: ["Vimeo", "YouTube"] }
5664
+ contentModel: {
5665
+ category: "none",
5666
+ children: ["empty"]
5077
5667
  }
5078
5668
  };
5079
- const r$8 = {
5080
- button
5081
- }, p$4 = {
5669
+ const s$2 = {
5082
5670
  category: "hidden",
5083
5671
  type: "container",
5084
- constraints: [
5085
- {
5086
- relation: "ancestor",
5087
- component: { $in: ["Vimeo", "YouTube"] }
5088
- },
5089
- {
5090
- relation: "ancestor",
5091
- component: { $neq: "Button" }
5092
- }
5093
- ],
5094
5672
  label: "Play Button",
5095
5673
  icon: ButtonElementIcon,
5096
- presetStyle: r$8,
5097
- states: defaultStates
5674
+ states: defaultStates,
5675
+ contentModel: {
5676
+ category: "none",
5677
+ children: ["instance"]
5678
+ },
5679
+ presetStyle: {
5680
+ button
5681
+ }
5098
5682
  };
5099
- const n$2 = {
5100
- div
5101
- }, m$2 = {
5683
+ const s$1 = {
5102
5684
  type: "container",
5103
- constraints: {
5104
- relation: "ancestor",
5105
- component: { $in: ["Vimeo", "YouTube"] }
5106
- },
5107
5685
  icon: BoxIcon,
5108
5686
  states: defaultStates,
5109
- presetStyle: n$2,
5110
5687
  category: "hidden",
5111
- label: "Spinner"
5688
+ label: "Spinner",
5689
+ contentModel: {
5690
+ category: "none",
5691
+ children: ["instance"]
5692
+ },
5693
+ presetStyle: {
5694
+ div
5695
+ }
5112
5696
  };
5113
5697
  const e$1 = {
5114
5698
  category: "xml",
@@ -5117,14 +5701,14 @@ const e$1 = {
5117
5701
  icon: XmlIcon,
5118
5702
  description: "XML Node"
5119
5703
  };
5120
- const a = {
5704
+ const a$1 = {
5121
5705
  category: "xml",
5122
5706
  type: "container",
5123
5707
  description: "Converts machine-readable date and time to ISO format.",
5124
5708
  icon: CalendarIcon,
5125
5709
  order: 7
5126
5710
  };
5127
- const r$7 = {
5711
+ const r$8 = {
5128
5712
  time
5129
5713
  }, s = {
5130
5714
  category: "localization",
@@ -5132,9 +5716,9 @@ const r$7 = {
5132
5716
  description: "Converts machine-readable date and time to a human-readable format.",
5133
5717
  icon: CalendarIcon,
5134
5718
  states: defaultStates,
5135
- presetStyle: r$7
5719
+ presetStyle: r$8
5136
5720
  };
5137
- const r$6 = {
5721
+ const r$7 = {
5138
5722
  select: [
5139
5723
  ...select,
5140
5724
  {
@@ -5142,10 +5726,10 @@ const r$6 = {
5142
5726
  value: { type: "keyword", value: "block" }
5143
5727
  }
5144
5728
  ]
5145
- }, c = {
5729
+ }, c$1 = {
5146
5730
  type: "container",
5147
5731
  icon: SelectIcon,
5148
- presetStyle: r$6,
5732
+ presetStyle: r$7,
5149
5733
  states: [
5150
5734
  ...defaultStates,
5151
5735
  { selector: "::placeholder", label: "Placeholder" },
@@ -5169,7 +5753,7 @@ const l$2 = {
5169
5753
  }
5170
5754
  }
5171
5755
  ]
5172
- }, r$5 = {
5756
+ }, r$6 = {
5173
5757
  category: "hidden",
5174
5758
  type: "control",
5175
5759
  description: "An item within a drop-down menu that users can select as their chosen value.",
@@ -5186,94 +5770,101 @@ const l$2 = {
5186
5770
  { selector: ":disabled", label: "Disabled" }
5187
5771
  ]
5188
5772
  };
5189
- const r$4 = {
5773
+ const r$5 = {
5190
5774
  icon: HeaderIcon,
5191
5775
  type: "container",
5192
5776
  description: "Inserts children into the head of the document",
5193
- constraints: [
5194
- {
5195
- relation: "ancestor",
5196
- component: { $nin: ["HeadSlot"] }
5197
- },
5198
- {
5199
- relation: "child",
5200
- component: { $in: ["HeadLink", "HeadMeta", "HeadTitle"] }
5201
- }
5202
- ]
5777
+ contentModel: {
5778
+ category: "instance",
5779
+ children: ["HeadLink", "HeadMeta", "HeadTitle"]
5780
+ }
5203
5781
  };
5204
- const p$3 = {
5782
+ const p$2 = {
5205
5783
  category: "hidden",
5206
5784
  icon: ResourceIcon,
5207
5785
  type: "embed",
5208
- constraints: {
5209
- relation: "parent",
5210
- component: { $eq: "HeadSlot" }
5786
+ contentModel: {
5787
+ category: "none",
5788
+ children: ["empty"]
5211
5789
  }
5212
5790
  };
5213
- const p$2 = {
5791
+ const p$1 = {
5214
5792
  category: "hidden",
5215
5793
  icon: WindowInfoIcon,
5216
5794
  type: "embed",
5217
- constraints: {
5218
- relation: "parent",
5219
- component: { $eq: "HeadSlot" }
5795
+ contentModel: {
5796
+ category: "none",
5797
+ children: ["empty"]
5220
5798
  }
5221
5799
  };
5222
- const p$1 = {
5800
+ const c = {
5223
5801
  category: "hidden",
5224
5802
  icon: WindowTitleIcon,
5225
5803
  type: "container",
5226
- constraints: {
5227
- relation: "parent",
5228
- component: { $eq: "HeadSlot" }
5804
+ contentModel: {
5805
+ category: "none",
5806
+ children: ["text"]
5807
+ }
5808
+ };
5809
+ const r$4 = {
5810
+ type: "control",
5811
+ icon: VideoIcon,
5812
+ presetStyle: {
5813
+ video: [
5814
+ {
5815
+ property: "max-width",
5816
+ value: { type: "unit", unit: "%", value: 100 }
5817
+ }
5818
+ ]
5229
5819
  }
5230
5820
  };
5231
5821
  const baseComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5232
5822
  __proto__: null,
5233
- Blockquote: i$2,
5234
- Body: n$9,
5823
+ Blockquote: i,
5824
+ Body: n$6,
5235
5825
  Bold: l$6,
5236
5826
  Box: v$2,
5237
- Button: p$7,
5827
+ Button: p$6,
5238
5828
  Checkbox: d$3,
5239
5829
  CodeText: d$4,
5240
- Form: c$4,
5830
+ Form: c$3,
5241
5831
  Fragment: o$4,
5242
- HeadLink: p$3,
5243
- HeadMeta: p$2,
5244
- HeadSlot: r$4,
5245
- HeadTitle: p$1,
5246
- Heading: f$1,
5247
- HtmlEmbed: a$c,
5832
+ HeadLink: p$2,
5833
+ HeadMeta: p$1,
5834
+ HeadSlot: r$5,
5835
+ HeadTitle: c,
5836
+ Heading: d$6,
5837
+ HtmlEmbed: r$c,
5248
5838
  Image: l$4,
5249
- Input: c$5,
5250
- Italic: c$6,
5839
+ Input: c$4,
5840
+ Italic: c$5,
5251
5841
  Label: m$3,
5252
- Link: n$5,
5842
+ Link: n$4,
5253
5843
  List: d$5,
5254
- ListItem: a$3,
5255
- MarkdownEmbed: t$1,
5256
- Option: r$5,
5257
- Paragraph: n$6,
5258
- RadioButton: s$1,
5259
- RemixForm: n$4,
5260
- RichTextLink: a$8,
5261
- Select: c,
5262
- Separator: n$3,
5844
+ ListItem: a$5,
5845
+ MarkdownEmbed: a$e,
5846
+ Option: r$6,
5847
+ Paragraph: n$5,
5848
+ RadioButton: s$3,
5849
+ RemixForm: n$3,
5850
+ RichTextLink: a$a,
5851
+ Select: c$1,
5852
+ Separator: n$2,
5263
5853
  Slot: e$5,
5264
- Span: c$7,
5265
- Subscript: a$6,
5266
- Superscript: a$7,
5267
- Text: n$8,
5268
- Textarea: c$3,
5854
+ Span: c$6,
5855
+ Subscript: a$8,
5856
+ Superscript: a$9,
5857
+ Text: s$6,
5858
+ Textarea: c$2,
5269
5859
  Time: s,
5270
- Vimeo: c$2,
5271
- VimeoPlayButton: p$4,
5272
- VimeoPreviewImage: i,
5273
- VimeoSpinner: m$2,
5860
+ Video: r$4,
5861
+ Vimeo: m$2,
5862
+ VimeoPlayButton: s$2,
5863
+ VimeoPreviewImage: a$2,
5864
+ VimeoSpinner: s$1,
5274
5865
  XmlNode: e$1,
5275
- XmlTime: a,
5276
- YouTube: c$1
5866
+ XmlTime: a$1,
5867
+ YouTube: p$3
5277
5868
  }, Symbol.toStringTag, { value: "Module" }));
5278
5869
  const o$2 = {
5279
5870
  category: "animations",
@@ -5327,19 +5918,32 @@ const r$1 = {
5327
5918
  }
5328
5919
  ]
5329
5920
  };
5921
+ const a = {
5922
+ type: "container",
5923
+ icon: Youtube1cIcon,
5924
+ label: "Video Animation",
5925
+ constraints: [
5926
+ { relation: "parent", component: { $eq: r$3.AnimateChildren } },
5927
+ {
5928
+ relation: "child",
5929
+ text: false
5930
+ }
5931
+ ]
5932
+ };
5330
5933
  const animationComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5331
5934
  __proto__: null,
5332
5935
  AnimateChildren: o$2,
5333
5936
  AnimateText: r$2,
5334
- StaggerAnimation: r$1
5937
+ StaggerAnimation: r$1,
5938
+ VideoAnimation: a
5335
5939
  }, Symbol.toStringTag, { value: "Module" }));
5336
5940
  const remixComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5337
5941
  __proto__: null,
5338
- Body: n$9,
5339
- Form: c$4,
5340
- Link: n$5,
5341
- RemixForm: n$4,
5342
- RichTextLink: a$8
5942
+ Body: n$6,
5943
+ Form: c$3,
5944
+ Link: n$4,
5945
+ RemixForm: n$3,
5946
+ RichTextLink: a$a
5343
5947
  }, Symbol.toStringTag, { value: "Module" }));
5344
5948
  const r = (t2) => new Proxy(
5345
5949
  {},
@@ -5484,7 +6088,7 @@ const S$1 = {
5484
6088
  }, h$1 = {
5485
6089
  type: "container",
5486
6090
  presetStyle: {
5487
- p: p$a
6091
+ p: p$9
5488
6092
  },
5489
6093
  icon: TextIcon,
5490
6094
  constraints: {
@@ -6213,11 +6817,11 @@ const createFramework$2 = async () => {
6213
6817
  };
6214
6818
  const reactRouterComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6215
6819
  __proto__: null,
6216
- Body: n$9,
6217
- Form: c$4,
6218
- Link: n$5,
6219
- RemixForm: n$4,
6220
- RichTextLink: a$8
6820
+ Body: n$6,
6821
+ Form: c$3,
6822
+ Link: n$4,
6823
+ RemixForm: n$3,
6824
+ RichTextLink: a$a
6221
6825
  }, Symbol.toStringTag, { value: "Module" }));
6222
6826
  const createFramework$1 = async () => {
6223
6827
  const routeTemplatesDir = join("app", "route-templates");
@@ -7037,7 +7641,7 @@ const getDeploymentInstructions = (deployTarget) => {
7037
7641
  }
7038
7642
  };
7039
7643
  const name = "webstudio";
7040
- const version = "0.210.0";
7644
+ const version = "0.213.0";
7041
7645
  const description = "Webstudio CLI";
7042
7646
  const author = "Webstudio <github@webstudio.is>";
7043
7647
  const homepage = "https://webstudio.is";
@@ -7085,15 +7689,15 @@ const dependencies = {
7085
7689
  zod: "^3.24.2"
7086
7690
  };
7087
7691
  const devDependencies = {
7088
- "@netlify/vite-plugin-react-router": "^1.0.0",
7089
- "@react-router/dev": "^7.4.0",
7090
- "@react-router/fs-routes": "^7.4.0",
7091
- "@remix-run/cloudflare": "^2.16.2",
7092
- "@remix-run/cloudflare-pages": "^2.16.2",
7093
- "@remix-run/dev": "^2.16.2",
7094
- "@remix-run/node": "^2.16.2",
7095
- "@remix-run/react": "^2.16.2",
7096
- "@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",
7097
7701
  "@types/react": "^18.2.70",
7098
7702
  "@types/react-dom": "^18.2.25",
7099
7703
  "@types/yargs": "^17.0.33",
@@ -7115,9 +7719,9 @@ const devDependencies = {
7115
7719
  prettier: "3.5.3",
7116
7720
  react: "18.3.0-canary-14898b6a9-20240318",
7117
7721
  "react-dom": "18.3.0-canary-14898b6a9-20240318",
7118
- "react-router": "^7.4.0",
7722
+ "react-router": "^7.5.0",
7119
7723
  "ts-expect": "^1.3.0",
7120
- vike: "^0.4.227",
7724
+ vike: "^0.4.228",
7121
7725
  vite: "^5.4.11",
7122
7726
  vitest: "^3.0.8",
7123
7727
  wrangler: "^3.63.2"