@webstudio-is/sdk-components-react 0.191.4 → 0.192.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 (243) hide show
  1. package/lib/__generated__/blockquote.props.js +514 -0
  2. package/lib/__generated__/body.props.js +508 -0
  3. package/lib/__generated__/bold.props.js +508 -0
  4. package/lib/__generated__/box.props.js +527 -0
  5. package/lib/__generated__/button.props.js +570 -0
  6. package/lib/__generated__/checkbox.props.js +672 -0
  7. package/lib/__generated__/code-text.props.js +509 -0
  8. package/lib/__generated__/form.props.js +556 -0
  9. package/lib/__generated__/heading.props.js +516 -0
  10. package/lib/__generated__/html-embed.props.js +13 -0
  11. package/lib/__generated__/image.props.js +592 -0
  12. package/lib/__generated__/input.props.js +696 -0
  13. package/lib/__generated__/italic.props.js +508 -0
  14. package/lib/__generated__/label.props.js +520 -0
  15. package/lib/__generated__/link.props.js +568 -0
  16. package/lib/__generated__/list-item.props.js +514 -0
  17. package/lib/__generated__/list.props.js +534 -0
  18. package/lib/__generated__/markdown-embed.props.js +7 -0
  19. package/lib/__generated__/option.props.js +532 -0
  20. package/lib/__generated__/paragraph.props.js +508 -0
  21. package/lib/__generated__/radio-button.props.js +672 -0
  22. package/lib/__generated__/select.props.js +556 -0
  23. package/lib/__generated__/separator.props.js +508 -0
  24. package/lib/__generated__/span.props.js +508 -0
  25. package/lib/__generated__/subscript.props.js +508 -0
  26. package/lib/__generated__/superscript.props.js +508 -0
  27. package/lib/__generated__/text.props.js +516 -0
  28. package/lib/__generated__/textarea.props.js +587 -0
  29. package/lib/__generated__/time.props.js +312 -0
  30. package/lib/__generated__/vimeo-play-button.props.js +569 -0
  31. package/lib/__generated__/vimeo-preview-image.props.js +586 -0
  32. package/lib/__generated__/vimeo-spinner.props.js +508 -0
  33. package/lib/__generated__/vimeo.props.js +674 -0
  34. package/lib/__generated__/xml-node.props.js +7 -0
  35. package/lib/__generated__/xml-time.props.js +18 -0
  36. package/lib/blockquote.js +9 -0
  37. package/lib/blockquote.ws.js +79 -0
  38. package/lib/body.js +7 -0
  39. package/lib/body.ws.js +30 -0
  40. package/lib/bold.js +7 -0
  41. package/lib/bold.ws.js +20 -0
  42. package/lib/box.js +9 -0
  43. package/lib/box.ws.js +31 -0
  44. package/lib/button.js +9 -0
  45. package/lib/button.ws.js +43 -0
  46. package/lib/checkbox.js +15 -0
  47. package/lib/checkbox.ws.js +58 -0
  48. package/lib/code-text.js +10 -0
  49. package/lib/code-text.ws.js +59 -0
  50. package/lib/components.js +79 -0
  51. package/lib/content-embed.ws.js +77 -0
  52. package/lib/form.js +7 -0
  53. package/lib/form.ws.js +30 -0
  54. package/lib/fragment.js +7 -0
  55. package/lib/fragment.ws.js +11 -0
  56. package/lib/heading.js +9 -0
  57. package/lib/heading.ws.js +44 -0
  58. package/lib/home_wsKvRSqvkajPPBeycZ-C8.svg +3 -0
  59. package/lib/hooks.js +5 -0
  60. package/lib/html-embed-patchers.js +29 -0
  61. package/lib/html-embed.js +112 -0
  62. package/lib/html-embed.ws.js +46 -0
  63. package/lib/image.js +40 -0
  64. package/lib/image.ws.js +65 -0
  65. package/lib/input.js +17 -0
  66. package/lib/input.ws.js +54 -0
  67. package/lib/italic.js +7 -0
  68. package/lib/italic.ws.js +26 -0
  69. package/lib/label.js +7 -0
  70. package/lib/label.ws.js +42 -0
  71. package/lib/link.js +15 -0
  72. package/lib/link.ws.js +67 -0
  73. package/lib/list-item.js +9 -0
  74. package/lib/list-item.ws.js +39 -0
  75. package/lib/list.js +6 -0
  76. package/lib/list.ws.js +92 -0
  77. package/lib/markdown-embed.js +14 -0
  78. package/lib/markdown-embed.ws.js +111 -0
  79. package/lib/metas.js +81 -0
  80. package/lib/option.js +7 -0
  81. package/lib/option.ws.js +45 -0
  82. package/lib/paragraph.js +7 -0
  83. package/lib/paragraph.ws.js +39 -0
  84. package/lib/props.js +79 -0
  85. package/lib/radio-button.js +15 -0
  86. package/lib/radio-button.ws.js +60 -0
  87. package/lib/rich-text-link.js +8 -0
  88. package/lib/rich-text-link.ws.js +11 -0
  89. package/lib/select.js +19 -0
  90. package/lib/select.ws.js +96 -0
  91. package/lib/separator.js +9 -0
  92. package/lib/separator.ws.js +48 -0
  93. package/lib/slot.js +14 -0
  94. package/lib/slot.ws.js +15 -0
  95. package/lib/span.js +7 -0
  96. package/lib/span.ws.js +20 -0
  97. package/lib/subscript.js +7 -0
  98. package/lib/subscript.ws.js +20 -0
  99. package/lib/superscript.js +7 -0
  100. package/lib/superscript.ws.js +20 -0
  101. package/lib/text.js +10 -0
  102. package/lib/text.ws.js +41 -0
  103. package/lib/textarea.js +7 -0
  104. package/lib/textarea.ws.js +55 -0
  105. package/lib/time.js +319 -0
  106. package/lib/time.ws.js +22 -0
  107. package/lib/types/__generated__/blockquote.props.d.ts +2 -0
  108. package/lib/types/__generated__/body.props.d.ts +2 -0
  109. package/lib/types/__generated__/bold.props.d.ts +2 -0
  110. package/lib/types/__generated__/box.props.d.ts +2 -0
  111. package/lib/types/__generated__/button.props.d.ts +2 -0
  112. package/lib/types/__generated__/checkbox.props.d.ts +2 -0
  113. package/lib/types/__generated__/code-text.props.d.ts +2 -0
  114. package/lib/types/__generated__/form.props.d.ts +2 -0
  115. package/lib/types/__generated__/fragment.props.d.ts +2 -0
  116. package/lib/types/__generated__/heading.props.d.ts +2 -0
  117. package/lib/types/__generated__/html-embed.props.d.ts +2 -0
  118. package/lib/types/__generated__/image.props.d.ts +2 -0
  119. package/lib/types/__generated__/input.props.d.ts +2 -0
  120. package/lib/types/__generated__/italic.props.d.ts +2 -0
  121. package/lib/types/__generated__/label.props.d.ts +2 -0
  122. package/lib/types/__generated__/link.props.d.ts +2 -0
  123. package/lib/types/__generated__/list-item.props.d.ts +2 -0
  124. package/lib/types/__generated__/list.props.d.ts +2 -0
  125. package/lib/types/__generated__/local-date.props.d.ts +2 -0
  126. package/lib/types/__generated__/markdown-embed.props.d.ts +2 -0
  127. package/lib/types/__generated__/option.props.d.ts +2 -0
  128. package/lib/types/__generated__/paragraph.props.d.ts +2 -0
  129. package/lib/types/__generated__/radio-button.props.d.ts +2 -0
  130. package/lib/types/__generated__/rich-text-link.props.d.ts +2 -0
  131. package/lib/types/__generated__/select.props.d.ts +2 -0
  132. package/lib/types/__generated__/separator.props.d.ts +2 -0
  133. package/lib/types/__generated__/slot.props.d.ts +2 -0
  134. package/lib/types/__generated__/span.props.d.ts +2 -0
  135. package/lib/types/__generated__/subscript.props.d.ts +2 -0
  136. package/lib/types/__generated__/superscript.props.d.ts +2 -0
  137. package/lib/types/__generated__/text.props.d.ts +2 -0
  138. package/lib/types/__generated__/textarea.props.d.ts +2 -0
  139. package/lib/types/__generated__/time.props.d.ts +2 -0
  140. package/lib/types/__generated__/vimeo-play-button.props.d.ts +2 -0
  141. package/lib/types/__generated__/vimeo-preview-image.props.d.ts +2 -0
  142. package/lib/types/__generated__/vimeo-spinner.props.d.ts +2 -0
  143. package/lib/types/__generated__/vimeo.props.d.ts +2 -0
  144. package/lib/types/__generated__/xml-node.props.d.ts +2 -0
  145. package/lib/types/__generated__/xml-time.props.d.ts +2 -0
  146. package/lib/types/blockquote.d.ts +2 -0
  147. package/lib/types/blockquote.ws.d.ts +3 -0
  148. package/lib/types/body.d.ts +2 -0
  149. package/lib/types/body.ws.d.ts +3 -0
  150. package/lib/types/bold.d.ts +2 -0
  151. package/lib/types/bold.ws.d.ts +3 -0
  152. package/lib/types/box.d.ts +8 -0
  153. package/lib/types/box.ws.d.ts +3 -0
  154. package/lib/types/button.d.ts +2 -0
  155. package/lib/types/button.ws.d.ts +3 -0
  156. package/lib/types/checkbox.d.ts +4 -0
  157. package/lib/types/checkbox.ws.d.ts +3 -0
  158. package/lib/types/code-text.d.ts +4 -0
  159. package/lib/types/code-text.ws.d.ts +3 -0
  160. package/lib/types/components.d.ts +39 -0
  161. package/lib/types/content-embed.ws.d.ts +2 -0
  162. package/lib/types/form.d.ts +2 -0
  163. package/lib/types/form.ws.d.ts +3 -0
  164. package/lib/types/fragment.d.ts +6 -0
  165. package/lib/types/fragment.ws.d.ts +3 -0
  166. package/lib/types/heading.d.ts +8 -0
  167. package/lib/types/heading.ws.d.ts +3 -0
  168. package/lib/types/hooks.d.ts +2 -0
  169. package/lib/types/html-embed-patchers.d.ts +2 -0
  170. package/lib/types/html-embed.d.ts +12 -0
  171. package/lib/types/html-embed.test.d.ts +1 -0
  172. package/lib/types/html-embed.ws.d.ts +3 -0
  173. package/lib/types/image.d.ts +8 -0
  174. package/lib/types/image.ws.d.ts +11 -0
  175. package/lib/types/input.d.ts +4 -0
  176. package/lib/types/input.ws.d.ts +3 -0
  177. package/lib/types/italic.d.ts +2 -0
  178. package/lib/types/italic.ws.d.ts +3 -0
  179. package/lib/types/label.d.ts +2 -0
  180. package/lib/types/label.ws.d.ts +3 -0
  181. package/lib/types/link.d.ts +7 -0
  182. package/lib/types/link.ws.d.ts +3 -0
  183. package/lib/types/list-item.d.ts +2 -0
  184. package/lib/types/list-item.ws.d.ts +3 -0
  185. package/lib/types/list.d.ts +10 -0
  186. package/lib/types/list.ws.d.ts +3 -0
  187. package/lib/types/markdown-embed.d.ts +7 -0
  188. package/lib/types/markdown-embed.ws.d.ts +3 -0
  189. package/lib/types/metas.d.ts +40 -0
  190. package/lib/types/option.d.ts +2 -0
  191. package/lib/types/option.ws.d.ts +3 -0
  192. package/lib/types/paragraph.d.ts +2 -0
  193. package/lib/types/paragraph.ws.d.ts +3 -0
  194. package/lib/types/props.d.ts +39 -0
  195. package/lib/types/radio-button.d.ts +4 -0
  196. package/lib/types/radio-button.ws.d.ts +3 -0
  197. package/lib/types/rich-text-link.d.ts +2 -0
  198. package/lib/types/rich-text-link.ws.d.ts +3 -0
  199. package/lib/types/select.d.ts +4 -0
  200. package/lib/types/select.ws.d.ts +3 -0
  201. package/lib/types/separator.d.ts +2 -0
  202. package/lib/types/separator.ws.d.ts +3 -0
  203. package/lib/types/slot.d.ts +6 -0
  204. package/lib/types/slot.ws.d.ts +3 -0
  205. package/lib/types/span.d.ts +2 -0
  206. package/lib/types/span.ws.d.ts +3 -0
  207. package/lib/types/subscript.d.ts +2 -0
  208. package/lib/types/subscript.ws.d.ts +3 -0
  209. package/lib/types/superscript.d.ts +2 -0
  210. package/lib/types/superscript.ws.d.ts +3 -0
  211. package/lib/types/test-utils/cartesian.d.ts +2 -0
  212. package/lib/types/text.d.ts +8 -0
  213. package/lib/types/text.ws.d.ts +3 -0
  214. package/lib/types/textarea.d.ts +2 -0
  215. package/lib/types/textarea.ws.d.ts +3 -0
  216. package/lib/types/time.d.ts +18 -0
  217. package/lib/types/time.test.d.ts +1 -0
  218. package/lib/types/time.ws.d.ts +3 -0
  219. package/lib/types/vimeo-play-button.d.ts +3 -0
  220. package/lib/types/vimeo-play-button.ws.d.ts +3 -0
  221. package/lib/types/vimeo-preview-image.d.ts +284 -0
  222. package/lib/types/vimeo-preview-image.ws.d.ts +3 -0
  223. package/lib/types/vimeo-spinner.d.ts +1 -0
  224. package/lib/types/vimeo-spinner.ws.d.ts +3 -0
  225. package/lib/types/vimeo.d.ts +75 -0
  226. package/lib/types/vimeo.ws.d.ts +3 -0
  227. package/lib/types/xml-node.d.ts +13 -0
  228. package/lib/types/xml-node.ws.d.ts +3 -0
  229. package/lib/types/xml-time.d.ts +6 -0
  230. package/lib/types/xml-time.ws.d.ts +3 -0
  231. package/lib/vimeo-play-button.js +15 -0
  232. package/lib/vimeo-play-button.ws.js +31 -0
  233. package/lib/vimeo-preview-image.js +19 -0
  234. package/lib/vimeo-preview-image.ws.js +19 -0
  235. package/lib/vimeo-spinner.js +13 -0
  236. package/lib/vimeo-spinner.ws.js +25 -0
  237. package/lib/vimeo.js +215 -0
  238. package/lib/vimeo.ws.js +329 -0
  239. package/lib/xml-node.js +44 -0
  240. package/lib/xml-node.ws.js +18 -0
  241. package/lib/xml-time.js +25 -0
  242. package/lib/xml-time.ws.js +18 -0
  243. package/package.json +5 -5
package/lib/vimeo.js ADDED
@@ -0,0 +1,215 @@
1
+ import { jsx as s, jsxs as F, Fragment as z } from "react/jsx-runtime";
2
+ import { colord as T } from "colord";
3
+ import { createContext as q, forwardRef as G, useState as h, useContext as H, useEffect as u } from "react";
4
+ import { ReactSdkContext as Y } from "@webstudio-is/react-sdk/runtime";
5
+ const J = (e) => {
6
+ if (e.url === void 0)
7
+ return;
8
+ let t;
9
+ try {
10
+ const o = new URL(e.url);
11
+ t = new URL(x), t.pathname = `/video${o.pathname}`;
12
+ } catch {
13
+ }
14
+ if (t === void 0)
15
+ return;
16
+ const r = {
17
+ showPortrait: "portrait",
18
+ showByline: "byline",
19
+ showTitle: "title",
20
+ controlsColor: "color",
21
+ showControls: "controls",
22
+ interactiveParams: "interactive_params",
23
+ backgroundMode: "background",
24
+ doNotTrack: "dnt"
25
+ };
26
+ let n;
27
+ for (n in e) {
28
+ const o = e[n];
29
+ if (n === "url" || o === void 0)
30
+ continue;
31
+ const a = r[n] ?? n;
32
+ t.searchParams.append(a, o.toString());
33
+ }
34
+ if (t.searchParams.set("autoplay", "true"), typeof e.controlsColor == "string") {
35
+ const o = T(e.controlsColor).toHex().replace("#", "");
36
+ t.searchParams.set("color", o);
37
+ }
38
+ return e.showPortrait && t.searchParams.set("title", "true"), e.showByline && (t.searchParams.set("portrait", "true"), t.searchParams.set("title", "true")), t.toString();
39
+ }, f = (e) => {
40
+ const t = document.createElement("link");
41
+ t.rel = "preconnect", t.href = e, t.crossOrigin = "true", document.head.appendChild(t);
42
+ };
43
+ let I = !1;
44
+ const K = "https://f.vimeocdn.com", x = "https://player.vimeo.com", b = "https://i.vimeocdn.com", Q = () => {
45
+ I || window.matchMedia("(hover: none)").matches || (f(K), f(x), f(b), I = !0);
46
+ }, W = (e) => {
47
+ try {
48
+ const r = new URL(e).pathname.split("/")[2];
49
+ return r === "" || r == null ? void 0 : r;
50
+ } catch {
51
+ }
52
+ }, X = async (e) => {
53
+ const r = `https://vimeo.com/api/v2/video/${W(e)}.json`, o = (await (await fetch(r)).json())[0].thumbnail_large, a = o.substr(o.lastIndexOf("/") + 1).split("_")[0], i = new URL(b);
54
+ return i.pathname = `/video/${a}.webp`, i.searchParams.append("mw", "1100"), i.searchParams.append("mh", "619"), i.searchParams.append("q", "70"), i;
55
+ }, Z = () => /* @__PURE__ */ s(
56
+ "div",
57
+ {
58
+ style: {
59
+ display: "flex",
60
+ width: "100%",
61
+ height: "100%",
62
+ alignItems: "center",
63
+ justifyContent: "center",
64
+ fontSize: "1.2em"
65
+ },
66
+ children: 'Open the "Settings" panel and paste a video URL, e.g. https://vimeo.com/831343124.'
67
+ }
68
+ ), tt = ({
69
+ status: e,
70
+ loading: t,
71
+ videoUrl: r,
72
+ previewImageUrl: n,
73
+ autoplay: o,
74
+ renderer: a,
75
+ showPreview: i,
76
+ onStatusChange: c,
77
+ onPreviewImageUrlChange: l
78
+ }) => {
79
+ const [m, p] = h(0);
80
+ if (u(() => {
81
+ o && a !== "canvas" && e === "initial" && c("loading");
82
+ }, [o, e, a, c]), u(() => {
83
+ a !== "canvas" && Q();
84
+ }, [a]), u(() => {
85
+ if (r !== void 0) {
86
+ if (i === !1) {
87
+ l(void 0);
88
+ return;
89
+ }
90
+ n === void 0 && X(r).then(l).catch(() => {
91
+ console.error(`Could not load preview image for ${r}`);
92
+ });
93
+ }
94
+ }, [l, i, r, n]), !(a === "canvas" || e === "initial"))
95
+ return /* @__PURE__ */ s(
96
+ "iframe",
97
+ {
98
+ src: r,
99
+ loading: t,
100
+ allow: "accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture;",
101
+ allowFullScreen: !0,
102
+ style: {
103
+ position: "absolute",
104
+ width: "100%",
105
+ height: "100%",
106
+ opacity: m,
107
+ transition: "opacity 1s",
108
+ border: "none"
109
+ },
110
+ onLoad: () => {
111
+ c("ready"), p(1);
112
+ }
113
+ }
114
+ );
115
+ }, et = q({
116
+ onInitPlayer: () => {
117
+ },
118
+ status: "initial"
119
+ }), rt = G(
120
+ ({
121
+ url: e,
122
+ loading: t = "lazy",
123
+ autoplay: r = !1,
124
+ autopause: n = !0,
125
+ backgroundMode: o = !1,
126
+ showByline: a = !1,
127
+ showControls: i = !0,
128
+ doNotTrack: c = !1,
129
+ keyboard: l = !0,
130
+ loop: m = !1,
131
+ muted: p = !1,
132
+ pip: R = !1,
133
+ playsinline: U = !0,
134
+ showPortrait: S = !0,
135
+ quality: L = "auto",
136
+ responsive: k = !0,
137
+ speed: E = !1,
138
+ showTitle: _ = !1,
139
+ transparent: j = !0,
140
+ showPreview: M = !1,
141
+ autopip: N,
142
+ controlsColor: O,
143
+ interactiveParams: V,
144
+ texttrack: $,
145
+ children: A,
146
+ ...B
147
+ }, d) => {
148
+ const [v, y] = h("initial"), [w, D] = h(), { renderer: g } = H(Y), P = J({
149
+ url: e,
150
+ autoplay: r,
151
+ autopause: n,
152
+ backgroundMode: o,
153
+ showControls: i,
154
+ controlsColor: O,
155
+ doNotTrack: c,
156
+ interactiveParams: V,
157
+ keyboard: l,
158
+ loop: m,
159
+ muted: p,
160
+ pip: R,
161
+ playsinline: U,
162
+ quality: L,
163
+ responsive: k,
164
+ speed: E,
165
+ texttrack: $,
166
+ showTitle: _,
167
+ transparent: j,
168
+ showPortrait: S,
169
+ autopip: N
170
+ });
171
+ return /* @__PURE__ */ s(
172
+ et.Provider,
173
+ {
174
+ value: {
175
+ status: v,
176
+ previewImageUrl: w,
177
+ onInitPlayer() {
178
+ g !== "canvas" && y("loading");
179
+ }
180
+ },
181
+ children: /* @__PURE__ */ s(
182
+ "div",
183
+ {
184
+ ...B,
185
+ ref: (C) => {
186
+ d !== null && (typeof d == "function" ? d(C) : d.current = C);
187
+ },
188
+ children: P === void 0 ? /* @__PURE__ */ s(Z, {}) : /* @__PURE__ */ F(z, { children: [
189
+ A,
190
+ /* @__PURE__ */ s(
191
+ tt,
192
+ {
193
+ autoplay: r,
194
+ videoUrl: P,
195
+ previewImageUrl: w,
196
+ loading: t,
197
+ showPreview: M,
198
+ renderer: g,
199
+ status: v,
200
+ onStatusChange: y,
201
+ onPreviewImageUrlChange: D
202
+ }
203
+ )
204
+ ] })
205
+ }
206
+ )
207
+ }
208
+ );
209
+ }
210
+ );
211
+ rt.displayName = "Vimeo";
212
+ export {
213
+ rt as Vimeo,
214
+ et as VimeoContext
215
+ };
@@ -0,0 +1,329 @@
1
+ import { VimeoIcon as e, SpinnerIcon as t, PlayIcon as p } from "@webstudio-is/icons/svg";
2
+ import { defaultStates as o } from "@webstudio-is/react-sdk";
3
+ import { div as r } from "@webstudio-is/sdk/normalize.css";
4
+ import { props as a } from "./__generated__/vimeo.props.js";
5
+ const n = {
6
+ div: r
7
+ }, s = {
8
+ category: "media",
9
+ type: "container",
10
+ description: "Add a video to your page that is hosted on Vimeo. Paste a Vimeo URL and configure the video in the Settings tab.",
11
+ order: 1,
12
+ icon: e,
13
+ states: o,
14
+ presetStyle: n,
15
+ constraints: {
16
+ relation: "ancestor",
17
+ component: { $nin: ["Button", "Link", "Heading"] }
18
+ },
19
+ template: [
20
+ {
21
+ type: "instance",
22
+ component: "Vimeo",
23
+ styles: [
24
+ {
25
+ property: "position",
26
+ value: { type: "keyword", value: "relative" }
27
+ },
28
+ {
29
+ property: "aspectRatio",
30
+ value: { type: "keyword", value: "640/360" }
31
+ },
32
+ {
33
+ property: "width",
34
+ value: { type: "unit", value: 100, unit: "%" }
35
+ }
36
+ ],
37
+ children: [
38
+ {
39
+ type: "instance",
40
+ component: "VimeoPreviewImage",
41
+ styles: [
42
+ {
43
+ property: "position",
44
+ value: { type: "keyword", value: "absolute" }
45
+ },
46
+ {
47
+ property: "objectFit",
48
+ value: { type: "keyword", value: "cover" }
49
+ },
50
+ {
51
+ property: "width",
52
+ value: { type: "unit", value: 100, unit: "%" }
53
+ },
54
+ {
55
+ property: "height",
56
+ value: { type: "unit", value: 100, unit: "%" }
57
+ },
58
+ {
59
+ property: "borderTopLeftRadius",
60
+ value: { type: "unit", value: 20, unit: "px" }
61
+ },
62
+ {
63
+ property: "borderTopRightRadius",
64
+ value: { type: "unit", value: 20, unit: "px" }
65
+ },
66
+ {
67
+ property: "borderBottomLeftRadius",
68
+ value: { type: "unit", value: 20, unit: "px" }
69
+ },
70
+ {
71
+ property: "borderBottomRightRadius",
72
+ value: { type: "unit", value: 20, unit: "px" }
73
+ },
74
+ {
75
+ property: "objectPosition",
76
+ value: { type: "keyword", value: "cover" }
77
+ }
78
+ ],
79
+ children: [],
80
+ props: [
81
+ {
82
+ type: "string",
83
+ name: "alt",
84
+ value: "Vimeo video preview image"
85
+ },
86
+ {
87
+ type: "string",
88
+ name: "sizes",
89
+ value: "100vw"
90
+ }
91
+ ]
92
+ },
93
+ {
94
+ type: "instance",
95
+ component: "VimeoSpinner",
96
+ label: "Spinner",
97
+ styles: [
98
+ {
99
+ property: "position",
100
+ value: { type: "keyword", value: "absolute" }
101
+ },
102
+ {
103
+ property: "top",
104
+ value: { type: "unit", value: 50, unit: "%" }
105
+ },
106
+ {
107
+ property: "left",
108
+ value: { type: "unit", value: 50, unit: "%" }
109
+ },
110
+ {
111
+ property: "width",
112
+ value: { type: "unit", value: 70, unit: "px" }
113
+ },
114
+ {
115
+ property: "height",
116
+ value: { type: "unit", value: 70, unit: "px" }
117
+ },
118
+ {
119
+ property: "marginTop",
120
+ value: { type: "unit", value: -35, unit: "px" }
121
+ },
122
+ {
123
+ property: "marginLeft",
124
+ value: { type: "unit", value: -35, unit: "px" }
125
+ }
126
+ ],
127
+ children: [
128
+ {
129
+ type: "instance",
130
+ component: "HtmlEmbed",
131
+ label: "Spinner SVG",
132
+ props: [
133
+ {
134
+ type: "string",
135
+ name: "code",
136
+ value: t
137
+ }
138
+ ],
139
+ children: []
140
+ }
141
+ ]
142
+ },
143
+ {
144
+ type: "instance",
145
+ component: "VimeoPlayButton",
146
+ props: [
147
+ {
148
+ type: "string",
149
+ name: "aria-label",
150
+ value: "Play button"
151
+ }
152
+ ],
153
+ styles: [
154
+ {
155
+ property: "position",
156
+ value: { type: "keyword", value: "absolute" }
157
+ },
158
+ {
159
+ property: "width",
160
+ value: { type: "unit", value: 140, unit: "px" }
161
+ },
162
+ {
163
+ property: "height",
164
+ value: { type: "unit", value: 80, unit: "px" }
165
+ },
166
+ {
167
+ property: "top",
168
+ value: { type: "unit", value: 50, unit: "%" }
169
+ },
170
+ {
171
+ property: "left",
172
+ value: { type: "unit", value: 50, unit: "%" }
173
+ },
174
+ {
175
+ property: "marginTop",
176
+ value: { type: "unit", value: -40, unit: "px" }
177
+ },
178
+ {
179
+ property: "marginLeft",
180
+ value: { type: "unit", value: -70, unit: "px" }
181
+ },
182
+ {
183
+ property: "display",
184
+ value: { type: "keyword", value: "flex" }
185
+ },
186
+ {
187
+ property: "alignItems",
188
+ value: { type: "keyword", value: "center" }
189
+ },
190
+ {
191
+ property: "justifyContent",
192
+ value: { type: "keyword", value: "center" }
193
+ },
194
+ {
195
+ property: "borderTopStyle",
196
+ value: { type: "keyword", value: "none" }
197
+ },
198
+ {
199
+ property: "borderRightStyle",
200
+ value: { type: "keyword", value: "none" }
201
+ },
202
+ {
203
+ property: "borderBottomStyle",
204
+ value: { type: "keyword", value: "none" }
205
+ },
206
+ {
207
+ property: "borderLeftStyle",
208
+ value: { type: "keyword", value: "none" }
209
+ },
210
+ {
211
+ property: "borderTopLeftRadius",
212
+ value: { type: "unit", value: 5, unit: "px" }
213
+ },
214
+ {
215
+ property: "borderTopRightRadius",
216
+ value: { type: "unit", value: 5, unit: "px" }
217
+ },
218
+ {
219
+ property: "borderBottomLeftRadius",
220
+ value: { type: "unit", value: 5, unit: "px" }
221
+ },
222
+ {
223
+ property: "borderBottomRightRadius",
224
+ value: { type: "unit", value: 5, unit: "px" }
225
+ },
226
+ {
227
+ property: "cursor",
228
+ value: { type: "keyword", value: "pointer" }
229
+ },
230
+ {
231
+ property: "backgroundColor",
232
+ value: {
233
+ type: "rgb",
234
+ r: 18,
235
+ g: 18,
236
+ b: 18,
237
+ alpha: 1
238
+ }
239
+ },
240
+ {
241
+ property: "color",
242
+ value: {
243
+ type: "rgb",
244
+ r: 255,
245
+ g: 255,
246
+ b: 255,
247
+ alpha: 1
248
+ }
249
+ },
250
+ {
251
+ state: ":hover",
252
+ property: "backgroundColor",
253
+ value: {
254
+ type: "rgb",
255
+ r: 0,
256
+ g: 173,
257
+ b: 239,
258
+ alpha: 1
259
+ }
260
+ }
261
+ ],
262
+ children: [
263
+ {
264
+ type: "instance",
265
+ component: "Box",
266
+ label: "Play Icon",
267
+ styles: [
268
+ {
269
+ property: "width",
270
+ value: { type: "unit", value: 60, unit: "px" }
271
+ },
272
+ {
273
+ property: "height",
274
+ value: { type: "unit", value: 60, unit: "px" }
275
+ }
276
+ ],
277
+ props: [
278
+ {
279
+ type: "string",
280
+ name: "aria-hidden",
281
+ value: "true"
282
+ }
283
+ ],
284
+ children: [
285
+ {
286
+ type: "instance",
287
+ component: "HtmlEmbed",
288
+ label: "Play SVG",
289
+ props: [
290
+ {
291
+ type: "string",
292
+ name: "code",
293
+ value: p
294
+ }
295
+ ],
296
+ children: []
297
+ }
298
+ ]
299
+ }
300
+ ]
301
+ }
302
+ ]
303
+ }
304
+ ]
305
+ }, u = [
306
+ "id",
307
+ "className",
308
+ "url",
309
+ "quality",
310
+ "showPreview",
311
+ "autoplay",
312
+ "loading",
313
+ "backgroundMode",
314
+ "doNotTrack",
315
+ "loop",
316
+ "muted",
317
+ "showPortrait",
318
+ "showByline",
319
+ "showTitle",
320
+ "showControls",
321
+ "controlsColor"
322
+ ], d = {
323
+ props: a,
324
+ initialProps: u
325
+ };
326
+ export {
327
+ s as meta,
328
+ d as propsMeta
329
+ };
@@ -0,0 +1,44 @@
1
+ import { jsxs as n, jsx as p } from "react/jsx-runtime";
2
+ import { ReactSdkContext as y } from "@webstudio-is/react-sdk/runtime";
3
+ import { forwardRef as b, useContext as h, createElement as u, Children as g } from "react";
4
+ const x = b(
5
+ ({ tag: i = "", children: e, ...o }, c) => {
6
+ const { renderer: f } = h(y), s = Object.entries(o).filter(
7
+ ([t]) => t.startsWith("data-") === !1 && t.startsWith("aria-") === !1
8
+ ).filter(([t]) => t !== "tabIndex").filter(([, t]) => typeof t != "function");
9
+ if (f === void 0) {
10
+ const t = Object.fromEntries(s);
11
+ return u(i, t, e);
12
+ }
13
+ const r = g.toArray(e), l = r.length > 0 && r.every((t) => typeof t == "string"), a = i.replace(/^[^\p{L}_]+/u, "").replaceAll(/[^\p{L}\p{N}\-._:]+/gu, ""), d = s.map(
14
+ ([t, m]) => `${t}=${JSON.stringify(m)}`
15
+ );
16
+ return /* @__PURE__ */ n("div", { ...o, children: [
17
+ /* @__PURE__ */ n("span", { style: { color: "rgb(16, 23, 233)" }, children: [
18
+ "<",
19
+ [a, ...d].join(" "),
20
+ ">"
21
+ ] }),
22
+ r.length > 0 && /* @__PURE__ */ p(
23
+ "div",
24
+ {
25
+ ref: c,
26
+ style: {
27
+ display: l ? "inline" : "block",
28
+ marginLeft: l ? 0 : "1rem"
29
+ },
30
+ children: e
31
+ }
32
+ ),
33
+ /* @__PURE__ */ n("span", { style: { color: "rgb(16, 23, 233)" }, children: [
34
+ "</",
35
+ a,
36
+ ">"
37
+ ] })
38
+ ] });
39
+ }
40
+ );
41
+ x.displayName = "XmlNode";
42
+ export {
43
+ x as XmlNode
44
+ };
@@ -0,0 +1,18 @@
1
+ import { XmlIcon as o } from "@webstudio-is/icons/svg";
2
+ import "@webstudio-is/react-sdk";
3
+ import { props as t } from "./__generated__/xml-node.props.js";
4
+ const i = {
5
+ category: "xml",
6
+ order: 6,
7
+ type: "container",
8
+ icon: o,
9
+ stylable: !1,
10
+ description: "XML Node"
11
+ }, a = {
12
+ props: t,
13
+ initialProps: ["tag"]
14
+ };
15
+ export {
16
+ i as meta,
17
+ a as propsMeta
18
+ };
@@ -0,0 +1,25 @@
1
+ import { jsx as f } from "react/jsx-runtime";
2
+ import { forwardRef as m, useContext as a } from "react";
3
+ import { ReactSdkContext as T } from "@webstudio-is/react-sdk/runtime";
4
+ const l = "short", u = "dateTime attribute is not set", N = "", c = (e) => {
5
+ if (e === "")
6
+ return;
7
+ let t = new Date(e);
8
+ if (Number.isNaN(t.getTime()) === !1)
9
+ return t;
10
+ if (/^\d+$/.test(e)) {
11
+ let o = Number(e);
12
+ e.length === 10 && (o *= 1e3), t = new Date(o);
13
+ }
14
+ if (Number.isNaN(t.getTime()) === !1)
15
+ return t;
16
+ }, d = m(
17
+ ({ dateStyle: e = l, datetime: t = u }, o) => {
18
+ const { renderer: i } = a(T), s = t === null ? N : t.toString(), n = c(s);
19
+ let r = s;
20
+ return n && (r = n.toISOString(), e === "short" && (r = r.split("T")[0])), i === void 0 ? r : /* @__PURE__ */ f("time", { ref: o, children: r });
21
+ }
22
+ );
23
+ export {
24
+ d as XmlTime
25
+ };
@@ -0,0 +1,18 @@
1
+ import { CalendarIcon as t } from "@webstudio-is/icons/svg";
2
+ import "@webstudio-is/react-sdk";
3
+ import { props as e } from "./__generated__/xml-time.props.js";
4
+ const i = {
5
+ category: "xml",
6
+ type: "container",
7
+ description: "Converts machine-readable date and time to ISO format.",
8
+ icon: t,
9
+ stylable: !1,
10
+ order: 7
11
+ }, n = {
12
+ props: e,
13
+ initialProps: ["datetime", "dateStyle"]
14
+ };
15
+ export {
16
+ i as meta,
17
+ n as propsMeta
18
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webstudio-is/sdk-components-react",
3
- "version": "0.191.4",
3
+ "version": "0.192.0",
4
4
  "description": "Webstudio default library for react",
5
5
  "author": "Webstudio <github@webstudio.is>",
6
6
  "homepage": "https://webstudio.is",
@@ -42,10 +42,10 @@
42
42
  "@react-aria/utils": "^3.25.3",
43
43
  "colord": "^2.9.3",
44
44
  "micromark": "^4.0.0",
45
- "@webstudio-is/icons": "0.191.4",
46
- "@webstudio-is/image": "0.191.4",
47
- "@webstudio-is/react-sdk": "0.191.4",
48
- "@webstudio-is/sdk": "0.191.4"
45
+ "@webstudio-is/icons": "0.192.0",
46
+ "@webstudio-is/react-sdk": "0.192.0",
47
+ "@webstudio-is/sdk": "0.192.0",
48
+ "@webstudio-is/image": "0.192.0"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@testing-library/react": "^14.2.2",