Skip to content

Commit e5369ef

Browse files
authored
experimental: Youtube animations (#5072)
## Description ### Not finished, should be merged as has small issues fixed https://video-viking.wstd.work/ https://video-viking.wstd.work/entry ## Steps for reproduction 1. click button 2. expect xyz ## Code Review - [ ] hi @kof, I need you to do - conceptual review (architecture, feature-correctness) - detailed review (read every line) - test it on preview ## Before requesting a review - [ ] made a self-review - [ ] added inline comments where things may be not obvious (the "why", not "what") ## Before merging - [ ] tested locally and on preview environment (preview dev login: 0000) - [ ] updated [test cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md) document - [ ] added tests - [ ] if any new env variables are added, added them to `.env` file
1 parent c5ce5f6 commit e5369ef

File tree

31 files changed

+1070
-30
lines changed

31 files changed

+1070
-30
lines changed

apps/builder/app/builder/features/command-panel/command-panel.tsx

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@ import {
2020
Separator,
2121
} from "@webstudio-is/design-system";
2222
import { compareMedia } from "@webstudio-is/css-engine";
23-
import { componentCategories, collectionComponent } from "@webstudio-is/sdk";
23+
import {
24+
componentCategories,
25+
collectionComponent,
26+
parseComponentName,
27+
} from "@webstudio-is/sdk";
2428
import type { Breakpoint, Page } from "@webstudio-is/sdk";
2529
import type { TemplateMeta } from "@webstudio-is/template";
2630
import {
@@ -104,12 +108,24 @@ const $componentOptions = computed(
104108
if (category === "hidden" || category === "internal") {
105109
continue;
106110
}
111+
107112
if (
108113
category === "animations" &&
109114
isFeatureEnabled("animation") === false
110115
) {
111116
continue;
112117
}
118+
119+
const [namespace, shortName] = parseComponentName(name);
120+
121+
if (
122+
isFeatureEnabled("videoAnimation") === false &&
123+
namespace === "@webstudio-is/sdk-components-animation" &&
124+
shortName === "VideoAnimation"
125+
) {
126+
continue;
127+
}
128+
113129
// show only xml category and collection component in xml documents
114130
if (selectedPage?.meta.documentType === "xml") {
115131
if (category !== "xml" && name !== collectionComponent) {
@@ -136,6 +152,17 @@ const $componentOptions = computed(
136152
if (meta.category === "hidden" || meta.category === "internal") {
137153
continue;
138154
}
155+
156+
const [namespace, shortName] = parseComponentName(name);
157+
158+
if (
159+
isFeatureEnabled("videoAnimation") === false &&
160+
namespace === "@webstudio-is/sdk-components-animation" &&
161+
shortName === "VideoAnimation"
162+
) {
163+
continue;
164+
}
165+
139166
const componentMeta = metas.get(name);
140167
const label =
141168
meta.label ??

apps/builder/app/builder/features/components/components.tsx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,22 @@ const $metas = computed(
6060
const availableComponents = new Set<string>();
6161
const metas: Meta[] = [];
6262
for (const [name, componentMeta] of componentMetas) {
63-
const [namespace] = parseComponentName(name);
63+
const [namespace, shortName] = parseComponentName(name);
6464
if (
6565
isFeatureEnabled("animation") === false &&
6666
namespace === "@webstudio-is/sdk-components-animation"
6767
) {
6868
continue;
6969
}
7070

71+
if (
72+
isFeatureEnabled("videoAnimation") === false &&
73+
namespace === "@webstudio-is/sdk-components-animation" &&
74+
shortName === "VideoAnimation"
75+
) {
76+
continue;
77+
}
78+
7179
// only set available components from component meta
7280
availableComponents.add(name);
7381
metas.push({
@@ -81,6 +89,15 @@ const $metas = computed(
8189
}
8290
for (const [name, templateMeta] of templates) {
8391
const componentMeta = componentMetas.get(name);
92+
const [namespace, shortName] = parseComponentName(name);
93+
if (
94+
isFeatureEnabled("videoAnimation") === false &&
95+
namespace === "@webstudio-is/sdk-components-animation" &&
96+
shortName === "VideoAnimation"
97+
) {
98+
continue;
99+
}
100+
84101
metas.push({
85102
name,
86103
category: templateMeta.category ?? "hidden",

apps/builder/app/builder/features/settings-panel/props-section/animation/animation-panel-content.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,12 @@ const RangeValueInput = ({
117117
onChange={(styleValue) => {
118118
setIntermediateValue(styleValue);
119119

120-
const parsedValue = rangeUnitValueSchema.safeParse(styleValue);
121-
if (parsedValue.success) {
122-
onChange(parsedValue.data, true);
123-
return;
120+
if (styleValue?.type !== "intermediate") {
121+
const parsedValue = rangeUnitValueSchema.safeParse(styleValue);
122+
if (parsedValue.success) {
123+
onChange(parsedValue.data, true);
124+
return;
125+
}
124126
}
125127

126128
onChange(undefined, true);

apps/builder/app/builder/features/settings-panel/props-section/animation/animation-section.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,10 @@ const InsetValueInput = ({
156156
intermediateValue={intermediateValue}
157157
onChange={(styleValue) => {
158158
setIntermediateValue(styleValue);
159-
handleEphemeralChange(styleValue);
159+
160+
if (styleValue?.type !== "intermediate") {
161+
handleEphemeralChange(styleValue);
162+
}
160163
}}
161164
getOptions={() => [
162165
{

https/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,8 @@ sudo chown -R $USER:$(id -g) /tmp/letsencrypt
3434

3535
cp /tmp/letsencrypt/data/live/wstd.dev/fullchain.pem ./https/fullchain.pem
3636
cp /tmp/letsencrypt/data/live/wstd.dev/privkey.pem ./https/privkey.pem
37+
38+
# Haproxy key
39+
cd https
40+
cat ./fullchain.pem ./privkey.pem > ./haproxy.pem
3741
```

https/haproxy.pem

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDfTCCAwOgAwIBAgISBGlZgTahbbnWR8+AkWolrm9LMAoGCCqGSM49BAMDMDIx
3+
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
4+
NTAeFw0yNTAyMTcxODI4MTVaFw0yNTA1MTgxODI4MTRaMBMxETAPBgNVBAMTCHdz
5+
dGQuZGV2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE58iEIOTmVWcpdfZ1LCUJ
6+
N9YCbBkyQWAoLBw8fGSHYDy6fuJk4nu6CezlbrtztxXwhE2F0mFC1Nt534oE/AM2
7+
N6OCAhYwggISMA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAUBggrBgEFBQcDAQYI
8+
KwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUqUg23PsUvozbnvwDeUnh
9+
H/y5tCEwHwYDVR0jBBgwFoAUnytfzzwhT50Et+0rLMTGcIvS1w0wVQYIKwYBBQUH
10+
AQEESTBHMCEGCCsGAQUFBzABhhVodHRwOi8vZTUuby5sZW5jci5vcmcwIgYIKwYB
11+
BQUHMAKGFmh0dHA6Ly9lNS5pLmxlbmNyLm9yZy8wHwYDVR0RBBgwFoIKKi53c3Rk
12+
LmRldoIId3N0ZC5kZXYwEwYDVR0gBAwwCjAIBgZngQwBAgEwggEEBgorBgEEAdZ5
13+
AgQCBIH1BIHyAPAAdgDPEVbu1S58r/OHW9lpLpvpGnFnSrAX7KwB0lt3zsw7CAAA
14+
AZUVYJRVAAAEAwBHMEUCIBo6ysjtpEwifx6nsCchTzFPgTH4y0bUnroPqRfeTlCW
15+
AiEA6l/rsOp+GO4IwK9kxsl9Vx4NANPd1e6MFUodif3SvGgAdgATSt8atZhCCXgM
16+
b+9MepGkFrcjSc5YV2rfrtqnwqvgIgAAAZUVYJVCAAAEAwBHMEUCIQC+MEiwIE/n
17+
CgObWyawZQxdRkz7mTbzfrdjGKig5CzzqwIgPG7LeDvi8+3g9fRCzMUqCul0/ZR/
18+
I5a0TZWnTLfpgZYwCgYIKoZIzj0EAwMDaAAwZQIweMMytJ56Hpk2K/2veAWGcYIE
19+
MhoarnMQ+SZgu+Quxa7NFnbbRJvoom+dcPxnIFqqAjEAlXhCSHLZLnnNJBVbxTu6
20+
DSNdjRiJpSXkJlsTFvCGGJ8Xy4vBAYlrz1KSyy4AWu0D
21+
-----END CERTIFICATE-----
22+
-----BEGIN CERTIFICATE-----
23+
MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw
24+
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
25+
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
26+
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
27+
RW5jcnlwdDELMAkGA1UEAxMCRTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNCzqK
28+
a2GOtu/cX1jnxkJFVKtj9mZhSAouWXW0gQI3ULc/FnncmOyhKJdyIBwsz9V8UiBO
29+
VHhbhBRrwJCuhezAUUE8Wod/Bk3U/mDR+mwt4X2VEIiiCFQPmRpM5uoKrNijgfgw
30+
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
31+
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSfK1/PPCFPnQS37SssxMZw
32+
i9LXDTAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
33+
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
34+
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
35+
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAH3KdNEVCQdqk0LKyuNImTKdRJY1C
36+
2uw2SJajuhqkyGPY8C+zzsufZ+mgnhnq1A2KVQOSykOEnUbx1cy637rBAihx97r+
37+
bcwbZM6sTDIaEriR/PLk6LKs9Be0uoVxgOKDcpG9svD33J+G9Lcfv1K9luDmSTgG
38+
6XNFIN5vfI5gs/lMPyojEMdIzK9blcl2/1vKxO8WGCcjvsQ1nJ/Pwt8LQZBfOFyV
39+
XP8ubAp/au3dc4EKWG9MO5zcx1qT9+NXRGdVWxGvmBFRAajciMfXME1ZuGmk3/GO
40+
koAM7ZkjZmleyokP1LGzmfJcUd9s7eeu1/9/eg5XlXd/55GtYjAM+C4DG5i7eaNq
41+
cm2F+yxYIPt6cbbtYVNJCGfHWqHEQ4FYStUyFnv8sjyqU8ypgZaNJ9aVcWSICLOI
42+
E1/Qv/7oKsnZCWJ926wU6RqG1OYPGOi1zuABhLw61cuPVDT28nQS/e6z95cJXq0e
43+
K1BcaJ6fJZsmbjRgD5p3mvEf5vdQM7MCEvU0tHbsx2I5mHHJoABHb8KVBgWp/lcX
44+
GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL
45+
sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd
46+
VQD9F6Na/+zmXCc=
47+
-----END CERTIFICATE-----
48+
-----BEGIN PRIVATE KEY-----
49+
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgvt6DDpBvBQ2MIS0K
50+
JoESPznVFSHunvJfrATHECtBkAShRANCAATnyIQg5OZVZyl19nUsJQk31gJsGTJB
51+
YCgsHDx8ZIdgPLp+4mTie7oJ7OVuu3O3FfCETYXSYULU23nfigT8AzY3
52+
-----END PRIVATE KEY-----

https/haproxy.sh

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/bin/bash
2+
3+
# Proxies https://wstd.dev:4001 to http://localhost:4002
4+
# Used for debugging when HTTPS is required
5+
6+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7+
PEM_PATH="$SCRIPT_DIR/haproxy.pem"
8+
TMP_CFG=$(mktemp /tmp/haproxy.XXXXXX)
9+
10+
echo $TMP_CFG
11+
12+
cat <<EOF > "$TMP_CFG"
13+
frontend proxy-https
14+
bind *:4001 ssl crt ${PEM_PATH} alpn h2,http/1.1
15+
default_backend proxy
16+
17+
backend proxy
18+
balance roundrobin
19+
mode http
20+
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
21+
server rgw1 localhost:4002 check
22+
EOF
23+
24+
exec haproxy -f "$TMP_CFG" -db

packages/feature-flags/src/flags.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ export const internalComponents = false;
33
export const unsupportedBrowsers = false;
44
export const aiRadixComponents = false;
55
export const animation = false;
6+
export const videoAnimation = false;
67
export const resourceProp = false;

packages/generate-arg-types/src/arg-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export const propsToArgTypes = (
1616
// Exclude webstudio builder props see react-sdk/src/tree/webstudio-component.tsx
1717
.filter(([propName]) => propName.startsWith("data-ws-") === false)
1818
.filter(([propName]) => propName.startsWith("$webstudio") === false)
19+
.filter(([propName]) => propName.startsWith("$") === false)
1920
// Exclude props that are in the exclude list
2021
.filter(([propName]) => exclude.includes(propName) === false)
2122
.map(([propName, propItem]) => {

0 commit comments

Comments
 (0)