@webstudio-is/sdk 0.203.0 → 0.205.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/index.js +687 -304
- package/lib/types/core-metas.d.ts +35 -0
- package/lib/types/css.d.ts +31 -0
- package/lib/types/css.test.d.ts +1 -0
- package/lib/types/expression.d.ts +7 -5
- package/lib/types/index.d.ts +3 -0
- package/lib/types/schema/animation-schema.d.ts +22925 -0
- package/lib/types/schema/component-meta.d.ts +42 -0
- package/lib/types/schema/data-sources.d.ts +18 -18
- package/lib/types/schema/deployment.d.ts +4 -4
- package/lib/types/schema/pages.d.ts +13 -13
- package/lib/types/schema/prop-meta.d.ts +21 -0
- package/lib/types/schema/props.d.ts +16186 -0
- package/lib/types/schema/webstudio.d.ts +9386 -15
- package/package.json +7 -6
package/lib/index.js
CHANGED
|
@@ -57,7 +57,7 @@ var commonPageFields = {
|
|
|
57
57
|
title: PageTitle,
|
|
58
58
|
history: z2.optional(z2.array(z2.string())),
|
|
59
59
|
rootInstanceId: z2.string(),
|
|
60
|
-
systemDataSourceId: z2.string(),
|
|
60
|
+
systemDataSourceId: z2.string().optional(),
|
|
61
61
|
meta: z2.object({
|
|
62
62
|
description: z2.string().optional(),
|
|
63
63
|
title: z2.string().optional(),
|
|
@@ -88,7 +88,10 @@ var HomePage = z2.object({
|
|
|
88
88
|
...commonPageFields,
|
|
89
89
|
path: HomePagePath
|
|
90
90
|
});
|
|
91
|
-
var PagePath = z2.string().refine((path) => path !== "", "Can't be empty").refine((path) => path !== "/", "Can't be just a /").refine(
|
|
91
|
+
var PagePath = z2.string().refine((path) => path !== "", "Can't be empty").refine((path) => path !== "/", "Can't be just a /").refine(
|
|
92
|
+
(path) => path === "" || path.startsWith("/"),
|
|
93
|
+
"Must start with a / or a full URL e.g. https://website.org"
|
|
94
|
+
).refine((path) => path.endsWith("/") === false, "Can't end with a /").refine((path) => path.includes("//") === false, "Can't contain repeating /").refine(
|
|
92
95
|
(path) => /^[-_a-z0-9*:?\\/.]*$/.test(path),
|
|
93
96
|
"Only a-z, 0-9, -, _, /, :, ?, . and * are allowed"
|
|
94
97
|
).refine(
|
|
@@ -218,20 +221,25 @@ var DataSource = z4.union([
|
|
|
218
221
|
z4.object({
|
|
219
222
|
type: z4.literal("variable"),
|
|
220
223
|
id: DataSourceId,
|
|
221
|
-
|
|
224
|
+
// The instance should always be specified for variables,
|
|
225
|
+
// however, there was a bug in the embed template
|
|
226
|
+
// which produced variables without an instance
|
|
227
|
+
// and these variables will fail validation
|
|
228
|
+
// if we make it required
|
|
229
|
+
scopeInstanceId: z4.string().optional(),
|
|
222
230
|
name: z4.string(),
|
|
223
231
|
value: DataSourceVariableValue
|
|
224
232
|
}),
|
|
225
233
|
z4.object({
|
|
226
234
|
type: z4.literal("parameter"),
|
|
227
235
|
id: DataSourceId,
|
|
228
|
-
scopeInstanceId: z4.string(),
|
|
236
|
+
scopeInstanceId: z4.string().optional(),
|
|
229
237
|
name: z4.string()
|
|
230
238
|
}),
|
|
231
239
|
z4.object({
|
|
232
240
|
type: z4.literal("resource"),
|
|
233
241
|
id: DataSourceId,
|
|
234
|
-
scopeInstanceId: z4.string(),
|
|
242
|
+
scopeInstanceId: z4.string().optional(),
|
|
235
243
|
name: z4.string(),
|
|
236
244
|
resourceId: z4.string()
|
|
237
245
|
})
|
|
@@ -274,98 +282,261 @@ var ResourceRequest = z5.object({
|
|
|
274
282
|
var Resources = z5.map(ResourceId, Resource);
|
|
275
283
|
|
|
276
284
|
// src/schema/props.ts
|
|
285
|
+
import { z as z7 } from "zod";
|
|
286
|
+
|
|
287
|
+
// src/schema/animation-schema.ts
|
|
288
|
+
import { StyleValue } from "@webstudio-is/css-engine";
|
|
277
289
|
import { z as z6 } from "zod";
|
|
278
|
-
var
|
|
290
|
+
var literalUnion = (arr) => z6.union(
|
|
291
|
+
arr.map((val) => z6.literal(val))
|
|
292
|
+
);
|
|
293
|
+
var RANGE_UNITS = [
|
|
294
|
+
"%",
|
|
295
|
+
"px",
|
|
296
|
+
"cm",
|
|
297
|
+
"mm",
|
|
298
|
+
"q",
|
|
299
|
+
"in",
|
|
300
|
+
"pt",
|
|
301
|
+
"pc",
|
|
302
|
+
"em",
|
|
303
|
+
"rem",
|
|
304
|
+
"ex",
|
|
305
|
+
"rex",
|
|
306
|
+
"cap",
|
|
307
|
+
"rcap",
|
|
308
|
+
"ch",
|
|
309
|
+
"rch",
|
|
310
|
+
"lh",
|
|
311
|
+
"rlh",
|
|
312
|
+
"vw",
|
|
313
|
+
"svw",
|
|
314
|
+
"lvw",
|
|
315
|
+
"dvw",
|
|
316
|
+
"vh",
|
|
317
|
+
"svh",
|
|
318
|
+
"lvh",
|
|
319
|
+
"dvh",
|
|
320
|
+
"vi",
|
|
321
|
+
"svi",
|
|
322
|
+
"lvi",
|
|
323
|
+
"dvi",
|
|
324
|
+
"vb",
|
|
325
|
+
"svb",
|
|
326
|
+
"lvb",
|
|
327
|
+
"dvb",
|
|
328
|
+
"vmin",
|
|
329
|
+
"svmin",
|
|
330
|
+
"lvmin",
|
|
331
|
+
"dvmin",
|
|
332
|
+
"vmax",
|
|
333
|
+
"svmax",
|
|
334
|
+
"lvmax",
|
|
335
|
+
"dvmax"
|
|
336
|
+
];
|
|
337
|
+
var rangeUnitSchema = literalUnion(RANGE_UNITS);
|
|
338
|
+
var rangeUnitValueSchema = z6.union([
|
|
339
|
+
z6.object({
|
|
340
|
+
type: z6.literal("unit"),
|
|
341
|
+
value: z6.number(),
|
|
342
|
+
unit: rangeUnitSchema
|
|
343
|
+
}),
|
|
344
|
+
z6.object({
|
|
345
|
+
type: z6.literal("unparsed"),
|
|
346
|
+
value: z6.string()
|
|
347
|
+
})
|
|
348
|
+
]);
|
|
349
|
+
var insetUnitValueSchema = z6.union([
|
|
350
|
+
rangeUnitValueSchema,
|
|
351
|
+
z6.object({
|
|
352
|
+
type: z6.literal("keyword"),
|
|
353
|
+
value: z6.literal("auto")
|
|
354
|
+
})
|
|
355
|
+
]);
|
|
356
|
+
var keyframeStylesSchema = z6.record(StyleValue);
|
|
357
|
+
var animationKeyframeSchema = z6.object({
|
|
358
|
+
offset: z6.number().optional(),
|
|
359
|
+
styles: keyframeStylesSchema
|
|
360
|
+
});
|
|
361
|
+
var keyframeEffectOptionsSchema = z6.object({
|
|
362
|
+
easing: z6.string().optional(),
|
|
363
|
+
fill: z6.union([
|
|
364
|
+
z6.literal("none"),
|
|
365
|
+
z6.literal("forwards"),
|
|
366
|
+
z6.literal("backwards"),
|
|
367
|
+
z6.literal("both")
|
|
368
|
+
]).optional()
|
|
369
|
+
// FillMode
|
|
370
|
+
});
|
|
371
|
+
var scrollNamedRangeSchema = z6.union([
|
|
372
|
+
z6.literal("start"),
|
|
373
|
+
z6.literal("end")
|
|
374
|
+
]);
|
|
375
|
+
var scrollRangeValueSchema = z6.tuple([
|
|
376
|
+
scrollNamedRangeSchema,
|
|
377
|
+
rangeUnitValueSchema
|
|
378
|
+
]);
|
|
379
|
+
var scrollRangeOptionsSchema = z6.object({
|
|
380
|
+
rangeStart: scrollRangeValueSchema.optional(),
|
|
381
|
+
rangeEnd: scrollRangeValueSchema.optional()
|
|
382
|
+
});
|
|
383
|
+
var animationAxisSchema = z6.union([
|
|
384
|
+
z6.literal("block"),
|
|
385
|
+
z6.literal("inline"),
|
|
386
|
+
z6.literal("x"),
|
|
387
|
+
z6.literal("y")
|
|
388
|
+
]);
|
|
389
|
+
var viewNamedRangeSchema = z6.union([
|
|
390
|
+
z6.literal("contain"),
|
|
391
|
+
z6.literal("cover"),
|
|
392
|
+
z6.literal("entry"),
|
|
393
|
+
z6.literal("exit"),
|
|
394
|
+
z6.literal("entry-crossing"),
|
|
395
|
+
z6.literal("exit-crossing")
|
|
396
|
+
]);
|
|
397
|
+
var viewRangeValueSchema = z6.tuple([
|
|
398
|
+
viewNamedRangeSchema,
|
|
399
|
+
rangeUnitValueSchema
|
|
400
|
+
]);
|
|
401
|
+
var viewRangeOptionsSchema = z6.object({
|
|
402
|
+
rangeStart: viewRangeValueSchema.optional(),
|
|
403
|
+
rangeEnd: viewRangeValueSchema.optional()
|
|
404
|
+
});
|
|
405
|
+
var baseAnimation = z6.object({
|
|
406
|
+
name: z6.string().optional(),
|
|
407
|
+
description: z6.string().optional(),
|
|
408
|
+
keyframes: z6.array(animationKeyframeSchema)
|
|
409
|
+
});
|
|
410
|
+
var scrollAnimationSchema = baseAnimation.merge(
|
|
411
|
+
z6.object({
|
|
412
|
+
timing: keyframeEffectOptionsSchema.merge(scrollRangeOptionsSchema)
|
|
413
|
+
})
|
|
414
|
+
);
|
|
415
|
+
var scrollActionSchema = z6.object({
|
|
416
|
+
type: z6.literal("scroll"),
|
|
417
|
+
source: z6.union([z6.literal("closest"), z6.literal("nearest"), z6.literal("root")]).optional(),
|
|
418
|
+
axis: animationAxisSchema.optional(),
|
|
419
|
+
animations: z6.array(scrollAnimationSchema),
|
|
420
|
+
isPinned: z6.boolean().optional(),
|
|
421
|
+
debug: z6.boolean().optional()
|
|
422
|
+
});
|
|
423
|
+
var viewAnimationSchema = baseAnimation.merge(
|
|
424
|
+
z6.object({
|
|
425
|
+
timing: keyframeEffectOptionsSchema.merge(viewRangeOptionsSchema)
|
|
426
|
+
})
|
|
427
|
+
);
|
|
428
|
+
var viewActionSchema = z6.object({
|
|
429
|
+
type: z6.literal("view"),
|
|
430
|
+
subject: z6.string().optional(),
|
|
431
|
+
axis: animationAxisSchema.optional(),
|
|
432
|
+
animations: z6.array(viewAnimationSchema),
|
|
433
|
+
insetStart: insetUnitValueSchema.optional(),
|
|
434
|
+
insetEnd: insetUnitValueSchema.optional(),
|
|
435
|
+
isPinned: z6.boolean().optional(),
|
|
436
|
+
debug: z6.boolean().optional()
|
|
437
|
+
});
|
|
438
|
+
var animationActionSchema = z6.discriminatedUnion("type", [
|
|
439
|
+
scrollActionSchema,
|
|
440
|
+
viewActionSchema
|
|
441
|
+
]);
|
|
442
|
+
|
|
443
|
+
// src/schema/props.ts
|
|
444
|
+
var PropId = z7.string();
|
|
279
445
|
var baseProp = {
|
|
280
446
|
id: PropId,
|
|
281
|
-
instanceId:
|
|
282
|
-
name:
|
|
283
|
-
required:
|
|
447
|
+
instanceId: z7.string(),
|
|
448
|
+
name: z7.string(),
|
|
449
|
+
required: z7.optional(z7.boolean())
|
|
284
450
|
};
|
|
285
|
-
var Prop =
|
|
286
|
-
|
|
451
|
+
var Prop = z7.union([
|
|
452
|
+
z7.object({
|
|
287
453
|
...baseProp,
|
|
288
|
-
type:
|
|
289
|
-
value:
|
|
454
|
+
type: z7.literal("number"),
|
|
455
|
+
value: z7.number()
|
|
290
456
|
}),
|
|
291
|
-
|
|
457
|
+
z7.object({
|
|
292
458
|
...baseProp,
|
|
293
|
-
type:
|
|
294
|
-
value:
|
|
459
|
+
type: z7.literal("string"),
|
|
460
|
+
value: z7.string()
|
|
295
461
|
}),
|
|
296
|
-
|
|
462
|
+
z7.object({
|
|
297
463
|
...baseProp,
|
|
298
|
-
type:
|
|
299
|
-
value:
|
|
464
|
+
type: z7.literal("boolean"),
|
|
465
|
+
value: z7.boolean()
|
|
300
466
|
}),
|
|
301
|
-
|
|
467
|
+
z7.object({
|
|
302
468
|
...baseProp,
|
|
303
|
-
type:
|
|
304
|
-
value:
|
|
469
|
+
type: z7.literal("json"),
|
|
470
|
+
value: z7.unknown()
|
|
305
471
|
}),
|
|
306
|
-
|
|
472
|
+
z7.object({
|
|
307
473
|
...baseProp,
|
|
308
|
-
type:
|
|
309
|
-
value:
|
|
474
|
+
type: z7.literal("asset"),
|
|
475
|
+
value: z7.string()
|
|
310
476
|
// asset id
|
|
311
477
|
}),
|
|
312
|
-
|
|
478
|
+
z7.object({
|
|
313
479
|
...baseProp,
|
|
314
|
-
type:
|
|
315
|
-
value:
|
|
316
|
-
|
|
480
|
+
type: z7.literal("page"),
|
|
481
|
+
value: z7.union([
|
|
482
|
+
z7.string(),
|
|
317
483
|
// page id
|
|
318
|
-
|
|
319
|
-
pageId:
|
|
320
|
-
instanceId:
|
|
484
|
+
z7.object({
|
|
485
|
+
pageId: z7.string(),
|
|
486
|
+
instanceId: z7.string()
|
|
321
487
|
})
|
|
322
488
|
])
|
|
323
489
|
}),
|
|
324
|
-
|
|
490
|
+
z7.object({
|
|
325
491
|
...baseProp,
|
|
326
|
-
type:
|
|
327
|
-
value:
|
|
492
|
+
type: z7.literal("string[]"),
|
|
493
|
+
value: z7.array(z7.string())
|
|
328
494
|
}),
|
|
329
|
-
|
|
495
|
+
z7.object({
|
|
330
496
|
...baseProp,
|
|
331
|
-
type:
|
|
497
|
+
type: z7.literal("parameter"),
|
|
332
498
|
// data source id
|
|
333
|
-
value:
|
|
499
|
+
value: z7.string()
|
|
334
500
|
}),
|
|
335
|
-
|
|
501
|
+
z7.object({
|
|
336
502
|
...baseProp,
|
|
337
|
-
type:
|
|
503
|
+
type: z7.literal("resource"),
|
|
338
504
|
// resource id
|
|
339
|
-
value:
|
|
505
|
+
value: z7.string()
|
|
340
506
|
}),
|
|
341
|
-
|
|
507
|
+
z7.object({
|
|
342
508
|
...baseProp,
|
|
343
|
-
type:
|
|
509
|
+
type: z7.literal("expression"),
|
|
344
510
|
// expression code
|
|
345
|
-
value:
|
|
511
|
+
value: z7.string()
|
|
346
512
|
}),
|
|
347
|
-
|
|
513
|
+
z7.object({
|
|
348
514
|
...baseProp,
|
|
349
|
-
type:
|
|
350
|
-
value:
|
|
351
|
-
|
|
352
|
-
type:
|
|
353
|
-
args:
|
|
354
|
-
code:
|
|
515
|
+
type: z7.literal("action"),
|
|
516
|
+
value: z7.array(
|
|
517
|
+
z7.object({
|
|
518
|
+
type: z7.literal("execute"),
|
|
519
|
+
args: z7.array(z7.string()),
|
|
520
|
+
code: z7.string()
|
|
355
521
|
})
|
|
356
522
|
)
|
|
523
|
+
}),
|
|
524
|
+
z7.object({
|
|
525
|
+
...baseProp,
|
|
526
|
+
type: z7.literal("animationAction"),
|
|
527
|
+
value: animationActionSchema
|
|
357
528
|
})
|
|
358
529
|
]);
|
|
359
|
-
var Props =
|
|
530
|
+
var Props = z7.map(PropId, Prop);
|
|
360
531
|
|
|
361
532
|
// src/schema/breakpoints.ts
|
|
362
|
-
import { z as
|
|
363
|
-
var BreakpointId =
|
|
364
|
-
var Breakpoint =
|
|
533
|
+
import { z as z8 } from "zod";
|
|
534
|
+
var BreakpointId = z8.string();
|
|
535
|
+
var Breakpoint = z8.object({
|
|
365
536
|
id: BreakpointId,
|
|
366
|
-
label:
|
|
367
|
-
minWidth:
|
|
368
|
-
maxWidth:
|
|
537
|
+
label: z8.string(),
|
|
538
|
+
minWidth: z8.number().optional(),
|
|
539
|
+
maxWidth: z8.number().optional()
|
|
369
540
|
}).refine(({ minWidth, maxWidth }) => {
|
|
370
541
|
return (
|
|
371
542
|
// Either min or max width have to be defined
|
|
@@ -373,7 +544,7 @@ var Breakpoint = z7.object({
|
|
|
373
544
|
minWidth === void 0 && maxWidth === void 0
|
|
374
545
|
);
|
|
375
546
|
}, "Either minWidth or maxWidth should be defined");
|
|
376
|
-
var Breakpoints =
|
|
547
|
+
var Breakpoints = z8.map(BreakpointId, Breakpoint);
|
|
377
548
|
var initialBreakpoints = [
|
|
378
549
|
{ id: "placeholder", label: "Base" },
|
|
379
550
|
{ id: "placeholder", label: "Tablet", maxWidth: 991 },
|
|
@@ -382,234 +553,237 @@ var initialBreakpoints = [
|
|
|
382
553
|
];
|
|
383
554
|
|
|
384
555
|
// src/schema/style-sources.ts
|
|
385
|
-
import { z as
|
|
386
|
-
var StyleSourceId =
|
|
387
|
-
var StyleSourceToken =
|
|
388
|
-
type:
|
|
556
|
+
import { z as z9 } from "zod";
|
|
557
|
+
var StyleSourceId = z9.string();
|
|
558
|
+
var StyleSourceToken = z9.object({
|
|
559
|
+
type: z9.literal("token"),
|
|
389
560
|
id: StyleSourceId,
|
|
390
|
-
name:
|
|
561
|
+
name: z9.string()
|
|
391
562
|
});
|
|
392
|
-
var StyleSourceLocal =
|
|
393
|
-
type:
|
|
563
|
+
var StyleSourceLocal = z9.object({
|
|
564
|
+
type: z9.literal("local"),
|
|
394
565
|
id: StyleSourceId
|
|
395
566
|
});
|
|
396
|
-
var StyleSource =
|
|
397
|
-
var StyleSources =
|
|
567
|
+
var StyleSource = z9.union([StyleSourceToken, StyleSourceLocal]);
|
|
568
|
+
var StyleSources = z9.map(StyleSourceId, StyleSource);
|
|
398
569
|
|
|
399
570
|
// src/schema/style-source-selections.ts
|
|
400
|
-
import { z as
|
|
401
|
-
var InstanceId2 =
|
|
402
|
-
var StyleSourceId2 =
|
|
403
|
-
var StyleSourceSelection =
|
|
571
|
+
import { z as z10 } from "zod";
|
|
572
|
+
var InstanceId2 = z10.string();
|
|
573
|
+
var StyleSourceId2 = z10.string();
|
|
574
|
+
var StyleSourceSelection = z10.object({
|
|
404
575
|
instanceId: InstanceId2,
|
|
405
|
-
values:
|
|
576
|
+
values: z10.array(StyleSourceId2)
|
|
406
577
|
});
|
|
407
|
-
var StyleSourceSelections =
|
|
578
|
+
var StyleSourceSelections = z10.map(InstanceId2, StyleSourceSelection);
|
|
408
579
|
|
|
409
580
|
// src/schema/styles.ts
|
|
410
|
-
import { z as
|
|
411
|
-
import { StyleValue } from "@webstudio-is/css-engine";
|
|
412
|
-
var StyleDeclRaw =
|
|
413
|
-
styleSourceId:
|
|
414
|
-
breakpointId:
|
|
415
|
-
state:
|
|
581
|
+
import { z as z11 } from "zod";
|
|
582
|
+
import { StyleValue as StyleValue2 } from "@webstudio-is/css-engine";
|
|
583
|
+
var StyleDeclRaw = z11.object({
|
|
584
|
+
styleSourceId: z11.string(),
|
|
585
|
+
breakpointId: z11.string(),
|
|
586
|
+
state: z11.optional(z11.string()),
|
|
416
587
|
// @todo can't figure out how to make property to be enum
|
|
417
|
-
property:
|
|
418
|
-
value:
|
|
419
|
-
listed:
|
|
588
|
+
property: z11.string(),
|
|
589
|
+
value: StyleValue2,
|
|
590
|
+
listed: z11.boolean().optional()
|
|
420
591
|
});
|
|
421
592
|
var StyleDecl = StyleDeclRaw;
|
|
422
593
|
var getStyleDeclKey = (styleDecl) => {
|
|
423
594
|
return `${styleDecl.styleSourceId}:${styleDecl.breakpointId}:${styleDecl.property}:${styleDecl.state ?? ""}`;
|
|
424
595
|
};
|
|
425
|
-
var Styles =
|
|
596
|
+
var Styles = z11.map(z11.string(), StyleDecl);
|
|
426
597
|
|
|
427
598
|
// src/schema/deployment.ts
|
|
428
|
-
import { z as
|
|
429
|
-
var Templates =
|
|
430
|
-
"vanilla",
|
|
599
|
+
import { z as z12 } from "zod";
|
|
600
|
+
var Templates = z12.enum([
|
|
431
601
|
"docker",
|
|
432
602
|
"vercel",
|
|
433
603
|
"netlify",
|
|
434
|
-
"netlify-functions",
|
|
435
|
-
"netlify-edge-functions",
|
|
436
604
|
"ssg",
|
|
437
605
|
"ssg-netlify",
|
|
438
606
|
"ssg-vercel"
|
|
439
607
|
]);
|
|
440
|
-
var Deployment =
|
|
441
|
-
|
|
442
|
-
destination:
|
|
443
|
-
name:
|
|
444
|
-
assetsDomain:
|
|
608
|
+
var Deployment = z12.union([
|
|
609
|
+
z12.object({
|
|
610
|
+
destination: z12.literal("static"),
|
|
611
|
+
name: z12.string(),
|
|
612
|
+
assetsDomain: z12.string(),
|
|
445
613
|
// Must be validated very strictly
|
|
446
|
-
templates:
|
|
614
|
+
templates: z12.array(Templates)
|
|
447
615
|
}),
|
|
448
|
-
|
|
449
|
-
destination:
|
|
450
|
-
domains:
|
|
451
|
-
assetsDomain:
|
|
616
|
+
z12.object({
|
|
617
|
+
destination: z12.literal("saas").optional(),
|
|
618
|
+
domains: z12.array(z12.string()),
|
|
619
|
+
assetsDomain: z12.string().optional(),
|
|
452
620
|
/**
|
|
453
621
|
* @deprecated This field is deprecated, use `domains` instead.
|
|
454
622
|
*/
|
|
455
|
-
projectDomain:
|
|
456
|
-
excludeWstdDomainFromSearch:
|
|
623
|
+
projectDomain: z12.string().optional(),
|
|
624
|
+
excludeWstdDomainFromSearch: z12.boolean().optional()
|
|
457
625
|
})
|
|
458
626
|
]);
|
|
459
627
|
|
|
460
628
|
// src/schema/webstudio.ts
|
|
461
|
-
import { z as
|
|
462
|
-
var WebstudioFragment =
|
|
463
|
-
children:
|
|
464
|
-
instances:
|
|
465
|
-
assets:
|
|
466
|
-
dataSources:
|
|
467
|
-
resources:
|
|
468
|
-
props:
|
|
469
|
-
breakpoints:
|
|
470
|
-
styleSourceSelections:
|
|
471
|
-
styleSources:
|
|
472
|
-
styles:
|
|
629
|
+
import { z as z13 } from "zod";
|
|
630
|
+
var WebstudioFragment = z13.object({
|
|
631
|
+
children: z13.array(InstanceChild),
|
|
632
|
+
instances: z13.array(Instance),
|
|
633
|
+
assets: z13.array(Asset),
|
|
634
|
+
dataSources: z13.array(DataSource),
|
|
635
|
+
resources: z13.array(Resource),
|
|
636
|
+
props: z13.array(Prop),
|
|
637
|
+
breakpoints: z13.array(Breakpoint),
|
|
638
|
+
styleSourceSelections: z13.array(StyleSourceSelection),
|
|
639
|
+
styleSources: z13.array(StyleSource),
|
|
640
|
+
styles: z13.array(StyleDecl)
|
|
473
641
|
});
|
|
474
642
|
|
|
475
643
|
// src/schema/prop-meta.ts
|
|
476
|
-
import { z as
|
|
644
|
+
import { z as z14 } from "zod";
|
|
477
645
|
var common = {
|
|
478
|
-
label:
|
|
479
|
-
description:
|
|
480
|
-
required:
|
|
646
|
+
label: z14.string().optional(),
|
|
647
|
+
description: z14.string().optional(),
|
|
648
|
+
required: z14.boolean()
|
|
481
649
|
};
|
|
482
|
-
var Number =
|
|
650
|
+
var Number = z14.object({
|
|
483
651
|
...common,
|
|
484
|
-
control:
|
|
485
|
-
type:
|
|
486
|
-
defaultValue:
|
|
652
|
+
control: z14.literal("number"),
|
|
653
|
+
type: z14.literal("number"),
|
|
654
|
+
defaultValue: z14.number().optional()
|
|
487
655
|
});
|
|
488
|
-
var Range =
|
|
656
|
+
var Range = z14.object({
|
|
489
657
|
...common,
|
|
490
|
-
control:
|
|
491
|
-
type:
|
|
492
|
-
defaultValue:
|
|
658
|
+
control: z14.literal("range"),
|
|
659
|
+
type: z14.literal("number"),
|
|
660
|
+
defaultValue: z14.number().optional()
|
|
493
661
|
});
|
|
494
|
-
var Text =
|
|
662
|
+
var Text = z14.object({
|
|
495
663
|
...common,
|
|
496
|
-
control:
|
|
497
|
-
type:
|
|
498
|
-
defaultValue:
|
|
664
|
+
control: z14.literal("text"),
|
|
665
|
+
type: z14.literal("string"),
|
|
666
|
+
defaultValue: z14.string().optional(),
|
|
499
667
|
/**
|
|
500
668
|
* The number of rows in <textarea>. If set to 0 an <input> will be used instead.
|
|
501
669
|
* In line with Storybook team's plan: https://github.com/storybookjs/storybook/issues/21100
|
|
502
670
|
*/
|
|
503
|
-
rows:
|
|
671
|
+
rows: z14.number().optional()
|
|
504
672
|
});
|
|
505
|
-
var Code =
|
|
673
|
+
var Code = z14.object({
|
|
506
674
|
...common,
|
|
507
|
-
control:
|
|
508
|
-
type:
|
|
509
|
-
language:
|
|
510
|
-
defaultValue:
|
|
675
|
+
control: z14.literal("code"),
|
|
676
|
+
type: z14.literal("string"),
|
|
677
|
+
language: z14.union([z14.literal("html"), z14.literal("markdown")]),
|
|
678
|
+
defaultValue: z14.string().optional()
|
|
511
679
|
});
|
|
512
|
-
var CodeText =
|
|
680
|
+
var CodeText = z14.object({
|
|
513
681
|
...common,
|
|
514
|
-
control:
|
|
515
|
-
type:
|
|
516
|
-
defaultValue:
|
|
682
|
+
control: z14.literal("codetext"),
|
|
683
|
+
type: z14.literal("string"),
|
|
684
|
+
defaultValue: z14.string().optional()
|
|
517
685
|
});
|
|
518
|
-
var Color =
|
|
686
|
+
var Color = z14.object({
|
|
519
687
|
...common,
|
|
520
|
-
control:
|
|
521
|
-
type:
|
|
522
|
-
defaultValue:
|
|
688
|
+
control: z14.literal("color"),
|
|
689
|
+
type: z14.literal("string"),
|
|
690
|
+
defaultValue: z14.string().optional()
|
|
523
691
|
});
|
|
524
|
-
var Boolean =
|
|
692
|
+
var Boolean = z14.object({
|
|
525
693
|
...common,
|
|
526
|
-
control:
|
|
527
|
-
type:
|
|
528
|
-
defaultValue:
|
|
694
|
+
control: z14.literal("boolean"),
|
|
695
|
+
type: z14.literal("boolean"),
|
|
696
|
+
defaultValue: z14.boolean().optional()
|
|
529
697
|
});
|
|
530
|
-
var Radio =
|
|
698
|
+
var Radio = z14.object({
|
|
531
699
|
...common,
|
|
532
|
-
control:
|
|
533
|
-
type:
|
|
534
|
-
defaultValue:
|
|
535
|
-
options:
|
|
700
|
+
control: z14.literal("radio"),
|
|
701
|
+
type: z14.literal("string"),
|
|
702
|
+
defaultValue: z14.string().optional(),
|
|
703
|
+
options: z14.array(z14.string())
|
|
536
704
|
});
|
|
537
|
-
var InlineRadio =
|
|
705
|
+
var InlineRadio = z14.object({
|
|
538
706
|
...common,
|
|
539
|
-
control:
|
|
540
|
-
type:
|
|
541
|
-
defaultValue:
|
|
542
|
-
options:
|
|
707
|
+
control: z14.literal("inline-radio"),
|
|
708
|
+
type: z14.literal("string"),
|
|
709
|
+
defaultValue: z14.string().optional(),
|
|
710
|
+
options: z14.array(z14.string())
|
|
543
711
|
});
|
|
544
|
-
var Select =
|
|
712
|
+
var Select = z14.object({
|
|
545
713
|
...common,
|
|
546
|
-
control:
|
|
547
|
-
type:
|
|
548
|
-
defaultValue:
|
|
549
|
-
options:
|
|
714
|
+
control: z14.literal("select"),
|
|
715
|
+
type: z14.literal("string"),
|
|
716
|
+
defaultValue: z14.string().optional(),
|
|
717
|
+
options: z14.array(z14.string())
|
|
550
718
|
});
|
|
551
|
-
var Check =
|
|
719
|
+
var Check = z14.object({
|
|
552
720
|
...common,
|
|
553
|
-
control:
|
|
554
|
-
type:
|
|
555
|
-
defaultValue:
|
|
556
|
-
options:
|
|
721
|
+
control: z14.literal("check"),
|
|
722
|
+
type: z14.literal("string[]"),
|
|
723
|
+
defaultValue: z14.array(z14.string()).optional(),
|
|
724
|
+
options: z14.array(z14.string())
|
|
557
725
|
});
|
|
558
|
-
var InlineCheck =
|
|
726
|
+
var InlineCheck = z14.object({
|
|
559
727
|
...common,
|
|
560
|
-
control:
|
|
561
|
-
type:
|
|
562
|
-
defaultValue:
|
|
563
|
-
options:
|
|
728
|
+
control: z14.literal("inline-check"),
|
|
729
|
+
type: z14.literal("string[]"),
|
|
730
|
+
defaultValue: z14.array(z14.string()).optional(),
|
|
731
|
+
options: z14.array(z14.string())
|
|
564
732
|
});
|
|
565
|
-
var MultiSelect =
|
|
733
|
+
var MultiSelect = z14.object({
|
|
566
734
|
...common,
|
|
567
|
-
control:
|
|
568
|
-
type:
|
|
569
|
-
defaultValue:
|
|
570
|
-
options:
|
|
735
|
+
control: z14.literal("multi-select"),
|
|
736
|
+
type: z14.literal("string[]"),
|
|
737
|
+
defaultValue: z14.array(z14.string()).optional(),
|
|
738
|
+
options: z14.array(z14.string())
|
|
571
739
|
});
|
|
572
|
-
var File =
|
|
740
|
+
var File = z14.object({
|
|
573
741
|
...common,
|
|
574
|
-
control:
|
|
575
|
-
type:
|
|
576
|
-
defaultValue:
|
|
742
|
+
control: z14.literal("file"),
|
|
743
|
+
type: z14.literal("string"),
|
|
744
|
+
defaultValue: z14.string().optional(),
|
|
577
745
|
/** https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept */
|
|
578
|
-
accept:
|
|
746
|
+
accept: z14.string().optional()
|
|
579
747
|
});
|
|
580
|
-
var Url =
|
|
748
|
+
var Url = z14.object({
|
|
581
749
|
...common,
|
|
582
|
-
control:
|
|
583
|
-
type:
|
|
584
|
-
defaultValue:
|
|
750
|
+
control: z14.literal("url"),
|
|
751
|
+
type: z14.literal("string"),
|
|
752
|
+
defaultValue: z14.string().optional()
|
|
585
753
|
});
|
|
586
|
-
var Json =
|
|
754
|
+
var Json = z14.object({
|
|
587
755
|
...common,
|
|
588
|
-
control:
|
|
589
|
-
type:
|
|
590
|
-
defaultValue:
|
|
756
|
+
control: z14.literal("json"),
|
|
757
|
+
type: z14.literal("json"),
|
|
758
|
+
defaultValue: z14.unknown().optional()
|
|
591
759
|
});
|
|
592
|
-
var Date =
|
|
760
|
+
var Date = z14.object({
|
|
593
761
|
...common,
|
|
594
|
-
control:
|
|
762
|
+
control: z14.literal("date"),
|
|
595
763
|
// @todo not sure what type should be here
|
|
596
764
|
// (we don't support Date yet, added for completeness)
|
|
597
|
-
type:
|
|
598
|
-
defaultValue:
|
|
765
|
+
type: z14.literal("string"),
|
|
766
|
+
defaultValue: z14.string().optional()
|
|
767
|
+
});
|
|
768
|
+
var Action = z14.object({
|
|
769
|
+
...common,
|
|
770
|
+
control: z14.literal("action"),
|
|
771
|
+
type: z14.literal("action"),
|
|
772
|
+
defaultValue: z14.undefined().optional()
|
|
599
773
|
});
|
|
600
|
-
var
|
|
774
|
+
var TextContent = z14.object({
|
|
601
775
|
...common,
|
|
602
|
-
control:
|
|
603
|
-
type:
|
|
604
|
-
defaultValue:
|
|
776
|
+
control: z14.literal("textContent"),
|
|
777
|
+
type: z14.literal("string"),
|
|
778
|
+
defaultValue: z14.string().optional()
|
|
605
779
|
});
|
|
606
|
-
var
|
|
780
|
+
var AnimationAction = z14.object({
|
|
607
781
|
...common,
|
|
608
|
-
control:
|
|
609
|
-
type:
|
|
610
|
-
defaultValue:
|
|
782
|
+
control: z14.literal("animationAction"),
|
|
783
|
+
type: z14.literal("animationAction"),
|
|
784
|
+
defaultValue: z14.undefined().optional()
|
|
611
785
|
});
|
|
612
|
-
var PropMeta =
|
|
786
|
+
var PropMeta = z14.union([
|
|
613
787
|
Number,
|
|
614
788
|
Range,
|
|
615
789
|
Text,
|
|
@@ -628,104 +802,105 @@ var PropMeta = z13.union([
|
|
|
628
802
|
Json,
|
|
629
803
|
Date,
|
|
630
804
|
Action,
|
|
631
|
-
TextContent
|
|
805
|
+
TextContent,
|
|
806
|
+
AnimationAction
|
|
632
807
|
]);
|
|
633
808
|
|
|
634
809
|
// src/schema/embed-template.ts
|
|
635
|
-
import { z as
|
|
636
|
-
import { StyleValue as
|
|
637
|
-
var EmbedTemplateText =
|
|
638
|
-
type:
|
|
639
|
-
value:
|
|
640
|
-
placeholder:
|
|
810
|
+
import { z as z15 } from "zod";
|
|
811
|
+
import { StyleValue as StyleValue3 } from "@webstudio-is/css-engine";
|
|
812
|
+
var EmbedTemplateText = z15.object({
|
|
813
|
+
type: z15.literal("text"),
|
|
814
|
+
value: z15.string(),
|
|
815
|
+
placeholder: z15.boolean().optional()
|
|
641
816
|
});
|
|
642
|
-
var EmbedTemplateExpression =
|
|
643
|
-
type:
|
|
644
|
-
value:
|
|
817
|
+
var EmbedTemplateExpression = z15.object({
|
|
818
|
+
type: z15.literal("expression"),
|
|
819
|
+
value: z15.string()
|
|
645
820
|
});
|
|
646
|
-
var EmbedTemplateVariable =
|
|
647
|
-
alias:
|
|
648
|
-
initialValue:
|
|
821
|
+
var EmbedTemplateVariable = z15.object({
|
|
822
|
+
alias: z15.optional(z15.string()),
|
|
823
|
+
initialValue: z15.unknown()
|
|
649
824
|
});
|
|
650
|
-
var EmbedTemplateProp =
|
|
651
|
-
|
|
652
|
-
type:
|
|
653
|
-
name:
|
|
654
|
-
value:
|
|
825
|
+
var EmbedTemplateProp = z15.union([
|
|
826
|
+
z15.object({
|
|
827
|
+
type: z15.literal("number"),
|
|
828
|
+
name: z15.string(),
|
|
829
|
+
value: z15.number()
|
|
655
830
|
}),
|
|
656
|
-
|
|
657
|
-
type:
|
|
658
|
-
name:
|
|
659
|
-
value:
|
|
831
|
+
z15.object({
|
|
832
|
+
type: z15.literal("string"),
|
|
833
|
+
name: z15.string(),
|
|
834
|
+
value: z15.string()
|
|
660
835
|
}),
|
|
661
|
-
|
|
662
|
-
type:
|
|
663
|
-
name:
|
|
664
|
-
value:
|
|
836
|
+
z15.object({
|
|
837
|
+
type: z15.literal("boolean"),
|
|
838
|
+
name: z15.string(),
|
|
839
|
+
value: z15.boolean()
|
|
665
840
|
}),
|
|
666
|
-
|
|
667
|
-
type:
|
|
668
|
-
name:
|
|
669
|
-
value:
|
|
841
|
+
z15.object({
|
|
842
|
+
type: z15.literal("string[]"),
|
|
843
|
+
name: z15.string(),
|
|
844
|
+
value: z15.array(z15.string())
|
|
670
845
|
}),
|
|
671
|
-
|
|
672
|
-
type:
|
|
673
|
-
name:
|
|
674
|
-
value:
|
|
846
|
+
z15.object({
|
|
847
|
+
type: z15.literal("json"),
|
|
848
|
+
name: z15.string(),
|
|
849
|
+
value: z15.unknown()
|
|
675
850
|
}),
|
|
676
|
-
|
|
677
|
-
type:
|
|
678
|
-
name:
|
|
679
|
-
code:
|
|
851
|
+
z15.object({
|
|
852
|
+
type: z15.literal("expression"),
|
|
853
|
+
name: z15.string(),
|
|
854
|
+
code: z15.string()
|
|
680
855
|
}),
|
|
681
|
-
|
|
682
|
-
type:
|
|
683
|
-
name:
|
|
684
|
-
variableName:
|
|
685
|
-
variableAlias:
|
|
856
|
+
z15.object({
|
|
857
|
+
type: z15.literal("parameter"),
|
|
858
|
+
name: z15.string(),
|
|
859
|
+
variableName: z15.string(),
|
|
860
|
+
variableAlias: z15.optional(z15.string())
|
|
686
861
|
}),
|
|
687
|
-
|
|
688
|
-
type:
|
|
689
|
-
name:
|
|
690
|
-
value:
|
|
691
|
-
|
|
692
|
-
type:
|
|
693
|
-
args:
|
|
694
|
-
code:
|
|
862
|
+
z15.object({
|
|
863
|
+
type: z15.literal("action"),
|
|
864
|
+
name: z15.string(),
|
|
865
|
+
value: z15.array(
|
|
866
|
+
z15.object({
|
|
867
|
+
type: z15.literal("execute"),
|
|
868
|
+
args: z15.optional(z15.array(z15.string())),
|
|
869
|
+
code: z15.string()
|
|
695
870
|
})
|
|
696
871
|
)
|
|
697
872
|
})
|
|
698
873
|
]);
|
|
699
|
-
var EmbedTemplateStyleDeclRaw =
|
|
874
|
+
var EmbedTemplateStyleDeclRaw = z15.object({
|
|
700
875
|
// State selector, e.g. :hover
|
|
701
|
-
state:
|
|
702
|
-
property:
|
|
703
|
-
value:
|
|
876
|
+
state: z15.optional(z15.string()),
|
|
877
|
+
property: z15.string(),
|
|
878
|
+
value: StyleValue3
|
|
704
879
|
});
|
|
705
880
|
var EmbedTemplateStyleDecl = EmbedTemplateStyleDeclRaw;
|
|
706
|
-
var EmbedTemplateInstance =
|
|
707
|
-
() =>
|
|
708
|
-
type:
|
|
709
|
-
component:
|
|
710
|
-
label:
|
|
711
|
-
variables:
|
|
712
|
-
props:
|
|
713
|
-
styles:
|
|
881
|
+
var EmbedTemplateInstance = z15.lazy(
|
|
882
|
+
() => z15.object({
|
|
883
|
+
type: z15.literal("instance"),
|
|
884
|
+
component: z15.string(),
|
|
885
|
+
label: z15.optional(z15.string()),
|
|
886
|
+
variables: z15.optional(z15.record(z15.string(), EmbedTemplateVariable)),
|
|
887
|
+
props: z15.optional(z15.array(EmbedTemplateProp)),
|
|
888
|
+
styles: z15.optional(z15.array(EmbedTemplateStyleDecl)),
|
|
714
889
|
children: WsEmbedTemplate
|
|
715
890
|
})
|
|
716
891
|
);
|
|
717
|
-
var WsEmbedTemplate =
|
|
718
|
-
() =>
|
|
719
|
-
|
|
892
|
+
var WsEmbedTemplate = z15.lazy(
|
|
893
|
+
() => z15.array(
|
|
894
|
+
z15.union([EmbedTemplateInstance, EmbedTemplateText, EmbedTemplateExpression])
|
|
720
895
|
)
|
|
721
896
|
);
|
|
722
897
|
|
|
723
898
|
// src/schema/component-meta.ts
|
|
724
|
-
import { z as
|
|
725
|
-
var WsComponentPropsMeta =
|
|
726
|
-
props:
|
|
899
|
+
import { z as z16 } from "zod";
|
|
900
|
+
var WsComponentPropsMeta = z16.object({
|
|
901
|
+
props: z16.record(PropMeta),
|
|
727
902
|
// Props that will be always visible in properties panel.
|
|
728
|
-
initialProps:
|
|
903
|
+
initialProps: z16.array(z16.string()).optional()
|
|
729
904
|
});
|
|
730
905
|
var componentCategories = [
|
|
731
906
|
"general",
|
|
@@ -740,10 +915,10 @@ var componentCategories = [
|
|
|
740
915
|
"internal"
|
|
741
916
|
];
|
|
742
917
|
var stateCategories = ["states", "component-states"];
|
|
743
|
-
var ComponentState =
|
|
744
|
-
category:
|
|
745
|
-
selector:
|
|
746
|
-
label:
|
|
918
|
+
var ComponentState = z16.object({
|
|
919
|
+
category: z16.enum(stateCategories).optional(),
|
|
920
|
+
selector: z16.string(),
|
|
921
|
+
label: z16.string()
|
|
747
922
|
});
|
|
748
923
|
var defaultStates = [
|
|
749
924
|
{ selector: ":hover", label: "Hover" },
|
|
@@ -752,28 +927,33 @@ var defaultStates = [
|
|
|
752
927
|
{ selector: ":focus-visible", label: "Focus Visible" },
|
|
753
928
|
{ selector: ":focus-within", label: "Focus Within" }
|
|
754
929
|
];
|
|
755
|
-
var WsComponentMeta =
|
|
756
|
-
category:
|
|
930
|
+
var WsComponentMeta = z16.object({
|
|
931
|
+
category: z16.enum(componentCategories).optional(),
|
|
757
932
|
// container - can accept other components with dnd or be edited as text
|
|
758
933
|
// control - usually form controls like inputs, without children
|
|
759
934
|
// embed - images, videos or other embeddable components, without children
|
|
760
935
|
// rich-text-child - formatted text fragment, not listed in components list
|
|
761
|
-
type:
|
|
936
|
+
type: z16.enum(["container", "control", "embed", "rich-text-child"]),
|
|
937
|
+
/**
|
|
938
|
+
* a property used as textual placeholder when no content specified while in builder
|
|
939
|
+
* also signals to not insert components inside unless dropped explicitly
|
|
940
|
+
*/
|
|
941
|
+
placeholder: z16.string().optional(),
|
|
762
942
|
constraints: Matchers.optional(),
|
|
763
943
|
// when this field is specified component receives
|
|
764
944
|
// prop with index of same components withiin specified ancestor
|
|
765
945
|
// important to automatically enumerate collections without
|
|
766
946
|
// naming every item manually
|
|
767
|
-
indexWithinAncestor:
|
|
768
|
-
label:
|
|
769
|
-
description:
|
|
770
|
-
icon:
|
|
771
|
-
presetStyle:
|
|
772
|
-
|
|
947
|
+
indexWithinAncestor: z16.optional(z16.string()),
|
|
948
|
+
label: z16.optional(z16.string()),
|
|
949
|
+
description: z16.string().optional(),
|
|
950
|
+
icon: z16.string(),
|
|
951
|
+
presetStyle: z16.optional(
|
|
952
|
+
z16.record(z16.string(), z16.array(EmbedTemplateStyleDecl))
|
|
773
953
|
),
|
|
774
|
-
states:
|
|
775
|
-
template:
|
|
776
|
-
order:
|
|
954
|
+
states: z16.optional(z16.array(ComponentState)),
|
|
955
|
+
template: z16.optional(WsEmbedTemplate),
|
|
956
|
+
order: z16.number().optional()
|
|
777
957
|
});
|
|
778
958
|
|
|
779
959
|
// src/core-metas.ts
|
|
@@ -973,6 +1153,13 @@ import {
|
|
|
973
1153
|
parseExpressionAt
|
|
974
1154
|
} from "acorn";
|
|
975
1155
|
import { simple } from "acorn-walk";
|
|
1156
|
+
var SYSTEM_VARIABLE_ID = ":system";
|
|
1157
|
+
var systemParameter = {
|
|
1158
|
+
id: SYSTEM_VARIABLE_ID,
|
|
1159
|
+
scopeInstanceId: ROOT_INSTANCE_ID,
|
|
1160
|
+
type: "parameter",
|
|
1161
|
+
name: "system"
|
|
1162
|
+
};
|
|
976
1163
|
var lintExpression = ({
|
|
977
1164
|
expression,
|
|
978
1165
|
availableVariables = /* @__PURE__ */ new Set(),
|
|
@@ -1224,11 +1411,17 @@ var generateObjectExpression = (map) => {
|
|
|
1224
1411
|
return generated;
|
|
1225
1412
|
};
|
|
1226
1413
|
var dataSourceVariablePrefix = "$ws$dataSource$";
|
|
1227
|
-
var
|
|
1414
|
+
var encodeDataVariableId = (id) => {
|
|
1415
|
+
if (id === SYSTEM_VARIABLE_ID) {
|
|
1416
|
+
return "$ws$system";
|
|
1417
|
+
}
|
|
1228
1418
|
const encoded = id.replaceAll("-", "__DASH__");
|
|
1229
1419
|
return `${dataSourceVariablePrefix}${encoded}`;
|
|
1230
1420
|
};
|
|
1231
|
-
var
|
|
1421
|
+
var decodeDataVariableId = (name) => {
|
|
1422
|
+
if (name === "$ws$system") {
|
|
1423
|
+
return SYSTEM_VARIABLE_ID;
|
|
1424
|
+
}
|
|
1232
1425
|
if (name.startsWith(dataSourceVariablePrefix)) {
|
|
1233
1426
|
const encoded = name.slice(dataSourceVariablePrefix.length);
|
|
1234
1427
|
return encoded.replaceAll("__DASH__", "-");
|
|
@@ -1245,8 +1438,11 @@ var generateExpression = ({
|
|
|
1245
1438
|
expression,
|
|
1246
1439
|
executable: true,
|
|
1247
1440
|
replaceVariable: (identifier) => {
|
|
1248
|
-
const depId =
|
|
1249
|
-
|
|
1441
|
+
const depId = decodeDataVariableId(identifier);
|
|
1442
|
+
let dep = depId ? dataSources.get(depId) : void 0;
|
|
1443
|
+
if (depId === SYSTEM_VARIABLE_ID) {
|
|
1444
|
+
dep = systemParameter;
|
|
1445
|
+
}
|
|
1250
1446
|
if (dep) {
|
|
1251
1447
|
usedDataSources?.set(dep.id, dep);
|
|
1252
1448
|
return scope.getName(dep.id, dep.name);
|
|
@@ -1438,12 +1634,11 @@ var generateResources = ({
|
|
|
1438
1634
|
`;
|
|
1439
1635
|
}
|
|
1440
1636
|
if (dataSource.type === "parameter") {
|
|
1441
|
-
if (dataSource.id
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
const name = scope.getName(dataSource.id, dataSource.name);
|
|
1445
|
-
generatedVariables += ` const ${name} = _props.system
|
|
1637
|
+
if (dataSource.id === page.systemDataSourceId || dataSource.id === SYSTEM_VARIABLE_ID) {
|
|
1638
|
+
const name = scope.getName(dataSource.id, dataSource.name);
|
|
1639
|
+
generatedVariables += ` const ${name} = _props.system
|
|
1446
1640
|
`;
|
|
1641
|
+
}
|
|
1447
1642
|
}
|
|
1448
1643
|
}
|
|
1449
1644
|
let generated = "";
|
|
@@ -1640,7 +1835,7 @@ var generatePageMeta = ({
|
|
|
1640
1835
|
continue;
|
|
1641
1836
|
}
|
|
1642
1837
|
if (dataSource.type === "parameter") {
|
|
1643
|
-
if (dataSource.id === page.systemDataSourceId) {
|
|
1838
|
+
if (dataSource.id === page.systemDataSourceId || dataSource.id === SYSTEM_VARIABLE_ID) {
|
|
1644
1839
|
const valueName = localScope.getName(dataSource.id, dataSource.name);
|
|
1645
1840
|
generated += ` let ${valueName} = system
|
|
1646
1841
|
`;
|
|
@@ -1684,6 +1879,182 @@ var generatePageMeta = ({
|
|
|
1684
1879
|
`;
|
|
1685
1880
|
return generated;
|
|
1686
1881
|
};
|
|
1882
|
+
|
|
1883
|
+
// src/css.ts
|
|
1884
|
+
import { kebabCase } from "change-case";
|
|
1885
|
+
import {
|
|
1886
|
+
createRegularStyleSheet,
|
|
1887
|
+
generateAtomic
|
|
1888
|
+
} from "@webstudio-is/css-engine";
|
|
1889
|
+
import { getFontFaces } from "@webstudio-is/fonts";
|
|
1890
|
+
var addFontRules = ({
|
|
1891
|
+
sheet,
|
|
1892
|
+
assets,
|
|
1893
|
+
assetBaseUrl
|
|
1894
|
+
}) => {
|
|
1895
|
+
const fontAssets = [];
|
|
1896
|
+
for (const asset of assets.values()) {
|
|
1897
|
+
if (asset.type === "font") {
|
|
1898
|
+
fontAssets.push(asset);
|
|
1899
|
+
}
|
|
1900
|
+
}
|
|
1901
|
+
const fontFaces = getFontFaces(fontAssets, { assetBaseUrl });
|
|
1902
|
+
for (const fontFace of fontFaces) {
|
|
1903
|
+
sheet.addFontFaceRule(fontFace);
|
|
1904
|
+
}
|
|
1905
|
+
};
|
|
1906
|
+
var createImageValueTransformer = (assets, { assetBaseUrl }) => (styleValue) => {
|
|
1907
|
+
if (styleValue.type === "image" && styleValue.value.type === "asset") {
|
|
1908
|
+
const asset = assets.get(styleValue.value.value);
|
|
1909
|
+
if (asset === void 0) {
|
|
1910
|
+
return { type: "keyword", value: "none" };
|
|
1911
|
+
}
|
|
1912
|
+
const url = `${assetBaseUrl}${asset.name}`;
|
|
1913
|
+
return {
|
|
1914
|
+
type: "image",
|
|
1915
|
+
value: {
|
|
1916
|
+
type: "url",
|
|
1917
|
+
url
|
|
1918
|
+
},
|
|
1919
|
+
hidden: styleValue.hidden
|
|
1920
|
+
};
|
|
1921
|
+
}
|
|
1922
|
+
};
|
|
1923
|
+
var normalizeClassName = (name) => kebabCase(name);
|
|
1924
|
+
var generateCss = ({
|
|
1925
|
+
assets,
|
|
1926
|
+
instances,
|
|
1927
|
+
props,
|
|
1928
|
+
breakpoints,
|
|
1929
|
+
styles,
|
|
1930
|
+
styleSourceSelections,
|
|
1931
|
+
componentMetas,
|
|
1932
|
+
assetBaseUrl,
|
|
1933
|
+
atomic
|
|
1934
|
+
}) => {
|
|
1935
|
+
const fontSheet = createRegularStyleSheet({ name: "ssr" });
|
|
1936
|
+
const presetSheet = createRegularStyleSheet({ name: "ssr" });
|
|
1937
|
+
const userSheet = createRegularStyleSheet({ name: "ssr" });
|
|
1938
|
+
addFontRules({ sheet: fontSheet, assets, assetBaseUrl });
|
|
1939
|
+
presetSheet.addMediaRule("presets");
|
|
1940
|
+
const presetClasses = /* @__PURE__ */ new Map();
|
|
1941
|
+
const scope = createScope([], normalizeClassName, "-");
|
|
1942
|
+
for (const [component, meta] of componentMetas) {
|
|
1943
|
+
const [_namespace, componentName] = parseComponentName(component);
|
|
1944
|
+
const className = `w-${scope.getName(component, meta.label ?? componentName)}`;
|
|
1945
|
+
const presetStyle = Object.entries(meta.presetStyle ?? {});
|
|
1946
|
+
if (presetStyle.length > 0) {
|
|
1947
|
+
presetClasses.set(component, className);
|
|
1948
|
+
}
|
|
1949
|
+
for (const [tag, styles2] of presetStyle) {
|
|
1950
|
+
const selector = component === rootComponent ? ":root" : `${tag}.${className}`;
|
|
1951
|
+
const rule = presetSheet.addNestingRule(selector);
|
|
1952
|
+
for (const declaration of styles2) {
|
|
1953
|
+
rule.setDeclaration({
|
|
1954
|
+
breakpoint: "presets",
|
|
1955
|
+
selector: declaration.state ?? "",
|
|
1956
|
+
property: declaration.property,
|
|
1957
|
+
value: declaration.value
|
|
1958
|
+
});
|
|
1959
|
+
}
|
|
1960
|
+
}
|
|
1961
|
+
}
|
|
1962
|
+
for (const breakpoint of breakpoints.values()) {
|
|
1963
|
+
userSheet.addMediaRule(breakpoint.id, breakpoint);
|
|
1964
|
+
}
|
|
1965
|
+
const imageValueTransformer = createImageValueTransformer(assets, {
|
|
1966
|
+
assetBaseUrl
|
|
1967
|
+
});
|
|
1968
|
+
userSheet.setTransformer(imageValueTransformer);
|
|
1969
|
+
for (const styleDecl of styles.values()) {
|
|
1970
|
+
const rule = userSheet.addMixinRule(styleDecl.styleSourceId);
|
|
1971
|
+
rule.setDeclaration({
|
|
1972
|
+
breakpoint: styleDecl.breakpointId,
|
|
1973
|
+
selector: styleDecl.state ?? "",
|
|
1974
|
+
property: styleDecl.property,
|
|
1975
|
+
value: styleDecl.value
|
|
1976
|
+
});
|
|
1977
|
+
}
|
|
1978
|
+
const classes = /* @__PURE__ */ new Map();
|
|
1979
|
+
const parentIdByInstanceId = /* @__PURE__ */ new Map();
|
|
1980
|
+
for (const instance of instances.values()) {
|
|
1981
|
+
const presetClass = presetClasses.get(instance.component);
|
|
1982
|
+
if (presetClass) {
|
|
1983
|
+
classes.set(instance.id, [presetClass]);
|
|
1984
|
+
}
|
|
1985
|
+
for (const child of instance.children) {
|
|
1986
|
+
if (child.type === "id") {
|
|
1987
|
+
parentIdByInstanceId.set(child.value, instance.id);
|
|
1988
|
+
}
|
|
1989
|
+
}
|
|
1990
|
+
}
|
|
1991
|
+
const descendantSelectorByInstanceId = /* @__PURE__ */ new Map();
|
|
1992
|
+
for (const prop of props.values()) {
|
|
1993
|
+
if (prop.name === "selector" && prop.type === "string") {
|
|
1994
|
+
descendantSelectorByInstanceId.set(prop.instanceId, prop.value);
|
|
1995
|
+
}
|
|
1996
|
+
}
|
|
1997
|
+
const instanceByRule = /* @__PURE__ */ new Map();
|
|
1998
|
+
for (const selection of styleSourceSelections.values()) {
|
|
1999
|
+
let { instanceId } = selection;
|
|
2000
|
+
const { values } = selection;
|
|
2001
|
+
if (instanceId === ROOT_INSTANCE_ID) {
|
|
2002
|
+
const rule2 = userSheet.addNestingRule(`:root`);
|
|
2003
|
+
rule2.applyMixins(values);
|
|
2004
|
+
continue;
|
|
2005
|
+
}
|
|
2006
|
+
let descendantSuffix = "";
|
|
2007
|
+
const instance = instances.get(instanceId);
|
|
2008
|
+
if (instance === void 0) {
|
|
2009
|
+
continue;
|
|
2010
|
+
}
|
|
2011
|
+
if (instance.component === descendantComponent) {
|
|
2012
|
+
const parentId = parentIdByInstanceId.get(instanceId);
|
|
2013
|
+
const descendantSelector = descendantSelectorByInstanceId.get(instanceId);
|
|
2014
|
+
if (parentId && descendantSelector) {
|
|
2015
|
+
descendantSuffix = descendantSelector;
|
|
2016
|
+
instanceId = parentId;
|
|
2017
|
+
}
|
|
2018
|
+
}
|
|
2019
|
+
const meta = componentMetas.get(instance.component);
|
|
2020
|
+
const [_namespace, shortName] = parseComponentName(instance.component);
|
|
2021
|
+
const baseName = instance.label ?? meta?.label ?? shortName;
|
|
2022
|
+
const className = `w-${scope.getName(instanceId, baseName)}`;
|
|
2023
|
+
if (atomic === false) {
|
|
2024
|
+
let classList = classes.get(instanceId);
|
|
2025
|
+
if (classList === void 0) {
|
|
2026
|
+
classList = [];
|
|
2027
|
+
classes.set(instanceId, classList);
|
|
2028
|
+
}
|
|
2029
|
+
classList.push(className);
|
|
2030
|
+
}
|
|
2031
|
+
const rule = userSheet.addNestingRule(`.${className}`, descendantSuffix);
|
|
2032
|
+
rule.applyMixins(values);
|
|
2033
|
+
instanceByRule.set(rule, instanceId);
|
|
2034
|
+
}
|
|
2035
|
+
const fontCss = fontSheet.cssText;
|
|
2036
|
+
const presetCss = presetSheet.cssText.replaceAll(
|
|
2037
|
+
"@media all ",
|
|
2038
|
+
"@layer presets "
|
|
2039
|
+
);
|
|
2040
|
+
if (atomic) {
|
|
2041
|
+
const { cssText } = generateAtomic(userSheet, {
|
|
2042
|
+
getKey: (rule) => instanceByRule.get(rule),
|
|
2043
|
+
transformValue: imageValueTransformer,
|
|
2044
|
+
classes
|
|
2045
|
+
});
|
|
2046
|
+
return {
|
|
2047
|
+
cssText: `${fontCss}${presetCss}
|
|
2048
|
+
${cssText}`,
|
|
2049
|
+
classes
|
|
2050
|
+
};
|
|
2051
|
+
}
|
|
2052
|
+
return {
|
|
2053
|
+
cssText: `${fontCss}${presetCss}
|
|
2054
|
+
${userSheet.cssText}`,
|
|
2055
|
+
classes
|
|
2056
|
+
};
|
|
2057
|
+
};
|
|
1687
2058
|
export {
|
|
1688
2059
|
Asset,
|
|
1689
2060
|
Assets,
|
|
@@ -1723,11 +2094,13 @@ export {
|
|
|
1723
2094
|
Prop,
|
|
1724
2095
|
PropMeta,
|
|
1725
2096
|
Props,
|
|
2097
|
+
RANGE_UNITS,
|
|
1726
2098
|
ROOT_FOLDER_ID,
|
|
1727
2099
|
ROOT_INSTANCE_ID,
|
|
1728
2100
|
Resource,
|
|
1729
2101
|
ResourceRequest,
|
|
1730
2102
|
Resources,
|
|
2103
|
+
SYSTEM_VARIABLE_ID,
|
|
1731
2104
|
StyleDecl,
|
|
1732
2105
|
StyleSource,
|
|
1733
2106
|
StyleSourceSelection,
|
|
@@ -1739,6 +2112,9 @@ export {
|
|
|
1739
2112
|
WebstudioFragment,
|
|
1740
2113
|
WsComponentMeta,
|
|
1741
2114
|
WsEmbedTemplate,
|
|
2115
|
+
addFontRules,
|
|
2116
|
+
animationActionSchema,
|
|
2117
|
+
animationKeyframeSchema,
|
|
1742
2118
|
blockComponent,
|
|
1743
2119
|
blockTemplateComponent,
|
|
1744
2120
|
blockTemplateMeta,
|
|
@@ -1746,19 +2122,21 @@ export {
|
|
|
1746
2122
|
componentCategories,
|
|
1747
2123
|
coreMetas,
|
|
1748
2124
|
corePropsMetas,
|
|
2125
|
+
createImageValueTransformer,
|
|
1749
2126
|
createScope,
|
|
1750
|
-
decodeDataSourceVariable,
|
|
1751
|
-
|
|
2127
|
+
decodeDataVariableId as decodeDataSourceVariable,
|
|
2128
|
+
decodeDataVariableId,
|
|
1752
2129
|
defaultStates,
|
|
1753
2130
|
descendantComponent,
|
|
1754
2131
|
documentTypes,
|
|
1755
|
-
encodeDataSourceVariable,
|
|
1756
|
-
|
|
2132
|
+
encodeDataVariableId as encodeDataSourceVariable,
|
|
2133
|
+
encodeDataVariableId,
|
|
1757
2134
|
executeExpression,
|
|
1758
2135
|
findPageByIdOrPath,
|
|
1759
2136
|
findParentFolderByChildId,
|
|
1760
2137
|
findTreeInstanceIds,
|
|
1761
2138
|
findTreeInstanceIdsExcludingSlotDescendants,
|
|
2139
|
+
generateCss,
|
|
1762
2140
|
generateExpression,
|
|
1763
2141
|
generateObjectExpression,
|
|
1764
2142
|
generatePageMeta,
|
|
@@ -1768,6 +2146,7 @@ export {
|
|
|
1768
2146
|
getStaticSiteMapXml,
|
|
1769
2147
|
getStyleDeclKey,
|
|
1770
2148
|
initialBreakpoints,
|
|
2149
|
+
insetUnitValueSchema,
|
|
1771
2150
|
isCoreComponent,
|
|
1772
2151
|
isLiteralExpression,
|
|
1773
2152
|
isPathnamePattern,
|
|
@@ -1777,8 +2156,12 @@ export {
|
|
|
1777
2156
|
parseComponentName,
|
|
1778
2157
|
parseObjectExpression,
|
|
1779
2158
|
portalComponent,
|
|
2159
|
+
rangeUnitValueSchema,
|
|
1780
2160
|
replaceFormActionsWithResources,
|
|
1781
2161
|
rootComponent,
|
|
2162
|
+
scrollAnimationSchema,
|
|
1782
2163
|
stateCategories,
|
|
1783
|
-
|
|
2164
|
+
systemParameter,
|
|
2165
|
+
transpileExpression,
|
|
2166
|
+
viewAnimationSchema
|
|
1784
2167
|
};
|