@webstudio-is/sdk 0.204.0 → 0.206.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 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(),
@@ -221,20 +221,25 @@ var DataSource = z4.union([
221
221
  z4.object({
222
222
  type: z4.literal("variable"),
223
223
  id: DataSourceId,
224
- scopeInstanceId: z4.string(),
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(),
225
230
  name: z4.string(),
226
231
  value: DataSourceVariableValue
227
232
  }),
228
233
  z4.object({
229
234
  type: z4.literal("parameter"),
230
235
  id: DataSourceId,
231
- scopeInstanceId: z4.string(),
236
+ scopeInstanceId: z4.string().optional(),
232
237
  name: z4.string()
233
238
  }),
234
239
  z4.object({
235
240
  type: z4.literal("resource"),
236
241
  id: DataSourceId,
237
- scopeInstanceId: z4.string(),
242
+ scopeInstanceId: z4.string().optional(),
238
243
  name: z4.string(),
239
244
  resourceId: z4.string()
240
245
  })
@@ -277,98 +282,261 @@ var ResourceRequest = z5.object({
277
282
  var Resources = z5.map(ResourceId, Resource);
278
283
 
279
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";
280
289
  import { z as z6 } from "zod";
281
- var PropId = z6.string();
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();
282
445
  var baseProp = {
283
446
  id: PropId,
284
- instanceId: z6.string(),
285
- name: z6.string(),
286
- required: z6.optional(z6.boolean())
447
+ instanceId: z7.string(),
448
+ name: z7.string(),
449
+ required: z7.optional(z7.boolean())
287
450
  };
288
- var Prop = z6.union([
289
- z6.object({
451
+ var Prop = z7.union([
452
+ z7.object({
290
453
  ...baseProp,
291
- type: z6.literal("number"),
292
- value: z6.number()
454
+ type: z7.literal("number"),
455
+ value: z7.number()
293
456
  }),
294
- z6.object({
457
+ z7.object({
295
458
  ...baseProp,
296
- type: z6.literal("string"),
297
- value: z6.string()
459
+ type: z7.literal("string"),
460
+ value: z7.string()
298
461
  }),
299
- z6.object({
462
+ z7.object({
300
463
  ...baseProp,
301
- type: z6.literal("boolean"),
302
- value: z6.boolean()
464
+ type: z7.literal("boolean"),
465
+ value: z7.boolean()
303
466
  }),
304
- z6.object({
467
+ z7.object({
305
468
  ...baseProp,
306
- type: z6.literal("json"),
307
- value: z6.unknown()
469
+ type: z7.literal("json"),
470
+ value: z7.unknown()
308
471
  }),
309
- z6.object({
472
+ z7.object({
310
473
  ...baseProp,
311
- type: z6.literal("asset"),
312
- value: z6.string()
474
+ type: z7.literal("asset"),
475
+ value: z7.string()
313
476
  // asset id
314
477
  }),
315
- z6.object({
478
+ z7.object({
316
479
  ...baseProp,
317
- type: z6.literal("page"),
318
- value: z6.union([
319
- z6.string(),
480
+ type: z7.literal("page"),
481
+ value: z7.union([
482
+ z7.string(),
320
483
  // page id
321
- z6.object({
322
- pageId: z6.string(),
323
- instanceId: z6.string()
484
+ z7.object({
485
+ pageId: z7.string(),
486
+ instanceId: z7.string()
324
487
  })
325
488
  ])
326
489
  }),
327
- z6.object({
490
+ z7.object({
328
491
  ...baseProp,
329
- type: z6.literal("string[]"),
330
- value: z6.array(z6.string())
492
+ type: z7.literal("string[]"),
493
+ value: z7.array(z7.string())
331
494
  }),
332
- z6.object({
495
+ z7.object({
333
496
  ...baseProp,
334
- type: z6.literal("parameter"),
497
+ type: z7.literal("parameter"),
335
498
  // data source id
336
- value: z6.string()
499
+ value: z7.string()
337
500
  }),
338
- z6.object({
501
+ z7.object({
339
502
  ...baseProp,
340
- type: z6.literal("resource"),
503
+ type: z7.literal("resource"),
341
504
  // resource id
342
- value: z6.string()
505
+ value: z7.string()
343
506
  }),
344
- z6.object({
507
+ z7.object({
345
508
  ...baseProp,
346
- type: z6.literal("expression"),
509
+ type: z7.literal("expression"),
347
510
  // expression code
348
- value: z6.string()
511
+ value: z7.string()
349
512
  }),
350
- z6.object({
513
+ z7.object({
351
514
  ...baseProp,
352
- type: z6.literal("action"),
353
- value: z6.array(
354
- z6.object({
355
- type: z6.literal("execute"),
356
- args: z6.array(z6.string()),
357
- code: z6.string()
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()
358
521
  })
359
522
  )
523
+ }),
524
+ z7.object({
525
+ ...baseProp,
526
+ type: z7.literal("animationAction"),
527
+ value: animationActionSchema
360
528
  })
361
529
  ]);
362
- var Props = z6.map(PropId, Prop);
530
+ var Props = z7.map(PropId, Prop);
363
531
 
364
532
  // src/schema/breakpoints.ts
365
- import { z as z7 } from "zod";
366
- var BreakpointId = z7.string();
367
- var Breakpoint = z7.object({
533
+ import { z as z8 } from "zod";
534
+ var BreakpointId = z8.string();
535
+ var Breakpoint = z8.object({
368
536
  id: BreakpointId,
369
- label: z7.string(),
370
- minWidth: z7.number().optional(),
371
- maxWidth: z7.number().optional()
537
+ label: z8.string(),
538
+ minWidth: z8.number().optional(),
539
+ maxWidth: z8.number().optional()
372
540
  }).refine(({ minWidth, maxWidth }) => {
373
541
  return (
374
542
  // Either min or max width have to be defined
@@ -376,7 +544,7 @@ var Breakpoint = z7.object({
376
544
  minWidth === void 0 && maxWidth === void 0
377
545
  );
378
546
  }, "Either minWidth or maxWidth should be defined");
379
- var Breakpoints = z7.map(BreakpointId, Breakpoint);
547
+ var Breakpoints = z8.map(BreakpointId, Breakpoint);
380
548
  var initialBreakpoints = [
381
549
  { id: "placeholder", label: "Base" },
382
550
  { id: "placeholder", label: "Tablet", maxWidth: 991 },
@@ -385,52 +553,51 @@ var initialBreakpoints = [
385
553
  ];
386
554
 
387
555
  // src/schema/style-sources.ts
388
- import { z as z8 } from "zod";
389
- var StyleSourceId = z8.string();
390
- var StyleSourceToken = z8.object({
391
- type: z8.literal("token"),
556
+ import { z as z9 } from "zod";
557
+ var StyleSourceId = z9.string();
558
+ var StyleSourceToken = z9.object({
559
+ type: z9.literal("token"),
392
560
  id: StyleSourceId,
393
- name: z8.string()
561
+ name: z9.string()
394
562
  });
395
- var StyleSourceLocal = z8.object({
396
- type: z8.literal("local"),
563
+ var StyleSourceLocal = z9.object({
564
+ type: z9.literal("local"),
397
565
  id: StyleSourceId
398
566
  });
399
- var StyleSource = z8.union([StyleSourceToken, StyleSourceLocal]);
400
- var StyleSources = z8.map(StyleSourceId, StyleSource);
567
+ var StyleSource = z9.union([StyleSourceToken, StyleSourceLocal]);
568
+ var StyleSources = z9.map(StyleSourceId, StyleSource);
401
569
 
402
570
  // src/schema/style-source-selections.ts
403
- import { z as z9 } from "zod";
404
- var InstanceId2 = z9.string();
405
- var StyleSourceId2 = z9.string();
406
- var StyleSourceSelection = z9.object({
571
+ import { z as z10 } from "zod";
572
+ var InstanceId2 = z10.string();
573
+ var StyleSourceId2 = z10.string();
574
+ var StyleSourceSelection = z10.object({
407
575
  instanceId: InstanceId2,
408
- values: z9.array(StyleSourceId2)
576
+ values: z10.array(StyleSourceId2)
409
577
  });
410
- var StyleSourceSelections = z9.map(InstanceId2, StyleSourceSelection);
578
+ var StyleSourceSelections = z10.map(InstanceId2, StyleSourceSelection);
411
579
 
412
580
  // src/schema/styles.ts
413
- import { z as z10 } from "zod";
414
- import { StyleValue } from "@webstudio-is/css-engine";
415
- var StyleDeclRaw = z10.object({
416
- styleSourceId: z10.string(),
417
- breakpointId: z10.string(),
418
- state: z10.optional(z10.string()),
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()),
419
587
  // @todo can't figure out how to make property to be enum
420
- property: z10.string(),
421
- value: StyleValue,
422
- listed: z10.boolean().optional()
588
+ property: z11.string(),
589
+ value: StyleValue2,
590
+ listed: z11.boolean().optional()
423
591
  });
424
592
  var StyleDecl = StyleDeclRaw;
425
593
  var getStyleDeclKey = (styleDecl) => {
426
594
  return `${styleDecl.styleSourceId}:${styleDecl.breakpointId}:${styleDecl.property}:${styleDecl.state ?? ""}`;
427
595
  };
428
- var Styles = z10.map(z10.string(), StyleDecl);
596
+ var Styles = z11.map(z11.string(), StyleDecl);
429
597
 
430
598
  // src/schema/deployment.ts
431
- import { z as z11 } from "zod";
432
- var Templates = z11.enum([
433
- "vanilla",
599
+ import { z as z12 } from "zod";
600
+ var Templates = z12.enum([
434
601
  "docker",
435
602
  "vercel",
436
603
  "netlify",
@@ -438,179 +605,185 @@ var Templates = z11.enum([
438
605
  "ssg-netlify",
439
606
  "ssg-vercel"
440
607
  ]);
441
- var Deployment = z11.union([
442
- z11.object({
443
- destination: z11.literal("static"),
444
- name: z11.string(),
445
- assetsDomain: z11.string(),
608
+ var Deployment = z12.union([
609
+ z12.object({
610
+ destination: z12.literal("static"),
611
+ name: z12.string(),
612
+ assetsDomain: z12.string(),
446
613
  // Must be validated very strictly
447
- templates: z11.array(Templates)
614
+ templates: z12.array(Templates)
448
615
  }),
449
- z11.object({
450
- destination: z11.literal("saas").optional(),
451
- domains: z11.array(z11.string()),
452
- assetsDomain: z11.string().optional(),
616
+ z12.object({
617
+ destination: z12.literal("saas").optional(),
618
+ domains: z12.array(z12.string()),
619
+ assetsDomain: z12.string().optional(),
453
620
  /**
454
621
  * @deprecated This field is deprecated, use `domains` instead.
455
622
  */
456
- projectDomain: z11.string().optional(),
457
- excludeWstdDomainFromSearch: z11.boolean().optional()
623
+ projectDomain: z12.string().optional(),
624
+ excludeWstdDomainFromSearch: z12.boolean().optional()
458
625
  })
459
626
  ]);
460
627
 
461
628
  // src/schema/webstudio.ts
462
- import { z as z12 } from "zod";
463
- var WebstudioFragment = z12.object({
464
- children: z12.array(InstanceChild),
465
- instances: z12.array(Instance),
466
- assets: z12.array(Asset),
467
- dataSources: z12.array(DataSource),
468
- resources: z12.array(Resource),
469
- props: z12.array(Prop),
470
- breakpoints: z12.array(Breakpoint),
471
- styleSourceSelections: z12.array(StyleSourceSelection),
472
- styleSources: z12.array(StyleSource),
473
- styles: z12.array(StyleDecl)
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)
474
641
  });
475
642
 
476
643
  // src/schema/prop-meta.ts
477
- import { z as z13 } from "zod";
644
+ import { z as z14 } from "zod";
478
645
  var common = {
479
- label: z13.string().optional(),
480
- description: z13.string().optional(),
481
- required: z13.boolean()
646
+ label: z14.string().optional(),
647
+ description: z14.string().optional(),
648
+ required: z14.boolean()
482
649
  };
483
- var Number = z13.object({
650
+ var Number = z14.object({
484
651
  ...common,
485
- control: z13.literal("number"),
486
- type: z13.literal("number"),
487
- defaultValue: z13.number().optional()
652
+ control: z14.literal("number"),
653
+ type: z14.literal("number"),
654
+ defaultValue: z14.number().optional()
488
655
  });
489
- var Range = z13.object({
656
+ var Range = z14.object({
490
657
  ...common,
491
- control: z13.literal("range"),
492
- type: z13.literal("number"),
493
- defaultValue: z13.number().optional()
658
+ control: z14.literal("range"),
659
+ type: z14.literal("number"),
660
+ defaultValue: z14.number().optional()
494
661
  });
495
- var Text = z13.object({
662
+ var Text = z14.object({
496
663
  ...common,
497
- control: z13.literal("text"),
498
- type: z13.literal("string"),
499
- defaultValue: z13.string().optional(),
664
+ control: z14.literal("text"),
665
+ type: z14.literal("string"),
666
+ defaultValue: z14.string().optional(),
500
667
  /**
501
668
  * The number of rows in <textarea>. If set to 0 an <input> will be used instead.
502
669
  * In line with Storybook team's plan: https://github.com/storybookjs/storybook/issues/21100
503
670
  */
504
- rows: z13.number().optional()
671
+ rows: z14.number().optional()
505
672
  });
506
- var Code = z13.object({
673
+ var Code = z14.object({
507
674
  ...common,
508
- control: z13.literal("code"),
509
- type: z13.literal("string"),
510
- language: z13.union([z13.literal("html"), z13.literal("markdown")]),
511
- defaultValue: z13.string().optional()
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()
512
679
  });
513
- var CodeText = z13.object({
680
+ var CodeText = z14.object({
514
681
  ...common,
515
- control: z13.literal("codetext"),
516
- type: z13.literal("string"),
517
- defaultValue: z13.string().optional()
682
+ control: z14.literal("codetext"),
683
+ type: z14.literal("string"),
684
+ defaultValue: z14.string().optional()
518
685
  });
519
- var Color = z13.object({
686
+ var Color = z14.object({
520
687
  ...common,
521
- control: z13.literal("color"),
522
- type: z13.literal("string"),
523
- defaultValue: z13.string().optional()
688
+ control: z14.literal("color"),
689
+ type: z14.literal("string"),
690
+ defaultValue: z14.string().optional()
524
691
  });
525
- var Boolean = z13.object({
692
+ var Boolean = z14.object({
526
693
  ...common,
527
- control: z13.literal("boolean"),
528
- type: z13.literal("boolean"),
529
- defaultValue: z13.boolean().optional()
694
+ control: z14.literal("boolean"),
695
+ type: z14.literal("boolean"),
696
+ defaultValue: z14.boolean().optional()
530
697
  });
531
- var Radio = z13.object({
698
+ var Radio = z14.object({
532
699
  ...common,
533
- control: z13.literal("radio"),
534
- type: z13.literal("string"),
535
- defaultValue: z13.string().optional(),
536
- options: z13.array(z13.string())
700
+ control: z14.literal("radio"),
701
+ type: z14.literal("string"),
702
+ defaultValue: z14.string().optional(),
703
+ options: z14.array(z14.string())
537
704
  });
538
- var InlineRadio = z13.object({
705
+ var InlineRadio = z14.object({
539
706
  ...common,
540
- control: z13.literal("inline-radio"),
541
- type: z13.literal("string"),
542
- defaultValue: z13.string().optional(),
543
- options: z13.array(z13.string())
707
+ control: z14.literal("inline-radio"),
708
+ type: z14.literal("string"),
709
+ defaultValue: z14.string().optional(),
710
+ options: z14.array(z14.string())
544
711
  });
545
- var Select = z13.object({
712
+ var Select = z14.object({
546
713
  ...common,
547
- control: z13.literal("select"),
548
- type: z13.literal("string"),
549
- defaultValue: z13.string().optional(),
550
- options: z13.array(z13.string())
714
+ control: z14.literal("select"),
715
+ type: z14.literal("string"),
716
+ defaultValue: z14.string().optional(),
717
+ options: z14.array(z14.string())
551
718
  });
552
- var Check = z13.object({
719
+ var Check = z14.object({
553
720
  ...common,
554
- control: z13.literal("check"),
555
- type: z13.literal("string[]"),
556
- defaultValue: z13.array(z13.string()).optional(),
557
- options: z13.array(z13.string())
721
+ control: z14.literal("check"),
722
+ type: z14.literal("string[]"),
723
+ defaultValue: z14.array(z14.string()).optional(),
724
+ options: z14.array(z14.string())
558
725
  });
559
- var InlineCheck = z13.object({
726
+ var InlineCheck = z14.object({
560
727
  ...common,
561
- control: z13.literal("inline-check"),
562
- type: z13.literal("string[]"),
563
- defaultValue: z13.array(z13.string()).optional(),
564
- options: z13.array(z13.string())
728
+ control: z14.literal("inline-check"),
729
+ type: z14.literal("string[]"),
730
+ defaultValue: z14.array(z14.string()).optional(),
731
+ options: z14.array(z14.string())
565
732
  });
566
- var MultiSelect = z13.object({
733
+ var MultiSelect = z14.object({
567
734
  ...common,
568
- control: z13.literal("multi-select"),
569
- type: z13.literal("string[]"),
570
- defaultValue: z13.array(z13.string()).optional(),
571
- options: z13.array(z13.string())
735
+ control: z14.literal("multi-select"),
736
+ type: z14.literal("string[]"),
737
+ defaultValue: z14.array(z14.string()).optional(),
738
+ options: z14.array(z14.string())
572
739
  });
573
- var File = z13.object({
740
+ var File = z14.object({
574
741
  ...common,
575
- control: z13.literal("file"),
576
- type: z13.literal("string"),
577
- defaultValue: z13.string().optional(),
742
+ control: z14.literal("file"),
743
+ type: z14.literal("string"),
744
+ defaultValue: z14.string().optional(),
578
745
  /** https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept */
579
- accept: z13.string().optional()
746
+ accept: z14.string().optional()
580
747
  });
581
- var Url = z13.object({
748
+ var Url = z14.object({
582
749
  ...common,
583
- control: z13.literal("url"),
584
- type: z13.literal("string"),
585
- defaultValue: z13.string().optional()
750
+ control: z14.literal("url"),
751
+ type: z14.literal("string"),
752
+ defaultValue: z14.string().optional()
586
753
  });
587
- var Json = z13.object({
754
+ var Json = z14.object({
588
755
  ...common,
589
- control: z13.literal("json"),
590
- type: z13.literal("json"),
591
- defaultValue: z13.unknown().optional()
756
+ control: z14.literal("json"),
757
+ type: z14.literal("json"),
758
+ defaultValue: z14.unknown().optional()
592
759
  });
593
- var Date = z13.object({
760
+ var Date = z14.object({
594
761
  ...common,
595
- control: z13.literal("date"),
762
+ control: z14.literal("date"),
596
763
  // @todo not sure what type should be here
597
764
  // (we don't support Date yet, added for completeness)
598
- type: z13.literal("string"),
599
- defaultValue: z13.string().optional()
765
+ type: z14.literal("string"),
766
+ defaultValue: z14.string().optional()
600
767
  });
601
- var Action = z13.object({
768
+ var Action = z14.object({
602
769
  ...common,
603
- control: z13.literal("action"),
604
- type: z13.literal("action"),
605
- defaultValue: z13.undefined().optional()
770
+ control: z14.literal("action"),
771
+ type: z14.literal("action"),
772
+ defaultValue: z14.undefined().optional()
606
773
  });
607
- var TextContent = z13.object({
774
+ var TextContent = z14.object({
608
775
  ...common,
609
- control: z13.literal("textContent"),
610
- type: z13.literal("string"),
611
- defaultValue: z13.string().optional()
776
+ control: z14.literal("textContent"),
777
+ type: z14.literal("string"),
778
+ defaultValue: z14.string().optional()
612
779
  });
613
- var PropMeta = z13.union([
780
+ var AnimationAction = z14.object({
781
+ ...common,
782
+ control: z14.literal("animationAction"),
783
+ type: z14.literal("animationAction"),
784
+ defaultValue: z14.undefined().optional()
785
+ });
786
+ var PropMeta = z14.union([
614
787
  Number,
615
788
  Range,
616
789
  Text,
@@ -629,104 +802,112 @@ var PropMeta = z13.union([
629
802
  Json,
630
803
  Date,
631
804
  Action,
632
- TextContent
805
+ TextContent,
806
+ AnimationAction
633
807
  ]);
634
808
 
635
809
  // src/schema/embed-template.ts
636
- import { z as z14 } from "zod";
637
- import { StyleValue as StyleValue2 } from "@webstudio-is/css-engine";
638
- var EmbedTemplateText = z14.object({
639
- type: z14.literal("text"),
640
- value: z14.string(),
641
- placeholder: z14.boolean().optional()
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()
642
816
  });
643
- var EmbedTemplateExpression = z14.object({
644
- type: z14.literal("expression"),
645
- value: z14.string()
817
+ var EmbedTemplateExpression = z15.object({
818
+ type: z15.literal("expression"),
819
+ value: z15.string()
646
820
  });
647
- var EmbedTemplateVariable = z14.object({
648
- alias: z14.optional(z14.string()),
649
- initialValue: z14.unknown()
821
+ var EmbedTemplateVariable = z15.object({
822
+ alias: z15.optional(z15.string()),
823
+ initialValue: z15.unknown()
650
824
  });
651
- var EmbedTemplateProp = z14.union([
652
- z14.object({
653
- type: z14.literal("number"),
654
- name: z14.string(),
655
- value: z14.number()
825
+ var EmbedTemplateProp = z15.union([
826
+ z15.object({
827
+ type: z15.literal("number"),
828
+ name: z15.string(),
829
+ value: z15.number()
656
830
  }),
657
- z14.object({
658
- type: z14.literal("string"),
659
- name: z14.string(),
660
- value: z14.string()
831
+ z15.object({
832
+ type: z15.literal("string"),
833
+ name: z15.string(),
834
+ value: z15.string()
661
835
  }),
662
- z14.object({
663
- type: z14.literal("boolean"),
664
- name: z14.string(),
665
- value: z14.boolean()
836
+ z15.object({
837
+ type: z15.literal("boolean"),
838
+ name: z15.string(),
839
+ value: z15.boolean()
666
840
  }),
667
- z14.object({
668
- type: z14.literal("string[]"),
669
- name: z14.string(),
670
- value: z14.array(z14.string())
841
+ z15.object({
842
+ type: z15.literal("string[]"),
843
+ name: z15.string(),
844
+ value: z15.array(z15.string())
671
845
  }),
672
- z14.object({
673
- type: z14.literal("json"),
674
- name: z14.string(),
675
- value: z14.unknown()
846
+ z15.object({
847
+ type: z15.literal("json"),
848
+ name: z15.string(),
849
+ value: z15.unknown()
676
850
  }),
677
- z14.object({
678
- type: z14.literal("expression"),
679
- name: z14.string(),
680
- code: z14.string()
851
+ z15.object({
852
+ type: z15.literal("expression"),
853
+ name: z15.string(),
854
+ code: z15.string()
681
855
  }),
682
- z14.object({
683
- type: z14.literal("parameter"),
684
- name: z14.string(),
685
- variableName: z14.string(),
686
- variableAlias: z14.optional(z14.string())
856
+ z15.object({
857
+ type: z15.literal("parameter"),
858
+ name: z15.string(),
859
+ variableName: z15.string(),
860
+ variableAlias: z15.optional(z15.string())
687
861
  }),
688
- z14.object({
689
- type: z14.literal("action"),
690
- name: z14.string(),
691
- value: z14.array(
692
- z14.object({
693
- type: z14.literal("execute"),
694
- args: z14.optional(z14.array(z14.string())),
695
- code: z14.string()
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()
696
870
  })
697
871
  )
698
872
  })
699
873
  ]);
700
- var EmbedTemplateStyleDeclRaw = z14.object({
874
+ var EmbedTemplateStyleDeclRaw = z15.object({
701
875
  // State selector, e.g. :hover
702
- state: z14.optional(z14.string()),
703
- property: z14.string(),
704
- value: StyleValue2
876
+ state: z15.optional(z15.string()),
877
+ property: z15.string(),
878
+ value: StyleValue3
705
879
  });
706
880
  var EmbedTemplateStyleDecl = EmbedTemplateStyleDeclRaw;
707
- var EmbedTemplateInstance = z14.lazy(
708
- () => z14.object({
709
- type: z14.literal("instance"),
710
- component: z14.string(),
711
- label: z14.optional(z14.string()),
712
- variables: z14.optional(z14.record(z14.string(), EmbedTemplateVariable)),
713
- props: z14.optional(z14.array(EmbedTemplateProp)),
714
- styles: z14.optional(z14.array(EmbedTemplateStyleDecl)),
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)),
715
889
  children: WsEmbedTemplate
716
890
  })
717
891
  );
718
- var WsEmbedTemplate = z14.lazy(
719
- () => z14.array(
720
- z14.union([EmbedTemplateInstance, EmbedTemplateText, EmbedTemplateExpression])
892
+ var WsEmbedTemplate = z15.lazy(
893
+ () => z15.array(
894
+ z15.union([EmbedTemplateInstance, EmbedTemplateText, EmbedTemplateExpression])
721
895
  )
722
896
  );
723
897
 
724
898
  // src/schema/component-meta.ts
725
- import { z as z15 } from "zod";
726
- var WsComponentPropsMeta = z15.object({
727
- props: z15.record(PropMeta),
899
+ import { z as z16 } from "zod";
900
+ import { StyleValue as StyleValue4 } from "@webstudio-is/css-engine";
901
+ var PresetStyleDecl = z16.object({
902
+ // State selector, e.g. :hover
903
+ state: z16.optional(z16.string()),
904
+ property: z16.string(),
905
+ value: StyleValue4
906
+ });
907
+ var WsComponentPropsMeta = z16.object({
908
+ props: z16.record(PropMeta),
728
909
  // Props that will be always visible in properties panel.
729
- initialProps: z15.array(z15.string()).optional()
910
+ initialProps: z16.array(z16.string()).optional()
730
911
  });
731
912
  var componentCategories = [
732
913
  "general",
@@ -741,10 +922,10 @@ var componentCategories = [
741
922
  "internal"
742
923
  ];
743
924
  var stateCategories = ["states", "component-states"];
744
- var ComponentState = z15.object({
745
- category: z15.enum(stateCategories).optional(),
746
- selector: z15.string(),
747
- label: z15.string()
925
+ var ComponentState = z16.object({
926
+ category: z16.enum(stateCategories).optional(),
927
+ selector: z16.string(),
928
+ label: z16.string()
748
929
  });
749
930
  var defaultStates = [
750
931
  { selector: ":hover", label: "Hover" },
@@ -753,28 +934,31 @@ var defaultStates = [
753
934
  { selector: ":focus-visible", label: "Focus Visible" },
754
935
  { selector: ":focus-within", label: "Focus Within" }
755
936
  ];
756
- var WsComponentMeta = z15.object({
757
- category: z15.enum(componentCategories).optional(),
937
+ var WsComponentMeta = z16.object({
938
+ category: z16.enum(componentCategories).optional(),
758
939
  // container - can accept other components with dnd or be edited as text
759
940
  // control - usually form controls like inputs, without children
760
941
  // embed - images, videos or other embeddable components, without children
761
942
  // rich-text-child - formatted text fragment, not listed in components list
762
- type: z15.enum(["container", "control", "embed", "rich-text-child"]),
943
+ type: z16.enum(["container", "control", "embed", "rich-text-child"]),
944
+ /**
945
+ * a property used as textual placeholder when no content specified while in builder
946
+ * also signals to not insert components inside unless dropped explicitly
947
+ */
948
+ placeholder: z16.string().optional(),
763
949
  constraints: Matchers.optional(),
764
950
  // when this field is specified component receives
765
951
  // prop with index of same components withiin specified ancestor
766
952
  // important to automatically enumerate collections without
767
953
  // naming every item manually
768
- indexWithinAncestor: z15.optional(z15.string()),
769
- label: z15.optional(z15.string()),
770
- description: z15.string().optional(),
771
- icon: z15.string(),
772
- presetStyle: z15.optional(
773
- z15.record(z15.string(), z15.array(EmbedTemplateStyleDecl))
774
- ),
775
- states: z15.optional(z15.array(ComponentState)),
776
- template: z15.optional(WsEmbedTemplate),
777
- order: z15.number().optional()
954
+ indexWithinAncestor: z16.optional(z16.string()),
955
+ label: z16.optional(z16.string()),
956
+ description: z16.string().optional(),
957
+ icon: z16.string(),
958
+ presetStyle: z16.optional(z16.record(z16.string(), z16.array(PresetStyleDecl))),
959
+ states: z16.optional(z16.array(ComponentState)),
960
+ template: z16.optional(WsEmbedTemplate),
961
+ order: z16.number().optional()
778
962
  });
779
963
 
780
964
  // src/core-metas.ts
@@ -789,18 +973,18 @@ import {
789
973
  // src/__generated__/normalize.css.ts
790
974
  var html = [
791
975
  { property: "display", value: { type: "keyword", value: "grid" } },
792
- { property: "minHeight", value: { type: "unit", unit: "%", value: 100 } },
976
+ { property: "min-height", value: { type: "unit", unit: "%", value: 100 } },
793
977
  {
794
- property: "fontFamily",
978
+ property: "font-family",
795
979
  value: { type: "fontFamily", value: ["Arial", "Roboto", "sans-serif"] }
796
980
  },
797
- { property: "fontSize", value: { type: "unit", unit: "px", value: 16 } },
981
+ { property: "font-size", value: { type: "unit", unit: "px", value: 16 } },
798
982
  {
799
- property: "lineHeight",
983
+ property: "line-height",
800
984
  value: { type: "unit", unit: "number", value: 1.2 }
801
985
  },
802
986
  {
803
- property: "whiteSpaceCollapse",
987
+ property: "white-space-collapse",
804
988
  value: { type: "keyword", value: "preserve" }
805
989
  }
806
990
  ];
@@ -967,6 +1151,51 @@ var parseComponentName = (componentName) => {
967
1151
  }
968
1152
  return [namespace, name];
969
1153
  };
1154
+ var getIndexesWithinAncestors = (metas, instances, rootIds) => {
1155
+ const ancestors = /* @__PURE__ */ new Set();
1156
+ for (const meta of metas.values()) {
1157
+ if (meta.indexWithinAncestor !== void 0) {
1158
+ ancestors.add(meta.indexWithinAncestor);
1159
+ }
1160
+ }
1161
+ const indexes = /* @__PURE__ */ new Map();
1162
+ const traverseInstances2 = (instances2, instanceId, latestIndexes2 = /* @__PURE__ */ new Map()) => {
1163
+ const instance = instances2.get(instanceId);
1164
+ if (instance === void 0) {
1165
+ return;
1166
+ }
1167
+ const meta = metas.get(instance.component);
1168
+ if (ancestors.has(instance.component)) {
1169
+ latestIndexes2 = new Map(latestIndexes2);
1170
+ latestIndexes2.set(instance.component, /* @__PURE__ */ new Map());
1171
+ }
1172
+ if (instance.component === blockTemplateComponent) {
1173
+ latestIndexes2 = new Map(latestIndexes2);
1174
+ for (const key of latestIndexes2.keys()) {
1175
+ latestIndexes2.set(key, /* @__PURE__ */ new Map());
1176
+ }
1177
+ }
1178
+ if (meta?.indexWithinAncestor !== void 0) {
1179
+ const ancestorIndexes = latestIndexes2.get(meta.indexWithinAncestor);
1180
+ if (ancestorIndexes) {
1181
+ let index = ancestorIndexes.get(instance.component) ?? -1;
1182
+ index += 1;
1183
+ ancestorIndexes.set(instance.component, index);
1184
+ indexes.set(instance.id, index);
1185
+ }
1186
+ }
1187
+ for (const child of instance.children) {
1188
+ if (child.type === "id") {
1189
+ traverseInstances2(instances2, child.value, latestIndexes2);
1190
+ }
1191
+ }
1192
+ };
1193
+ const latestIndexes = /* @__PURE__ */ new Map();
1194
+ for (const instanceId of rootIds) {
1195
+ traverseInstances2(instances, instanceId, latestIndexes);
1196
+ }
1197
+ return indexes;
1198
+ };
970
1199
 
971
1200
  // src/expression.ts
972
1201
  import {
@@ -974,6 +1203,13 @@ import {
974
1203
  parseExpressionAt
975
1204
  } from "acorn";
976
1205
  import { simple } from "acorn-walk";
1206
+ var SYSTEM_VARIABLE_ID = ":system";
1207
+ var systemParameter = {
1208
+ id: SYSTEM_VARIABLE_ID,
1209
+ scopeInstanceId: ROOT_INSTANCE_ID,
1210
+ type: "parameter",
1211
+ name: "system"
1212
+ };
977
1213
  var lintExpression = ({
978
1214
  expression,
979
1215
  availableVariables = /* @__PURE__ */ new Set(),
@@ -1225,11 +1461,17 @@ var generateObjectExpression = (map) => {
1225
1461
  return generated;
1226
1462
  };
1227
1463
  var dataSourceVariablePrefix = "$ws$dataSource$";
1228
- var encodeDataSourceVariable = (id) => {
1464
+ var encodeDataVariableId = (id) => {
1465
+ if (id === SYSTEM_VARIABLE_ID) {
1466
+ return "$ws$system";
1467
+ }
1229
1468
  const encoded = id.replaceAll("-", "__DASH__");
1230
1469
  return `${dataSourceVariablePrefix}${encoded}`;
1231
1470
  };
1232
- var decodeDataSourceVariable = (name) => {
1471
+ var decodeDataVariableId = (name) => {
1472
+ if (name === "$ws$system") {
1473
+ return SYSTEM_VARIABLE_ID;
1474
+ }
1233
1475
  if (name.startsWith(dataSourceVariablePrefix)) {
1234
1476
  const encoded = name.slice(dataSourceVariablePrefix.length);
1235
1477
  return encoded.replaceAll("__DASH__", "-");
@@ -1246,8 +1488,11 @@ var generateExpression = ({
1246
1488
  expression,
1247
1489
  executable: true,
1248
1490
  replaceVariable: (identifier) => {
1249
- const depId = decodeDataSourceVariable(identifier);
1250
- const dep = depId ? dataSources.get(depId) : void 0;
1491
+ const depId = decodeDataVariableId(identifier);
1492
+ let dep = depId ? dataSources.get(depId) : void 0;
1493
+ if (depId === SYSTEM_VARIABLE_ID) {
1494
+ dep = systemParameter;
1495
+ }
1251
1496
  if (dep) {
1252
1497
  usedDataSources?.set(dep.id, dep);
1253
1498
  return scope.getName(dep.id, dep.name);
@@ -1439,12 +1684,11 @@ var generateResources = ({
1439
1684
  `;
1440
1685
  }
1441
1686
  if (dataSource.type === "parameter") {
1442
- if (dataSource.id !== page.systemDataSourceId) {
1443
- continue;
1444
- }
1445
- const name = scope.getName(dataSource.id, dataSource.name);
1446
- generatedVariables += ` const ${name} = _props.system
1687
+ if (dataSource.id === page.systemDataSourceId || dataSource.id === SYSTEM_VARIABLE_ID) {
1688
+ const name = scope.getName(dataSource.id, dataSource.name);
1689
+ generatedVariables += ` const ${name} = _props.system
1447
1690
  `;
1691
+ }
1448
1692
  }
1449
1693
  }
1450
1694
  let generated = "";
@@ -1641,7 +1885,7 @@ var generatePageMeta = ({
1641
1885
  continue;
1642
1886
  }
1643
1887
  if (dataSource.type === "parameter") {
1644
- if (dataSource.id === page.systemDataSourceId) {
1888
+ if (dataSource.id === page.systemDataSourceId || dataSource.id === SYSTEM_VARIABLE_ID) {
1645
1889
  const valueName = localScope.getName(dataSource.id, dataSource.name);
1646
1890
  generated += ` let ${valueName} = system
1647
1891
  `;
@@ -1685,6 +1929,182 @@ var generatePageMeta = ({
1685
1929
  `;
1686
1930
  return generated;
1687
1931
  };
1932
+
1933
+ // src/css.ts
1934
+ import { kebabCase } from "change-case";
1935
+ import {
1936
+ createRegularStyleSheet,
1937
+ generateAtomic
1938
+ } from "@webstudio-is/css-engine";
1939
+ import { getFontFaces } from "@webstudio-is/fonts";
1940
+ var addFontRules = ({
1941
+ sheet,
1942
+ assets,
1943
+ assetBaseUrl
1944
+ }) => {
1945
+ const fontAssets = [];
1946
+ for (const asset of assets.values()) {
1947
+ if (asset.type === "font") {
1948
+ fontAssets.push(asset);
1949
+ }
1950
+ }
1951
+ const fontFaces = getFontFaces(fontAssets, { assetBaseUrl });
1952
+ for (const fontFace of fontFaces) {
1953
+ sheet.addFontFaceRule(fontFace);
1954
+ }
1955
+ };
1956
+ var createImageValueTransformer = (assets, { assetBaseUrl }) => (styleValue) => {
1957
+ if (styleValue.type === "image" && styleValue.value.type === "asset") {
1958
+ const asset = assets.get(styleValue.value.value);
1959
+ if (asset === void 0) {
1960
+ return { type: "keyword", value: "none" };
1961
+ }
1962
+ const url = `${assetBaseUrl}${asset.name}`;
1963
+ return {
1964
+ type: "image",
1965
+ value: {
1966
+ type: "url",
1967
+ url
1968
+ },
1969
+ hidden: styleValue.hidden
1970
+ };
1971
+ }
1972
+ };
1973
+ var normalizeClassName = (name) => kebabCase(name);
1974
+ var generateCss = ({
1975
+ assets,
1976
+ instances,
1977
+ props,
1978
+ breakpoints,
1979
+ styles,
1980
+ styleSourceSelections,
1981
+ componentMetas,
1982
+ assetBaseUrl,
1983
+ atomic
1984
+ }) => {
1985
+ const fontSheet = createRegularStyleSheet({ name: "ssr" });
1986
+ const presetSheet = createRegularStyleSheet({ name: "ssr" });
1987
+ const userSheet = createRegularStyleSheet({ name: "ssr" });
1988
+ addFontRules({ sheet: fontSheet, assets, assetBaseUrl });
1989
+ presetSheet.addMediaRule("presets");
1990
+ const presetClasses = /* @__PURE__ */ new Map();
1991
+ const scope = createScope([], normalizeClassName, "-");
1992
+ for (const [component, meta] of componentMetas) {
1993
+ const [_namespace, componentName] = parseComponentName(component);
1994
+ const className = `w-${scope.getName(component, meta.label ?? componentName)}`;
1995
+ const presetStyle = Object.entries(meta.presetStyle ?? {});
1996
+ if (presetStyle.length > 0) {
1997
+ presetClasses.set(component, className);
1998
+ }
1999
+ for (const [tag, styles2] of presetStyle) {
2000
+ const selector = component === rootComponent ? ":root" : `${tag}.${className}`;
2001
+ const rule = presetSheet.addNestingRule(selector);
2002
+ for (const declaration of styles2) {
2003
+ rule.setDeclaration({
2004
+ breakpoint: "presets",
2005
+ selector: declaration.state ?? "",
2006
+ property: declaration.property,
2007
+ value: declaration.value
2008
+ });
2009
+ }
2010
+ }
2011
+ }
2012
+ for (const breakpoint of breakpoints.values()) {
2013
+ userSheet.addMediaRule(breakpoint.id, breakpoint);
2014
+ }
2015
+ const imageValueTransformer = createImageValueTransformer(assets, {
2016
+ assetBaseUrl
2017
+ });
2018
+ userSheet.setTransformer(imageValueTransformer);
2019
+ for (const styleDecl of styles.values()) {
2020
+ const rule = userSheet.addMixinRule(styleDecl.styleSourceId);
2021
+ rule.setDeclaration({
2022
+ breakpoint: styleDecl.breakpointId,
2023
+ selector: styleDecl.state ?? "",
2024
+ property: styleDecl.property,
2025
+ value: styleDecl.value
2026
+ });
2027
+ }
2028
+ const classes = /* @__PURE__ */ new Map();
2029
+ const parentIdByInstanceId = /* @__PURE__ */ new Map();
2030
+ for (const instance of instances.values()) {
2031
+ const presetClass = presetClasses.get(instance.component);
2032
+ if (presetClass) {
2033
+ classes.set(instance.id, [presetClass]);
2034
+ }
2035
+ for (const child of instance.children) {
2036
+ if (child.type === "id") {
2037
+ parentIdByInstanceId.set(child.value, instance.id);
2038
+ }
2039
+ }
2040
+ }
2041
+ const descendantSelectorByInstanceId = /* @__PURE__ */ new Map();
2042
+ for (const prop of props.values()) {
2043
+ if (prop.name === "selector" && prop.type === "string") {
2044
+ descendantSelectorByInstanceId.set(prop.instanceId, prop.value);
2045
+ }
2046
+ }
2047
+ const instanceByRule = /* @__PURE__ */ new Map();
2048
+ for (const selection of styleSourceSelections.values()) {
2049
+ let { instanceId } = selection;
2050
+ const { values } = selection;
2051
+ if (instanceId === ROOT_INSTANCE_ID) {
2052
+ const rule2 = userSheet.addNestingRule(`:root`);
2053
+ rule2.applyMixins(values);
2054
+ continue;
2055
+ }
2056
+ let descendantSuffix = "";
2057
+ const instance = instances.get(instanceId);
2058
+ if (instance === void 0) {
2059
+ continue;
2060
+ }
2061
+ if (instance.component === descendantComponent) {
2062
+ const parentId = parentIdByInstanceId.get(instanceId);
2063
+ const descendantSelector = descendantSelectorByInstanceId.get(instanceId);
2064
+ if (parentId && descendantSelector) {
2065
+ descendantSuffix = descendantSelector;
2066
+ instanceId = parentId;
2067
+ }
2068
+ }
2069
+ const meta = componentMetas.get(instance.component);
2070
+ const [_namespace, shortName] = parseComponentName(instance.component);
2071
+ const baseName = instance.label ?? meta?.label ?? shortName;
2072
+ const className = `w-${scope.getName(instanceId, baseName)}`;
2073
+ if (atomic === false) {
2074
+ let classList = classes.get(instanceId);
2075
+ if (classList === void 0) {
2076
+ classList = [];
2077
+ classes.set(instanceId, classList);
2078
+ }
2079
+ classList.push(className);
2080
+ }
2081
+ const rule = userSheet.addNestingRule(`.${className}`, descendantSuffix);
2082
+ rule.applyMixins(values);
2083
+ instanceByRule.set(rule, instanceId);
2084
+ }
2085
+ const fontCss = fontSheet.cssText;
2086
+ const presetCss = presetSheet.cssText.replaceAll(
2087
+ "@media all ",
2088
+ "@layer presets "
2089
+ );
2090
+ if (atomic) {
2091
+ const { cssText } = generateAtomic(userSheet, {
2092
+ getKey: (rule) => instanceByRule.get(rule),
2093
+ transformValue: imageValueTransformer,
2094
+ classes
2095
+ });
2096
+ return {
2097
+ cssText: `${fontCss}${presetCss}
2098
+ ${cssText}`,
2099
+ classes
2100
+ };
2101
+ }
2102
+ return {
2103
+ cssText: `${fontCss}${presetCss}
2104
+ ${userSheet.cssText}`,
2105
+ classes
2106
+ };
2107
+ };
1688
2108
  export {
1689
2109
  Asset,
1690
2110
  Assets,
@@ -1720,15 +2140,18 @@ export {
1720
2140
  PageRedirect,
1721
2141
  PageTitle,
1722
2142
  Pages,
2143
+ PresetStyleDecl,
1723
2144
  ProjectNewRedirectPath,
1724
2145
  Prop,
1725
2146
  PropMeta,
1726
2147
  Props,
2148
+ RANGE_UNITS,
1727
2149
  ROOT_FOLDER_ID,
1728
2150
  ROOT_INSTANCE_ID,
1729
2151
  Resource,
1730
2152
  ResourceRequest,
1731
2153
  Resources,
2154
+ SYSTEM_VARIABLE_ID,
1732
2155
  StyleDecl,
1733
2156
  StyleSource,
1734
2157
  StyleSourceSelection,
@@ -1740,6 +2163,9 @@ export {
1740
2163
  WebstudioFragment,
1741
2164
  WsComponentMeta,
1742
2165
  WsEmbedTemplate,
2166
+ addFontRules,
2167
+ animationActionSchema,
2168
+ animationKeyframeSchema,
1743
2169
  blockComponent,
1744
2170
  blockTemplateComponent,
1745
2171
  blockTemplateMeta,
@@ -1747,28 +2173,32 @@ export {
1747
2173
  componentCategories,
1748
2174
  coreMetas,
1749
2175
  corePropsMetas,
2176
+ createImageValueTransformer,
1750
2177
  createScope,
1751
- decodeDataSourceVariable,
1752
- decodeDataSourceVariable as decodeDataVariableId,
2178
+ decodeDataVariableId as decodeDataSourceVariable,
2179
+ decodeDataVariableId,
1753
2180
  defaultStates,
1754
2181
  descendantComponent,
1755
2182
  documentTypes,
1756
- encodeDataSourceVariable,
1757
- encodeDataSourceVariable as encodeDataVariableId,
2183
+ encodeDataVariableId as encodeDataSourceVariable,
2184
+ encodeDataVariableId,
1758
2185
  executeExpression,
1759
2186
  findPageByIdOrPath,
1760
2187
  findParentFolderByChildId,
1761
2188
  findTreeInstanceIds,
1762
2189
  findTreeInstanceIdsExcludingSlotDescendants,
2190
+ generateCss,
1763
2191
  generateExpression,
1764
2192
  generateObjectExpression,
1765
2193
  generatePageMeta,
1766
2194
  generateResources,
1767
2195
  getExpressionIdentifiers,
2196
+ getIndexesWithinAncestors,
1768
2197
  getPagePath,
1769
2198
  getStaticSiteMapXml,
1770
2199
  getStyleDeclKey,
1771
2200
  initialBreakpoints,
2201
+ insetUnitValueSchema,
1772
2202
  isCoreComponent,
1773
2203
  isLiteralExpression,
1774
2204
  isPathnamePattern,
@@ -1778,8 +2208,12 @@ export {
1778
2208
  parseComponentName,
1779
2209
  parseObjectExpression,
1780
2210
  portalComponent,
2211
+ rangeUnitValueSchema,
1781
2212
  replaceFormActionsWithResources,
1782
2213
  rootComponent,
2214
+ scrollAnimationSchema,
1783
2215
  stateCategories,
1784
- transpileExpression
2216
+ systemParameter,
2217
+ transpileExpression,
2218
+ viewAnimationSchema
1785
2219
  };