@webstudio-is/react-sdk 0.29.0 → 0.31.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.
Files changed (120) hide show
  1. package/lib/app/custom-components/index.js +12 -6
  2. package/lib/app/root.js +0 -2
  3. package/lib/cjs/app/custom-components/index.cjs +12 -6
  4. package/lib/cjs/app/root.cjs +0 -2
  5. package/lib/cjs/components/__generated__/body.props.json +557 -305
  6. package/lib/cjs/components/__generated__/bold.props.json +557 -305
  7. package/lib/cjs/components/__generated__/box.props.json +577 -320
  8. package/lib/cjs/components/__generated__/button.props.json +616 -339
  9. package/lib/cjs/components/__generated__/form.props.json +597 -329
  10. package/lib/cjs/components/__generated__/heading.props.json +566 -309
  11. package/lib/cjs/components/__generated__/image.props.json +638 -352
  12. package/lib/cjs/components/__generated__/input.props.json +725 -405
  13. package/lib/cjs/components/__generated__/italic.props.json +557 -305
  14. package/lib/cjs/components/__generated__/link.props.json +616 -343
  15. package/lib/cjs/components/__generated__/paragraph.props.json +557 -305
  16. package/lib/cjs/components/__generated__/rich-text-link.props.json +616 -343
  17. package/lib/cjs/components/__generated__/span.props.json +557 -305
  18. package/lib/cjs/components/__generated__/subscript.props.json +557 -305
  19. package/lib/cjs/components/__generated__/superscript.props.json +557 -305
  20. package/lib/cjs/components/__generated__/text-block.props.json +557 -305
  21. package/lib/cjs/components/body.ws.cjs +6 -3
  22. package/lib/cjs/components/bold.ws.cjs +7 -4
  23. package/lib/cjs/components/box.ws.cjs +8 -4
  24. package/lib/cjs/components/button.ws.cjs +8 -4
  25. package/lib/cjs/components/component-type.cjs +21 -56
  26. package/lib/cjs/components/form.ws.cjs +7 -4
  27. package/lib/cjs/components/heading.ws.cjs +8 -4
  28. package/lib/cjs/components/image.ws.cjs +11 -5
  29. package/lib/cjs/components/index.cjs +165 -111
  30. package/lib/cjs/components/input.ws.cjs +7 -4
  31. package/lib/cjs/components/italic.ws.cjs +7 -4
  32. package/lib/cjs/components/link.ws.cjs +8 -4
  33. package/lib/cjs/components/paragraph.ws.cjs +7 -4
  34. package/lib/cjs/components/rich-text-link.ws.cjs +7 -4
  35. package/lib/cjs/components/span.ws.cjs +7 -4
  36. package/lib/cjs/components/subscript.ws.cjs +7 -4
  37. package/lib/cjs/components/superscript.ws.cjs +7 -4
  38. package/lib/cjs/components/text-block.ws.cjs +7 -4
  39. package/lib/cjs/index.cjs +3 -2
  40. package/lib/cjs/tree/session-storage-polyfill.cjs +1 -1
  41. package/lib/components/__generated__/body.props.json +557 -305
  42. package/lib/components/__generated__/bold.props.json +557 -305
  43. package/lib/components/__generated__/box.props.json +577 -320
  44. package/lib/components/__generated__/button.props.json +616 -339
  45. package/lib/components/__generated__/form.props.json +597 -329
  46. package/lib/components/__generated__/heading.props.json +566 -309
  47. package/lib/components/__generated__/image.props.json +638 -352
  48. package/lib/components/__generated__/input.props.json +725 -405
  49. package/lib/components/__generated__/italic.props.json +557 -305
  50. package/lib/components/__generated__/link.props.json +616 -343
  51. package/lib/components/__generated__/paragraph.props.json +557 -305
  52. package/lib/components/__generated__/rich-text-link.props.json +616 -343
  53. package/lib/components/__generated__/span.props.json +557 -305
  54. package/lib/components/__generated__/subscript.props.json +557 -305
  55. package/lib/components/__generated__/superscript.props.json +557 -305
  56. package/lib/components/__generated__/text-block.props.json +557 -305
  57. package/lib/components/body.ws.js +6 -3
  58. package/lib/components/bold.ws.js +7 -4
  59. package/lib/components/box.ws.js +8 -4
  60. package/lib/components/button.ws.js +8 -4
  61. package/lib/components/component-type.js +21 -56
  62. package/lib/components/form.ws.js +7 -4
  63. package/lib/components/heading.ws.js +8 -4
  64. package/lib/components/image.ws.js +11 -5
  65. package/lib/components/index.js +117 -57
  66. package/lib/components/input.ws.js +7 -4
  67. package/lib/components/italic.ws.js +7 -4
  68. package/lib/components/link.ws.js +8 -4
  69. package/lib/components/paragraph.ws.js +7 -4
  70. package/lib/components/rich-text-link.ws.js +7 -4
  71. package/lib/components/span.ws.js +7 -4
  72. package/lib/components/subscript.ws.js +7 -4
  73. package/lib/components/superscript.ws.js +7 -4
  74. package/lib/components/text-block.ws.js +7 -4
  75. package/lib/index.js +5 -3
  76. package/lib/tree/session-storage-polyfill.js +1 -1
  77. package/package.json +9 -9
  78. package/src/app/custom-components/image.tsx +2 -2
  79. package/src/app/custom-components/index.ts +11 -5
  80. package/src/app/root.tsx +0 -2
  81. package/src/components/__generated__/body.props.json +557 -305
  82. package/src/components/__generated__/bold.props.json +557 -305
  83. package/src/components/__generated__/box.props.json +577 -320
  84. package/src/components/__generated__/button.props.json +616 -339
  85. package/src/components/__generated__/form.props.json +597 -329
  86. package/src/components/__generated__/heading.props.json +566 -309
  87. package/src/components/__generated__/image.props.json +638 -352
  88. package/src/components/__generated__/input.props.json +725 -405
  89. package/src/components/__generated__/italic.props.json +557 -305
  90. package/src/components/__generated__/link.props.json +616 -343
  91. package/src/components/__generated__/paragraph.props.json +557 -305
  92. package/src/components/__generated__/rich-text-link.props.json +616 -343
  93. package/src/components/__generated__/span.props.json +557 -305
  94. package/src/components/__generated__/subscript.props.json +557 -305
  95. package/src/components/__generated__/superscript.props.json +557 -305
  96. package/src/components/__generated__/text-block.props.json +557 -305
  97. package/src/components/body.ws.tsx +5 -4
  98. package/src/components/bold.ws.tsx +5 -4
  99. package/src/components/box.ws.ts +6 -4
  100. package/src/components/button.ws.tsx +6 -4
  101. package/src/components/component-type.ts +23 -63
  102. package/src/components/form.ws.tsx +5 -4
  103. package/src/components/heading.ws.tsx +6 -4
  104. package/src/components/image.ws.tsx +9 -5
  105. package/src/components/index.test.ts +2 -24
  106. package/src/components/index.ts +155 -81
  107. package/src/components/input.ws.tsx +5 -4
  108. package/src/components/italic.ws.tsx +5 -4
  109. package/src/components/link.ws.tsx +6 -4
  110. package/src/components/paragraph.ws.tsx +5 -4
  111. package/src/components/rich-text-link.ws.tsx +5 -4
  112. package/src/components/span.ws.tsx +5 -4
  113. package/src/components/subscript.ws.tsx +5 -4
  114. package/src/components/superscript.ws.tsx +5 -4
  115. package/src/components/text-block.ws.tsx +5 -4
  116. package/src/css/breakpoints.ts +1 -1
  117. package/src/index.ts +6 -2
  118. package/src/props.ts +1 -1
  119. package/src/tree/create-elements-tree.tsx +3 -3
  120. package/src/tree/session-storage-polyfill.tsx +1 -1
@@ -24,10 +24,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var body_ws_exports = {};
26
26
  __export(body_ws_exports, {
27
- default: () => body_ws_default
27
+ meta: () => meta,
28
+ propsMeta: () => propsMeta
28
29
  });
29
30
  module.exports = __toCommonJS(body_ws_exports);
30
31
  var import_icons = require("@webstudio-is/icons");
32
+ var import_component_type = require("./component-type");
31
33
  var import_body_props = __toESM(require("./__generated__/body.props.json"), 1);
32
34
  const presetStyle = {
33
35
  marginTop: {
@@ -82,7 +84,8 @@ const meta = {
82
84
  type: "body",
83
85
  label: "Body",
84
86
  Icon: import_icons.BodyIcon,
85
- props: import_body_props.default,
86
87
  presetStyle
87
88
  };
88
- var body_ws_default = meta;
89
+ const propsMeta = import_component_type.WsComponentPropsMeta.parse({
90
+ props: import_body_props.default
91
+ });
@@ -24,15 +24,18 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var bold_ws_exports = {};
26
26
  __export(bold_ws_exports, {
27
- default: () => bold_ws_default
27
+ meta: () => meta,
28
+ propsMeta: () => propsMeta
28
29
  });
29
30
  module.exports = __toCommonJS(bold_ws_exports);
30
31
  var import_icons = require("@webstudio-is/icons");
32
+ var import_component_type = require("./component-type");
31
33
  var import_bold_props = __toESM(require("./__generated__/bold.props.json"), 1);
32
34
  const meta = {
33
35
  type: "rich-text-child",
34
36
  label: "Bold Text",
35
- Icon: import_icons.FontBoldIcon,
36
- props: import_bold_props.default
37
+ Icon: import_icons.FontBoldIcon
37
38
  };
38
- var bold_ws_default = meta;
39
+ const propsMeta = import_component_type.WsComponentPropsMeta.parse({
40
+ props: import_bold_props.default
41
+ });
@@ -24,10 +24,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var box_ws_exports = {};
26
26
  __export(box_ws_exports, {
27
- default: () => box_ws_default
27
+ meta: () => meta,
28
+ propsMeta: () => propsMeta
28
29
  });
29
30
  module.exports = __toCommonJS(box_ws_exports);
30
31
  var import_icons = require("@webstudio-is/icons");
32
+ var import_component_type = require("./component-type");
31
33
  var import_box_props = __toESM(require("./__generated__/box.props.json"), 1);
32
34
  const presetStyle = {
33
35
  boxSizing: {
@@ -39,7 +41,9 @@ const meta = {
39
41
  type: "container",
40
42
  label: "Box",
41
43
  Icon: import_icons.SquareIcon,
42
- presetStyle,
43
- props: import_box_props.default
44
+ presetStyle
44
45
  };
45
- var box_ws_default = meta;
46
+ const propsMeta = import_component_type.WsComponentPropsMeta.parse({
47
+ props: import_box_props.default,
48
+ initialProps: ["tag"]
49
+ });
@@ -24,16 +24,20 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var button_ws_exports = {};
26
26
  __export(button_ws_exports, {
27
- default: () => button_ws_default
27
+ meta: () => meta,
28
+ propsMeta: () => propsMeta
28
29
  });
29
30
  module.exports = __toCommonJS(button_ws_exports);
30
31
  var import_icons = require("@webstudio-is/icons");
32
+ var import_component_type = require("./component-type");
31
33
  var import_button_props = __toESM(require("./__generated__/button.props.json"), 1);
32
34
  const meta = {
33
35
  type: "rich-text",
34
36
  label: "Button",
35
37
  Icon: import_icons.ButtonIcon,
36
- children: ["Button text you can edit"],
37
- props: import_button_props.default
38
+ children: ["Button text you can edit"]
38
39
  };
39
- var button_ws_default = meta;
40
+ const propsMeta = import_component_type.WsComponentPropsMeta.parse({
41
+ props: import_button_props.default,
42
+ initialProps: ["type"]
43
+ });
@@ -18,62 +18,27 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var component_type_exports = {};
20
20
  __export(component_type_exports, {
21
- WsComponentMeta: () => WsComponentMeta
21
+ WsComponentMeta: () => WsComponentMeta,
22
+ WsComponentPropsMeta: () => WsComponentPropsMeta
22
23
  });
23
24
  module.exports = __toCommonJS(component_type_exports);
24
25
  var import_zod = require("zod");
25
- const Props = import_zod.z.record(
26
- import_zod.z.union([
27
- import_zod.z.object({
28
- type: import_zod.z.literal("number"),
29
- required: import_zod.z.boolean(),
30
- defaultValue: import_zod.z.number().nullable()
31
- }),
32
- import_zod.z.object({
33
- type: import_zod.z.literal("text"),
34
- required: import_zod.z.boolean(),
35
- defaultValue: import_zod.z.string().nullable()
36
- }),
37
- import_zod.z.object({
38
- type: import_zod.z.literal("color"),
39
- required: import_zod.z.boolean(),
40
- defaultValue: import_zod.z.string().nullable()
41
- }),
42
- import_zod.z.object({
43
- type: import_zod.z.literal("boolean"),
44
- required: import_zod.z.boolean(),
45
- defaultValue: import_zod.z.boolean().nullable()
46
- }),
47
- import_zod.z.object({
48
- type: import_zod.z.enum([
49
- "radio",
50
- "inline-radio",
51
- "check",
52
- "inline-check",
53
- "multi-select",
54
- "select"
55
- ]),
56
- required: import_zod.z.boolean(),
57
- options: import_zod.z.array(import_zod.z.string()),
58
- defaultValue: import_zod.z.string().nullable()
59
- })
60
- ])
61
- );
62
- const WsComponentMeta = import_zod.z.lazy(
63
- () => import_zod.z.object({
64
- type: import_zod.z.enum([
65
- "body",
66
- "container",
67
- "control",
68
- "embed",
69
- "rich-text",
70
- "rich-text-child"
71
- ]),
72
- label: import_zod.z.string(),
73
- Icon: import_zod.z.any(),
74
- presetStyle: import_zod.z.optional(import_zod.z.any()),
75
- children: import_zod.z.optional(import_zod.z.array(import_zod.z.string())),
76
- props: Props,
77
- initialProps: import_zod.z.optional(import_zod.z.array(import_zod.z.string()))
78
- })
79
- );
26
+ var import_generate_arg_types = require("@webstudio-is/generate-arg-types");
27
+ const WsComponentPropsMeta = import_zod.z.object({
28
+ props: import_zod.z.record(import_generate_arg_types.PropMeta),
29
+ initialProps: import_zod.z.array(import_zod.z.string()).optional()
30
+ });
31
+ const WsComponentMeta = import_zod.z.object({
32
+ type: import_zod.z.enum([
33
+ "body",
34
+ "container",
35
+ "control",
36
+ "embed",
37
+ "rich-text",
38
+ "rich-text-child"
39
+ ]),
40
+ label: import_zod.z.string(),
41
+ Icon: import_zod.z.any(),
42
+ presetStyle: import_zod.z.optional(import_zod.z.any()),
43
+ children: import_zod.z.optional(import_zod.z.array(import_zod.z.string()))
44
+ });
@@ -24,10 +24,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var form_ws_exports = {};
26
26
  __export(form_ws_exports, {
27
- default: () => form_ws_default
27
+ meta: () => meta,
28
+ propsMeta: () => propsMeta
28
29
  });
29
30
  module.exports = __toCommonJS(form_ws_exports);
30
31
  var import_icons = require("@webstudio-is/icons");
32
+ var import_component_type = require("./component-type");
31
33
  var import_form_props = __toESM(require("./__generated__/form.props.json"), 1);
32
34
  const presetStyle = {
33
35
  minHeight: {
@@ -44,7 +46,8 @@ const meta = {
44
46
  type: "container",
45
47
  label: "Form",
46
48
  Icon: import_icons.FormIcon,
47
- presetStyle,
48
- props: import_form_props.default
49
+ presetStyle
49
50
  };
50
- var form_ws_default = meta;
51
+ const propsMeta = import_component_type.WsComponentPropsMeta.parse({
52
+ props: import_form_props.default
53
+ });
@@ -24,16 +24,20 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var heading_ws_exports = {};
26
26
  __export(heading_ws_exports, {
27
- default: () => heading_ws_default
27
+ meta: () => meta,
28
+ propsMeta: () => propsMeta
28
29
  });
29
30
  module.exports = __toCommonJS(heading_ws_exports);
30
31
  var import_icons = require("@webstudio-is/icons");
32
+ var import_component_type = require("./component-type");
31
33
  var import_heading_props = __toESM(require("./__generated__/heading.props.json"), 1);
32
34
  const meta = {
33
35
  type: "rich-text",
34
36
  label: "Heading",
35
37
  Icon: import_icons.HeadingIcon,
36
- children: ["Heading you can edit"],
37
- props: import_heading_props.default
38
+ children: ["Heading you can edit"]
38
39
  };
39
- var heading_ws_default = meta;
40
+ const propsMeta = import_component_type.WsComponentPropsMeta.parse({
41
+ props: import_heading_props.default,
42
+ initialProps: ["tag"]
43
+ });
@@ -24,10 +24,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var image_ws_exports = {};
26
26
  __export(image_ws_exports, {
27
- default: () => image_ws_default
27
+ meta: () => meta,
28
+ propsMeta: () => propsMeta
28
29
  });
29
30
  module.exports = __toCommonJS(image_ws_exports);
30
31
  var import_icons = require("@webstudio-is/icons");
32
+ var import_component_type = require("./component-type");
31
33
  var import_image_props = __toESM(require("./__generated__/image.props.json"), 1);
32
34
  const presetStyle = {
33
35
  maxWidth: {
@@ -44,8 +46,12 @@ const meta = {
44
46
  type: "embed",
45
47
  label: "Image",
46
48
  Icon: import_icons.ImageIcon,
47
- presetStyle,
48
- props: import_image_props.default,
49
- initialProps: ["src", "width", "height", "alt", "loading"]
49
+ presetStyle
50
50
  };
51
- var image_ws_default = meta;
51
+ const propsMeta = import_component_type.WsComponentPropsMeta.parse({
52
+ props: {
53
+ ...import_image_props.default,
54
+ src: { ...import_image_props.default.src, control: "file-image", name: "Source" }
55
+ },
56
+ initialProps: ["src", "width", "height", "alt", "loading"]
57
+ });
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,92 +15,158 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
- mod
23
- ));
24
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
19
  var components_exports = {};
26
20
  __export(components_exports, {
27
21
  getComponent: () => getComponent,
28
22
  getComponentMeta: () => getComponentMeta,
29
- getComponentMetaProps: () => getComponentMetaProps,
30
23
  getComponentNames: () => getComponentNames,
31
- registerComponents: () => registerComponents,
32
- registerComponentsMeta: () => registerComponentsMeta
24
+ getComponentPropsMeta: () => getComponentPropsMeta,
25
+ registerComponentMetas: () => registerComponentMetas,
26
+ registerComponentPropsMetas: () => registerComponentPropsMetas,
27
+ registerComponents: () => registerComponents
33
28
  });
34
29
  module.exports = __toCommonJS(components_exports);
35
- var import_body = __toESM(require("./body.ws"), 1);
36
- var import_box = __toESM(require("./box.ws"), 1);
37
- var import_text_block = __toESM(require("./text-block.ws"), 1);
38
- var import_heading = __toESM(require("./heading.ws"), 1);
39
- var import_paragraph = __toESM(require("./paragraph.ws"), 1);
40
- var import_link = __toESM(require("./link.ws"), 1);
41
- var import_rich_text_link = __toESM(require("./rich-text-link.ws"), 1);
42
- var import_span = __toESM(require("./span.ws"), 1);
43
- var import_bold = __toESM(require("./bold.ws"), 1);
44
- var import_italic = __toESM(require("./italic.ws"), 1);
45
- var import_superscript = __toESM(require("./superscript.ws"), 1);
46
- var import_subscript = __toESM(require("./subscript.ws"), 1);
47
- var import_button = __toESM(require("./button.ws"), 1);
48
- var import_input = __toESM(require("./input.ws"), 1);
49
- var import_form = __toESM(require("./form.ws"), 1);
50
- var import_image = __toESM(require("./image.ws"), 1);
51
- var import_body2 = require("./body");
52
- var import_box2 = require("./box");
53
- var import_text_block2 = require("./text-block");
54
- var import_heading2 = require("./heading");
55
- var import_paragraph2 = require("./paragraph");
56
- var import_link2 = require("./link");
57
- var import_rich_text_link2 = require("./rich-text-link");
58
- var import_span2 = require("./span");
59
- var import_bold2 = require("./bold");
60
- var import_italic2 = require("./italic");
61
- var import_superscript2 = require("./superscript");
62
- var import_subscript2 = require("./subscript");
63
- var import_button2 = require("./button");
64
- var import_input2 = require("./input");
65
- var import_form2 = require("./form");
66
- var import_image2 = require("./image");
67
- const meta = {
68
- Box: import_box.default,
69
- Body: import_body.default,
70
- TextBlock: import_text_block.default,
71
- Heading: import_heading.default,
72
- Paragraph: import_paragraph.default,
73
- Link: import_link.default,
74
- RichTextLink: import_rich_text_link.default,
75
- Span: import_span.default,
76
- Bold: import_bold.default,
77
- Italic: import_italic.default,
78
- Superscript: import_superscript.default,
79
- Subscript: import_subscript.default,
80
- Button: import_button.default,
81
- Input: import_input.default,
82
- Form: import_form.default,
83
- Image: import_image.default
30
+ var import_generate_arg_types = require("@webstudio-is/generate-arg-types");
31
+ var import_body = require("./body.ws");
32
+ var import_box = require("./box.ws");
33
+ var import_text_block = require("./text-block.ws");
34
+ var import_heading = require("./heading.ws");
35
+ var import_paragraph = require("./paragraph.ws");
36
+ var import_link = require("./link.ws");
37
+ var import_rich_text_link = require("./rich-text-link.ws");
38
+ var import_span = require("./span.ws");
39
+ var import_bold = require("./bold.ws");
40
+ var import_italic = require("./italic.ws");
41
+ var import_superscript = require("./superscript.ws");
42
+ var import_subscript = require("./subscript.ws");
43
+ var import_button = require("./button.ws");
44
+ var import_input = require("./input.ws");
45
+ var import_form = require("./form.ws");
46
+ var import_image = require("./image.ws");
47
+ var import_body2 = require("./body.ws");
48
+ var import_box2 = require("./box.ws");
49
+ var import_text_block2 = require("./text-block.ws");
50
+ var import_heading2 = require("./heading.ws");
51
+ var import_paragraph2 = require("./paragraph.ws");
52
+ var import_link2 = require("./link.ws");
53
+ var import_rich_text_link2 = require("./rich-text-link.ws");
54
+ var import_span2 = require("./span.ws");
55
+ var import_bold2 = require("./bold.ws");
56
+ var import_italic2 = require("./italic.ws");
57
+ var import_superscript2 = require("./superscript.ws");
58
+ var import_subscript2 = require("./subscript.ws");
59
+ var import_button2 = require("./button.ws");
60
+ var import_input2 = require("./input.ws");
61
+ var import_form2 = require("./form.ws");
62
+ var import_image2 = require("./image.ws");
63
+ var import_body3 = require("./body");
64
+ var import_box3 = require("./box");
65
+ var import_text_block3 = require("./text-block");
66
+ var import_heading3 = require("./heading");
67
+ var import_paragraph3 = require("./paragraph");
68
+ var import_link3 = require("./link");
69
+ var import_rich_text_link3 = require("./rich-text-link");
70
+ var import_span3 = require("./span");
71
+ var import_bold3 = require("./bold");
72
+ var import_italic3 = require("./italic");
73
+ var import_superscript3 = require("./superscript");
74
+ var import_subscript3 = require("./subscript");
75
+ var import_button3 = require("./button");
76
+ var import_input3 = require("./input");
77
+ var import_form3 = require("./form");
78
+ var import_image3 = require("./image");
79
+ const defaultMetas = {
80
+ Box: import_box.meta,
81
+ Body: import_body.meta,
82
+ TextBlock: import_text_block.meta,
83
+ Heading: import_heading.meta,
84
+ Paragraph: import_paragraph.meta,
85
+ Link: import_link.meta,
86
+ RichTextLink: import_rich_text_link.meta,
87
+ Span: import_span.meta,
88
+ Bold: import_bold.meta,
89
+ Italic: import_italic.meta,
90
+ Superscript: import_superscript.meta,
91
+ Subscript: import_subscript.meta,
92
+ Button: import_button.meta,
93
+ Input: import_input.meta,
94
+ Form: import_form.meta,
95
+ Image: import_image.meta
84
96
  };
85
- const components = {
86
- Box: import_box2.Box,
87
- Body: import_body2.Body,
88
- TextBlock: import_text_block2.TextBlock,
89
- Heading: import_heading2.Heading,
90
- Paragraph: import_paragraph2.Paragraph,
91
- Link: import_link2.Link,
92
- RichTextLink: import_rich_text_link2.RichTextLink,
93
- Span: import_span2.Span,
94
- Bold: import_bold2.Bold,
95
- Italic: import_italic2.Italic,
96
- Superscript: import_superscript2.Superscript,
97
- Subscript: import_subscript2.Subscript,
98
- Button: import_button2.Button,
99
- Input: import_input2.Input,
100
- Form: import_form2.Form,
101
- Image: import_image2.Image
97
+ let currentMetas = defaultMetas;
98
+ const getComponentMeta = (name) => {
99
+ return currentMetas[name];
100
+ };
101
+ const registerComponentMetas = (overrides) => {
102
+ const result = {};
103
+ for (const name of Object.keys(defaultMetas)) {
104
+ result[name] = { ...defaultMetas[name], ...overrides[name] };
105
+ }
106
+ currentMetas = result;
107
+ };
108
+ const defaultPropsMetas = {
109
+ Box: import_box2.propsMeta,
110
+ Body: import_body2.propsMeta,
111
+ TextBlock: import_text_block2.propsMeta,
112
+ Heading: import_heading2.propsMeta,
113
+ Paragraph: import_paragraph2.propsMeta,
114
+ Link: import_link2.propsMeta,
115
+ RichTextLink: import_rich_text_link2.propsMeta,
116
+ Span: import_span2.propsMeta,
117
+ Bold: import_bold2.propsMeta,
118
+ Italic: import_italic2.propsMeta,
119
+ Superscript: import_superscript2.propsMeta,
120
+ Subscript: import_subscript2.propsMeta,
121
+ Button: import_button2.propsMeta,
122
+ Input: import_input2.propsMeta,
123
+ Form: import_form2.propsMeta,
124
+ Image: import_image2.propsMeta
125
+ };
126
+ let registeredPropsMetas = {};
127
+ let currentPropsMetas = void 0;
128
+ const getComponentPropsMeta = (name) => {
129
+ if (currentPropsMetas === void 0) {
130
+ currentPropsMetas = {};
131
+ for (const name2 of Object.keys(defaultPropsMetas)) {
132
+ const props = computeProps(
133
+ defaultPropsMetas[name2],
134
+ registeredPropsMetas[name2] ?? {}
135
+ );
136
+ const initialProps = computeInitialProps(
137
+ props,
138
+ defaultPropsMetas[name2],
139
+ registeredPropsMetas[name2] ?? {}
140
+ );
141
+ currentPropsMetas[name2] = { props, initialProps };
142
+ }
143
+ }
144
+ return currentPropsMetas[name];
145
+ };
146
+ const registerComponentPropsMetas = (metas) => {
147
+ registeredPropsMetas = metas;
148
+ currentPropsMetas = void 0;
149
+ };
150
+ const defaultComponents = {
151
+ Box: import_box3.Box,
152
+ Body: import_body3.Body,
153
+ TextBlock: import_text_block3.TextBlock,
154
+ Heading: import_heading3.Heading,
155
+ Paragraph: import_paragraph3.Paragraph,
156
+ Link: import_link3.Link,
157
+ RichTextLink: import_rich_text_link3.RichTextLink,
158
+ Span: import_span3.Span,
159
+ Bold: import_bold3.Bold,
160
+ Italic: import_italic3.Italic,
161
+ Superscript: import_superscript3.Superscript,
162
+ Subscript: import_subscript3.Subscript,
163
+ Button: import_button3.Button,
164
+ Input: import_input3.Input,
165
+ Form: import_form3.Form,
166
+ Image: import_image3.Image
102
167
  };
103
168
  let registeredComponents = null;
104
- let registeredComponentsMeta = null;
105
- const componentNames = Object.keys(components);
169
+ const componentNames = Object.keys(defaultComponents);
106
170
  const getComponentNames = () => {
107
171
  const uniqueNames = /* @__PURE__ */ new Set([
108
172
  ...componentNames,
@@ -110,43 +174,33 @@ const getComponentNames = () => {
110
174
  ]);
111
175
  return [...uniqueNames.values()];
112
176
  };
113
- const getComponentMeta = (name) => {
114
- const componentMeta = meta[name];
115
- if (registeredComponentsMeta != null && name in registeredComponentsMeta) {
116
- return {
117
- ...componentMeta,
118
- ...registeredComponentsMeta[name]
119
- };
120
- }
121
- return componentMeta;
122
- };
123
177
  const getComponent = (name) => {
124
- return registeredComponents != null && name in registeredComponents ? registeredComponents[name] : components[name];
178
+ return registeredComponents != null && name in registeredComponents ? registeredComponents[name] : defaultComponents[name];
179
+ };
180
+ const registerComponents = (components) => {
181
+ registeredComponents = components;
125
182
  };
126
- const getComponentMetaProps = (name) => {
127
- const componentMeta = meta[name];
128
- if (registeredComponentsMeta != null && name in registeredComponentsMeta) {
129
- const registeredComponentMeta = registeredComponentsMeta[name];
130
- const allMetaPropKeys = /* @__PURE__ */ new Set([
131
- ...Object.keys(componentMeta?.props ?? {}),
132
- ...Object.keys(registeredComponentMeta.props)
133
- ]);
134
- const props = {};
135
- for (const key of allMetaPropKeys.values()) {
136
- props[key] = {
137
- ...componentMeta?.props[key],
138
- ...registeredComponentMeta?.props?.[key],
139
- defaultValue: registeredComponentMeta?.props?.[key]?.defaultValue ?? componentMeta?.props[key]?.defaultValue ?? null,
140
- required: registeredComponentMeta?.props?.[key]?.required || componentMeta?.props[key]?.required
141
- };
183
+ const computeProps = (defaults, overrides) => {
184
+ if (overrides) {
185
+ const allNames = (/* @__PURE__ */ new Set([
186
+ ...Object.keys(defaults.props ?? {}),
187
+ ...Object.keys(overrides?.props ?? {})
188
+ ])).values();
189
+ const result = {};
190
+ for (const name of allNames) {
191
+ result[name] = import_generate_arg_types.PropMeta.parse({
192
+ ...defaults.props[name],
193
+ ...overrides?.props?.[name]
194
+ });
142
195
  }
143
- return props;
196
+ return result;
144
197
  }
145
- return componentMeta?.props;
146
- };
147
- const registerComponents = (components2) => {
148
- registeredComponents = components2;
198
+ return defaults.props;
149
199
  };
150
- const registerComponentsMeta = (componentsMeta) => {
151
- registeredComponentsMeta = componentsMeta;
200
+ const computeInitialProps = (props, defaults, overrides) => {
201
+ const initialProps = overrides?.initialProps ?? defaults?.initialProps ?? [];
202
+ const requiredProps = props ? Object.entries(props).filter(
203
+ ([name, value]) => value?.type.required && initialProps.includes(name) === false
204
+ ).map(([name]) => name) : [];
205
+ return [...initialProps, ...requiredProps];
152
206
  };
@@ -24,15 +24,18 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var input_ws_exports = {};
26
26
  __export(input_ws_exports, {
27
- default: () => input_ws_default
27
+ meta: () => meta,
28
+ propsMeta: () => propsMeta
28
29
  });
29
30
  module.exports = __toCommonJS(input_ws_exports);
30
31
  var import_icons = require("@webstudio-is/icons");
32
+ var import_component_type = require("./component-type");
31
33
  var import_input_props = __toESM(require("./__generated__/input.props.json"), 1);
32
34
  const meta = {
33
35
  type: "control",
34
36
  label: "Input",
35
- Icon: import_icons.InputIcon,
36
- props: import_input_props.default
37
+ Icon: import_icons.InputIcon
37
38
  };
38
- var input_ws_default = meta;
39
+ const propsMeta = import_component_type.WsComponentPropsMeta.parse({
40
+ props: import_input_props.default
41
+ });
@@ -24,10 +24,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var italic_ws_exports = {};
26
26
  __export(italic_ws_exports, {
27
- default: () => italic_ws_default
27
+ meta: () => meta,
28
+ propsMeta: () => propsMeta
28
29
  });
29
30
  module.exports = __toCommonJS(italic_ws_exports);
30
31
  var import_icons = require("@webstudio-is/icons");
32
+ var import_component_type = require("./component-type");
31
33
  var import_italic_props = __toESM(require("./__generated__/italic.props.json"), 1);
32
34
  const presetStyle = {
33
35
  fontStyle: {
@@ -39,7 +41,8 @@ const meta = {
39
41
  type: "rich-text-child",
40
42
  label: "Italic Text",
41
43
  Icon: import_icons.FontItalicIcon,
42
- presetStyle,
43
- props: import_italic_props.default
44
+ presetStyle
44
45
  };
45
- var italic_ws_default = meta;
46
+ const propsMeta = import_component_type.WsComponentPropsMeta.parse({
47
+ props: import_italic_props.default
48
+ });