@vectoriox/iox-ui 5.78.0 → 5.80.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/fesm2022/vectoriox-iox-ui-generation-core.mjs +314 -7
- package/fesm2022/vectoriox-iox-ui-generation-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-harness-core.mjs +3 -1
- package/fesm2022/vectoriox-iox-ui-harness-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-media-core.mjs +23 -1
- package/fesm2022/vectoriox-iox-ui-media-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-scene-core.mjs +3 -6
- package/fesm2022/vectoriox-iox-ui-scene-core.mjs.map +1 -1
- package/generation-core/index.d.ts +186 -6
- package/harness-core/index.d.ts +9 -2
- package/media-core/index.d.ts +19 -1
- package/package.json +1 -1
- package/scene-core/index.d.ts +1 -4
- package/src/generation-core/ai-run.ts +9 -0
- package/src/generation-core/compose-site.ts +13 -0
- package/src/generation-core/film.ts +91 -0
- package/src/generation-core/patterns.ts +5 -1
- package/src/generation-core/plan-wire.ts +4 -2
- package/src/generation-core/public-api.ts +1 -0
- package/src/generation-core/showcase.ts +16 -2
- package/src/generation-core/site-plan.model.ts +8 -0
- package/src/generation-core/site-spec.generated.ts +161 -1
- package/src/generation-core/validate-site-plan.ts +33 -0
- package/src/harness-core/generation-view.ts +9 -3
- package/src/media-core/frames.ts +23 -0
- package/src/scene-core/scene-edit.ts +3 -5
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { NEW_NODE_STYLE_DEFAULTS, defaultElementStyleFor, elementStyleById, ownedTraitsOf, applyElementStyle, flavorPackById, parseHexColor, SPEC_AXES, EntranceParam, staggerDelay, LinkType, COLOR_SCHEMES, setColorScheme, resolveDesignChoices, ANIMATE_IDS, auditDesignContrast } from '@vectoriox/iox-ui/design-core';
|
|
2
2
|
import { formPresetById, FORM_PRESETS, ControlType, FORM_NODE_TYPE, collectFormSpec, FIELD_NODE_TYPE } from '@vectoriox/iox-ui/forms-core';
|
|
3
|
+
import { normalizeFrameSequence, filmScreensFor, FILM_PREPARED_PICTURES, FrameExtension } from '@vectoriox/iox-ui/media-core';
|
|
3
4
|
import { SEO_DESCRIPTION_MAX, SEO_TITLE_MAX } from '@vectoriox/iox-ui/seo-core';
|
|
4
5
|
import { pickTabsAutoBinds, pickAccordionAutoBinds, segmentedOptions, ITEM_OPEN_STATE, CardPart, CardRole, CardLayout, CARD_LAYOUTS, CARD_PARTS, BADGE_TONES, buildCardRecipe, findByRole, buildSegmentedRecipe, AccordionRole, buildAccordionRecipe, ACCORDION_WORDS, accordionItems, accordionQuestionOf, accordionAnswerOf, ACCORDION_BIND_PROP, ACCORDION_CONTENT_LIMIT, buildTabsRecipe, TABS_WORDS, tabsTriggers, tabLabelNodeOf, TABS_LABEL_BIND_PROP, tabsPanels, tabPanelTextOf, TABS_TEXT_BIND_PROP, tabPanelImageOf, tabsListOf, tabsPanelsOf, TABS_CONTENT_LIMIT, TABS_IMAGE_BIND_PROP, buildCarouselRecipe, SLIDE_TYPE, buildLightboxRecipe, LIGHTBOX_LABEL, SLIDE_TO_ROW } from '@vectoriox/iox-ui/composite-core';
|
|
5
6
|
import { ELEMENT_ACTION_DESCRIPTORS, resolveActionAvailability } from '@vectoriox/iox-ui/actions-core';
|
|
@@ -18,7 +19,11 @@ const SPEC_SITE_PLAN_SHAPE = {
|
|
|
18
19
|
"contentTypes": "contentType[]",
|
|
19
20
|
"dataSources": "(cmsDataSource | relativeDataSource)[] — merged by alias into the org library",
|
|
20
21
|
"pages": "page[]",
|
|
21
|
-
"globals": "globals"
|
|
22
|
+
"globals": "globals",
|
|
23
|
+
"film?": "film — the owner's film as pictures (SC6b), set by the build and placed by placeFilm; never a model's"
|
|
24
|
+
},
|
|
25
|
+
"film": {
|
|
26
|
+
"sequence": "object — a media-core FrameSequence: where the numbered pictures live, how many, their size"
|
|
22
27
|
},
|
|
23
28
|
"sourceTemplate": {
|
|
24
29
|
"kind": "'template'",
|
|
@@ -579,6 +584,157 @@ const SPEC_SITE_PATTERNS = {
|
|
|
579
584
|
]
|
|
580
585
|
}
|
|
581
586
|
},
|
|
587
|
+
"hero.scene-object": {
|
|
588
|
+
"family": "hero",
|
|
589
|
+
"scene": true,
|
|
590
|
+
"film": true,
|
|
591
|
+
"label": "Hero — your film plays as you scroll",
|
|
592
|
+
"intent": "The studio's own film plays forward and back with the scroll behind the headline while the page holds still.",
|
|
593
|
+
"node": {
|
|
594
|
+
"t": "Section",
|
|
595
|
+
"es": "section",
|
|
596
|
+
"scheme": "inverse",
|
|
597
|
+
"role": "scene",
|
|
598
|
+
"lay": {
|
|
599
|
+
"position": "relative",
|
|
600
|
+
"display": "block",
|
|
601
|
+
"width": "100%",
|
|
602
|
+
"height": "300vh",
|
|
603
|
+
"padding": "0px"
|
|
604
|
+
},
|
|
605
|
+
"c": [
|
|
606
|
+
{
|
|
607
|
+
"t": "Container",
|
|
608
|
+
"role": "scene.stage",
|
|
609
|
+
"lay": {
|
|
610
|
+
"position": "sticky",
|
|
611
|
+
"top": "0px",
|
|
612
|
+
"display": "block",
|
|
613
|
+
"width": "100%",
|
|
614
|
+
"height": "100svh",
|
|
615
|
+
"overflow": "hidden",
|
|
616
|
+
"padding": "0px"
|
|
617
|
+
},
|
|
618
|
+
"c": [
|
|
619
|
+
{
|
|
620
|
+
"t": "Video",
|
|
621
|
+
"es": "media",
|
|
622
|
+
"film": true,
|
|
623
|
+
"lay": {
|
|
624
|
+
"position": "absolute",
|
|
625
|
+
"top": "0px",
|
|
626
|
+
"left": "0px",
|
|
627
|
+
"width": "100%",
|
|
628
|
+
"height": "100%",
|
|
629
|
+
"aspectRatio": "auto",
|
|
630
|
+
"borderRadius": "0px"
|
|
631
|
+
},
|
|
632
|
+
"tracks": [
|
|
633
|
+
{
|
|
634
|
+
"prop": "play",
|
|
635
|
+
"keys": [
|
|
636
|
+
[
|
|
637
|
+
0,
|
|
638
|
+
0
|
|
639
|
+
],
|
|
640
|
+
[
|
|
641
|
+
1,
|
|
642
|
+
100
|
|
643
|
+
]
|
|
644
|
+
]
|
|
645
|
+
}
|
|
646
|
+
]
|
|
647
|
+
},
|
|
648
|
+
{
|
|
649
|
+
"t": "Container",
|
|
650
|
+
"es": "media-scrim",
|
|
651
|
+
"lay": {
|
|
652
|
+
"display": "flex",
|
|
653
|
+
"flexDirection": "column",
|
|
654
|
+
"gap": "14px",
|
|
655
|
+
"position": "absolute",
|
|
656
|
+
"left": "0px",
|
|
657
|
+
"bottom": "0px",
|
|
658
|
+
"width": "100%",
|
|
659
|
+
"padding": "48px 32px 56px 32px"
|
|
660
|
+
},
|
|
661
|
+
"c": [
|
|
662
|
+
{
|
|
663
|
+
"t": "Heading",
|
|
664
|
+
"es": "display",
|
|
665
|
+
"level": "h1",
|
|
666
|
+
"slot": "headline",
|
|
667
|
+
"max": 56,
|
|
668
|
+
"fromBusiness": "name",
|
|
669
|
+
"tracks": [
|
|
670
|
+
{
|
|
671
|
+
"prop": "y",
|
|
672
|
+
"keys": [
|
|
673
|
+
[
|
|
674
|
+
0,
|
|
675
|
+
0
|
|
676
|
+
],
|
|
677
|
+
[
|
|
678
|
+
1,
|
|
679
|
+
-6
|
|
680
|
+
]
|
|
681
|
+
]
|
|
682
|
+
}
|
|
683
|
+
]
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
"t": "Text",
|
|
687
|
+
"es": "lead",
|
|
688
|
+
"slot": "lead",
|
|
689
|
+
"max": 180,
|
|
690
|
+
"fromBusiness": "tagline",
|
|
691
|
+
"ph": "copy",
|
|
692
|
+
"tracks": [
|
|
693
|
+
{
|
|
694
|
+
"prop": "opacity",
|
|
695
|
+
"keys": [
|
|
696
|
+
[
|
|
697
|
+
0.3,
|
|
698
|
+
0
|
|
699
|
+
],
|
|
700
|
+
[
|
|
701
|
+
0.45,
|
|
702
|
+
1
|
|
703
|
+
]
|
|
704
|
+
]
|
|
705
|
+
}
|
|
706
|
+
]
|
|
707
|
+
},
|
|
708
|
+
{
|
|
709
|
+
"t": "ButtonBlock",
|
|
710
|
+
"es": "button-primary",
|
|
711
|
+
"href": "/contact",
|
|
712
|
+
"slot": "cta",
|
|
713
|
+
"max": 24,
|
|
714
|
+
"text": "Get in touch",
|
|
715
|
+
"tracks": [
|
|
716
|
+
{
|
|
717
|
+
"prop": "opacity",
|
|
718
|
+
"keys": [
|
|
719
|
+
[
|
|
720
|
+
0.35,
|
|
721
|
+
0
|
|
722
|
+
],
|
|
723
|
+
[
|
|
724
|
+
0.5,
|
|
725
|
+
1
|
|
726
|
+
]
|
|
727
|
+
]
|
|
728
|
+
}
|
|
729
|
+
]
|
|
730
|
+
}
|
|
731
|
+
]
|
|
732
|
+
}
|
|
733
|
+
]
|
|
734
|
+
}
|
|
735
|
+
]
|
|
736
|
+
}
|
|
737
|
+
},
|
|
582
738
|
"story.scene-chapters": {
|
|
583
739
|
"family": "story",
|
|
584
740
|
"scene": true,
|
|
@@ -5486,6 +5642,11 @@ const SPEC_SITE_LIBRARY = [
|
|
|
5486
5642
|
"family": "hero",
|
|
5487
5643
|
"composed": true
|
|
5488
5644
|
},
|
|
5645
|
+
{
|
|
5646
|
+
"id": "hero.scene-object",
|
|
5647
|
+
"family": "hero",
|
|
5648
|
+
"composed": true
|
|
5649
|
+
},
|
|
5489
5650
|
{
|
|
5490
5651
|
"id": "proof.logo-strip",
|
|
5491
5652
|
"family": "proof",
|
|
@@ -11103,7 +11264,7 @@ const SITE_LIBRARY = SPEC_SITE_LIBRARY;
|
|
|
11103
11264
|
*/
|
|
11104
11265
|
function patternManifest(density, options = {}) {
|
|
11105
11266
|
const scenes = !('animate' in options) || options.animate === SCENE_LEVEL;
|
|
11106
|
-
return Object.entries(SITE_PATTERNS).filter(([, p]) => scenes || !p.scene).map(([id, p]) => ({
|
|
11267
|
+
return Object.entries(SITE_PATTERNS).filter(([, p]) => !p.film && (scenes || !p.scene)).map(([id, p]) => ({
|
|
11107
11268
|
id, family: p.family, label: p.label, intent: p.intent, ...(p.global ? { global: p.global } : {}),
|
|
11108
11269
|
slots: Object.fromEntries(Object.keys(patternSlotBudgets(p)).map(slot => [slot, slotBudget(p, slot, density)])),
|
|
11109
11270
|
links: patternLinkSlots(p),
|
|
@@ -11455,6 +11616,9 @@ var SitePlanIssueCode;
|
|
|
11455
11616
|
/** SC6: a Scene below How animated Expressive, a second Scene on a page, or Scenes on more than the home page and
|
|
11456
11617
|
* one other — the pages answer by choosing another pattern. */
|
|
11457
11618
|
SitePlanIssueCode["SceneBudget"] = "scene-budget";
|
|
11619
|
+
/** SC6b: the owner's film — pictures that cannot play, too few to play smoothly, or a film's pattern on a plan with
|
|
11620
|
+
* no film (or twice). Set by the build, never by a model. */
|
|
11621
|
+
SitePlanIssueCode["Film"] = "film";
|
|
11458
11622
|
})(SitePlanIssueCode || (SitePlanIssueCode = {}));
|
|
11459
11623
|
class SitePlanError extends Error {
|
|
11460
11624
|
constructor(issues) {
|
|
@@ -11484,6 +11648,7 @@ const SEED_FIXED_KEYS = shapeKeys(SHAPE['seed']);
|
|
|
11484
11648
|
const CMS_SOURCE_KEYS = shapeKeys(SHAPE['cmsDataSource']);
|
|
11485
11649
|
const RELATIVE_SOURCE_KEYS = shapeKeys(SHAPE['relativeDataSource']);
|
|
11486
11650
|
const PAGE_KEYS = shapeKeys(SHAPE['page']);
|
|
11651
|
+
const FILM_KEYS = shapeKeys(SHAPE['film']);
|
|
11487
11652
|
const SECTION_KEYS = shapeKeys(SHAPE['section']);
|
|
11488
11653
|
const GLOBAL_POSITION = {
|
|
11489
11654
|
[GlobalSlot.Header]: PatternGlobalPosition.Before,
|
|
@@ -11934,6 +12099,40 @@ function validateScenes(c, pages, animate) {
|
|
|
11934
12099
|
});
|
|
11935
12100
|
});
|
|
11936
12101
|
}
|
|
12102
|
+
/** SC6b: a film plays only when its pictures can (and smoothly over the shortest hold); its pattern only with a film, once. */
|
|
12103
|
+
function validateFilm(c, film, pages) {
|
|
12104
|
+
let playable = false;
|
|
12105
|
+
if (film !== undefined) {
|
|
12106
|
+
if (!isPlainObject(film)) {
|
|
12107
|
+
c.add(SitePlanIssueCode.Shape, 'film', 'must be an object');
|
|
12108
|
+
}
|
|
12109
|
+
else {
|
|
12110
|
+
c.keys(film, FILM_KEYS, 'film');
|
|
12111
|
+
const sequence = normalizeFrameSequence(film['sequence']);
|
|
12112
|
+
if (!sequence)
|
|
12113
|
+
c.add(SitePlanIssueCode.Film, 'film.sequence', 'not a film\'s pictures (a media-core FrameSequence)');
|
|
12114
|
+
else if (filmScreensFor(sequence.wide.count) === null)
|
|
12115
|
+
c.add(SitePlanIssueCode.Film, 'film.sequence', `${sequence.wide.count} pictures — too few to play smoothly`);
|
|
12116
|
+
else
|
|
12117
|
+
playable = true;
|
|
12118
|
+
}
|
|
12119
|
+
}
|
|
12120
|
+
let placed = 0;
|
|
12121
|
+
pages.forEach((raw, i) => {
|
|
12122
|
+
if (!isPlainObject(raw) || !Array.isArray(raw['sections']))
|
|
12123
|
+
return;
|
|
12124
|
+
raw['sections'].forEach((s, j) => {
|
|
12125
|
+
const pattern = isPlainObject(s) && typeof s['pattern'] === 'string' ? patternById(s['pattern']) : null;
|
|
12126
|
+
if (!pattern?.film)
|
|
12127
|
+
return;
|
|
12128
|
+
const path = `pages[${i}].sections[${j}].pattern`;
|
|
12129
|
+
if (!playable)
|
|
12130
|
+
c.add(SitePlanIssueCode.Film, path, `"${s['pattern']}" plays the owner's film — this plan has none`);
|
|
12131
|
+
else if (++placed > 1)
|
|
12132
|
+
c.add(SitePlanIssueCode.Film, path, 'the film plays once on a site');
|
|
12133
|
+
});
|
|
12134
|
+
});
|
|
12135
|
+
}
|
|
11937
12136
|
function validatePageSeo(c, seo, path) {
|
|
11938
12137
|
if (seo === undefined)
|
|
11939
12138
|
return;
|
|
@@ -11987,6 +12186,7 @@ function validateSitePlan(plan) {
|
|
|
11987
12186
|
validatePages(c, c.array(plan, 'pages', ''), types, sources, typeof design['density'] === 'string' ? design['density'] : null);
|
|
11988
12187
|
validateGlobals(c, plan['globals']);
|
|
11989
12188
|
validateScenes(c, c.array(plan, 'pages', ''), typeof design['animate'] === 'string' ? design['animate'] : null);
|
|
12189
|
+
validateFilm(c, plan['film'], c.array(plan, 'pages', ''));
|
|
11990
12190
|
return { valid: c.issues.length === 0, issues: c.issues };
|
|
11991
12191
|
}
|
|
11992
12192
|
/** Throw a `SitePlanError` carrying every issue unless the plan is valid. */
|
|
@@ -12119,6 +12319,79 @@ function planEntrances(input) {
|
|
|
12119
12319
|
});
|
|
12120
12320
|
}
|
|
12121
12321
|
|
|
12322
|
+
/**
|
|
12323
|
+
* The owner's film on a built site (premium sites SC6b). The owner gives a video in Analysis; the wizard's browser makes
|
|
12324
|
+
* it pictures (cms-client `FramesPrepareService`); the build places it. A model never picks the film's pattern — the
|
|
12325
|
+
* manifest and the plan wire leave it out — so ONE pure placement decides where it goes, run by the wizard to draw the
|
|
12326
|
+
* Plan and by the server to build: they cannot disagree.
|
|
12327
|
+
*/
|
|
12328
|
+
/** The pattern a film plays in: the one whose Video is marked `film` in the contract. */
|
|
12329
|
+
const FILM_PATTERN = Object.entries(SITE_PATTERNS).find(([, p]) => p.film)?.[0] ?? '';
|
|
12330
|
+
/** Why a film stays off the site. Each is said to the owner on the Plan step. */
|
|
12331
|
+
var FilmUnplaced;
|
|
12332
|
+
(function (FilmUnplaced) {
|
|
12333
|
+
/** How animated is below Expressive: no section holds the page there. */
|
|
12334
|
+
FilmUnplaced["NotExpressive"] = "notExpressive";
|
|
12335
|
+
/** The home page does not open with a hero to play it in. */
|
|
12336
|
+
FilmUnplaced["NoHero"] = "noHero";
|
|
12337
|
+
/** The home page already holds the page elsewhere (one Scene per page). */
|
|
12338
|
+
FilmUnplaced["AnotherScene"] = "anotherScene";
|
|
12339
|
+
/** Too few pictures to play smoothly over the shortest hold (media-core `FILM_MIN_PICTURES`). */
|
|
12340
|
+
FilmUnplaced["TooShort"] = "tooShort";
|
|
12341
|
+
})(FilmUnplaced || (FilmUnplaced = {}));
|
|
12342
|
+
/** Where a film WOULD play on this plan (the Plan step asks before the pictures exist). */
|
|
12343
|
+
function filmPlacement(plan) {
|
|
12344
|
+
if (plan.design.animate !== SCENE_LEVEL)
|
|
12345
|
+
return { unplaced: FilmUnplaced.NotExpressive };
|
|
12346
|
+
const page = plan.pages.findIndex(p => p.isHome);
|
|
12347
|
+
const sections = page >= 0 ? plan.pages[page].sections : [];
|
|
12348
|
+
const first = patternById(sections[0]?.pattern);
|
|
12349
|
+
if (!first || first.family !== FILM_FAMILY)
|
|
12350
|
+
return { unplaced: FilmUnplaced.NoHero };
|
|
12351
|
+
if (sections.slice(1).some(s => patternById(s.pattern)?.scene))
|
|
12352
|
+
return { unplaced: FilmUnplaced.AnotherScene };
|
|
12353
|
+
return { target: { page, section: 0 } };
|
|
12354
|
+
}
|
|
12355
|
+
const FILM_FAMILY = SITE_PATTERNS[FILM_PATTERN]?.family ?? 'hero';
|
|
12356
|
+
/**
|
|
12357
|
+
* The plan with the owner's film in it: `film` set, and the home page's hero becomes the film's pattern, keeping the
|
|
12358
|
+
* hero's words and links that the film's pattern has. A film that cannot play (unreadable, too few pictures) or a plan
|
|
12359
|
+
* with no place for it leaves the plan as it was — the hero keeps its picture, and the builder can add the film later.
|
|
12360
|
+
*/
|
|
12361
|
+
function placeFilm(plan, sequence) {
|
|
12362
|
+
const film = normalizeFrameSequence(sequence);
|
|
12363
|
+
if (!film || filmScreensFor(film.wide.count) === null)
|
|
12364
|
+
return { plan, unplaced: FilmUnplaced.TooShort };
|
|
12365
|
+
const placement = filmPlacement(plan);
|
|
12366
|
+
if (!placement.target)
|
|
12367
|
+
return { plan, unplaced: placement.unplaced };
|
|
12368
|
+
const { page, section } = placement.target;
|
|
12369
|
+
const pages = plan.pages.map((p, i) => i !== page ? p : {
|
|
12370
|
+
...p,
|
|
12371
|
+
sections: p.sections.map((s, j) => (j === section ? filmSection(s) : s)),
|
|
12372
|
+
});
|
|
12373
|
+
return { plan: { ...plan, pages, film: { sequence: film } } };
|
|
12374
|
+
}
|
|
12375
|
+
function filmSection(hero) {
|
|
12376
|
+
const pattern = SITE_PATTERNS[FILM_PATTERN];
|
|
12377
|
+
const slots = new Set(patternSlots(pattern));
|
|
12378
|
+
const links = new Set(patternLinkSlots(pattern));
|
|
12379
|
+
const keep = (values, allowed) => {
|
|
12380
|
+
const kept = Object.entries(values ?? {}).filter(([key]) => allowed.has(key));
|
|
12381
|
+
return kept.length ? Object.fromEntries(kept) : undefined;
|
|
12382
|
+
};
|
|
12383
|
+
const keptSlots = keep(hero.slots, slots);
|
|
12384
|
+
const keptLinks = keep(hero.links, links);
|
|
12385
|
+
return { pattern: FILM_PATTERN, ...(keptSlots ? { slots: keptSlots } : {}), ...(keptLinks ? { links: keptLinks } : {}) };
|
|
12386
|
+
}
|
|
12387
|
+
/** The film's pictures as the composer stamps them, and the height its Scene holds the page for. */
|
|
12388
|
+
function filmOfPlan(plan) {
|
|
12389
|
+
const sequence = normalizeFrameSequence(plan.film?.sequence);
|
|
12390
|
+
const screens = sequence ? filmScreensFor(sequence.wide.count) : null;
|
|
12391
|
+
// A Scene's root holds the page for its height less the one screen its stage fills.
|
|
12392
|
+
return sequence && screens !== null ? { sequence, heightVh: Math.round((screens + 1) * 100) } : null;
|
|
12393
|
+
}
|
|
12394
|
+
|
|
12122
12395
|
/**
|
|
12123
12396
|
* The phone shapes of a navigation bar (complex-components plan CC1, §7a + R1; boards 1–3). ONE pure tree
|
|
12124
12397
|
* edit, `planNavShape`, turns a site's header into the shape the author (the Navigation bar's "Phone
|
|
@@ -12795,6 +13068,8 @@ const IMAGE = 'Image';
|
|
|
12795
13068
|
const VIDEO = 'Video';
|
|
12796
13069
|
/** A Video's source prop (media-core `VideoTrait.Source` — not `source`, which names a data source). */
|
|
12797
13070
|
const VIDEO_SOURCE_PROP = 'videoSource';
|
|
13071
|
+
/** A Video's pictures the scroll plays (media-core `VideoTrait.Frames`). */
|
|
13072
|
+
const VIDEO_FRAMES_PROP = 'frames';
|
|
12798
13073
|
const DIALOG = 'Dialog';
|
|
12799
13074
|
const SUBMIT_BUTTON = 'SubmitButton';
|
|
12800
13075
|
const FORM_SUCCESS = 'FormSuccess';
|
|
@@ -13153,6 +13428,15 @@ function composeNode(given, id, repeater, ctx) {
|
|
|
13153
13428
|
setProp(node, VIDEO_SOURCE_PROP, 'file');
|
|
13154
13429
|
setProp(node, 'mode', pn.video);
|
|
13155
13430
|
}
|
|
13431
|
+
// SC6b: a film pattern's Video plays the owner's pictures (the build places the pattern only with a film).
|
|
13432
|
+
if (pn.film) {
|
|
13433
|
+
if (type !== VIDEO)
|
|
13434
|
+
throw new ComposeError(`${id}: "film" belongs on a Video`);
|
|
13435
|
+
const film = filmOfPlan(ctx.plan);
|
|
13436
|
+
if (!film)
|
|
13437
|
+
throw new ComposeError(`${id}: a film's pattern on a plan with no film`);
|
|
13438
|
+
setProp(node, VIDEO_FRAMES_PROP, film.sequence);
|
|
13439
|
+
}
|
|
13156
13440
|
if (pn.ph === PatternPlaceholder.Video) {
|
|
13157
13441
|
setProp(node, 'src', '');
|
|
13158
13442
|
ctx.placeholders.push({ nodeId: id, owner: ctx.owner, kind: PlaceholderKind.Video, text: '' });
|
|
@@ -13598,6 +13882,10 @@ function composePattern(pattern, id, ctx, motion = null) {
|
|
|
13598
13882
|
// A Scene moves by the scroll alone: the look's entrances would fade its pinned stage in on arrival (SC6).
|
|
13599
13883
|
if (motion && !pattern.global && !pattern.scene)
|
|
13600
13884
|
stampEntrances(node, pattern.family, own.entrances ?? [], motion);
|
|
13885
|
+
// SC6b, the density rule: a film's Scene holds the page as long as its pictures stay smooth, and no longer.
|
|
13886
|
+
const film = pattern.film ? filmOfPlan(ctx.plan) : null;
|
|
13887
|
+
if (film)
|
|
13888
|
+
setStyleProps(node, { height: `${film.heightVh}vh` });
|
|
13601
13889
|
node.label = pattern.label;
|
|
13602
13890
|
return node;
|
|
13603
13891
|
}
|
|
@@ -13915,6 +14203,12 @@ function describePlanData(plan) {
|
|
|
13915
14203
|
return plan.pages.map(page => ({ pageKey: page.key, lines: pageLines(page, plan, label) }));
|
|
13916
14204
|
}
|
|
13917
14205
|
|
|
14206
|
+
/** SC6b: a film's description for the showcase — as many pictures as the build prepares; nothing is fetched to compose it. */
|
|
14207
|
+
const SHOWCASE_FILM = {
|
|
14208
|
+
base: 'https://showcase.iox.invalid/film', ext: FrameExtension.Webp,
|
|
14209
|
+
wide: { count: FILM_PREPARED_PICTURES, width: 1600, height: 900 },
|
|
14210
|
+
phone: { count: FILM_PREPARED_PICTURES, width: 1100, height: 619 },
|
|
14211
|
+
};
|
|
13918
14212
|
const ITEM_ROUTE = '/work/:slug';
|
|
13919
14213
|
const LIST_SOURCE = 'projects';
|
|
13920
14214
|
const routeOf = (family) => `/${family}`;
|
|
@@ -13965,7 +14259,7 @@ function showcaseScenes() {
|
|
|
13965
14259
|
/**
|
|
13966
14260
|
* The showcase as Site Plans — as many as it takes for every header and every footer to be composed once, then one per
|
|
13967
14261
|
* Scene pattern (SC6): its home page holds that Scene and nothing else, at How animated Expressive, the only level a
|
|
13968
|
-
* Scene is composed at.
|
|
14262
|
+
* Scene is composed at; the film's Scene with a film (SC6b).
|
|
13969
14263
|
*/
|
|
13970
14264
|
function showcasePlans(input) {
|
|
13971
14265
|
const { headers, footers } = showcaseGlobals();
|
|
@@ -13982,7 +14276,11 @@ function showcasePlans(input) {
|
|
|
13982
14276
|
pages: JSON.parse(JSON.stringify(planPages)),
|
|
13983
14277
|
globals: { [GlobalSlot.Header]: headers[i % headers.length], [GlobalSlot.Footer]: footers[i % footers.length] },
|
|
13984
14278
|
});
|
|
13985
|
-
const scenes = showcaseScenes().map((id, i) =>
|
|
14279
|
+
const scenes = showcaseScenes().map((id, i) => {
|
|
14280
|
+
const scene = plan(i, [{ key: 'home', name: 'Home', route: '/', isHome: true, inNav: false, sections: [sectionFor(id)] }], { ...input.design, animate: SCENE_LEVEL });
|
|
14281
|
+
// A film's Scene plays a film (SC6b): the plan carries one, as the build's would.
|
|
14282
|
+
return SITE_PATTERNS[id].film ? { ...scene, film: { sequence: JSON.parse(JSON.stringify(input.film ?? SHOWCASE_FILM)) } } : scene;
|
|
14283
|
+
});
|
|
13986
14284
|
return [...Array.from({ length: count }, (_, i) => plan(i, pages, input.design)), ...scenes];
|
|
13987
14285
|
}
|
|
13988
14286
|
|
|
@@ -14389,6 +14687,8 @@ const PLAN_WIRE_DERIVED = {
|
|
|
14389
14687
|
sourceTemplate: 'the AI never writes a template plan',
|
|
14390
14688
|
sourceAi: 'this run (the context)',
|
|
14391
14689
|
design: "the owner's pick (the context)",
|
|
14690
|
+
'plan.film': "the owner's film, set by the build (SC6b)",
|
|
14691
|
+
film: "the owner's film, set by the build (SC6b)",
|
|
14392
14692
|
};
|
|
14393
14693
|
const wireText = (spec) => {
|
|
14394
14694
|
const [entry, planKey] = spec.refs[0].split('.');
|
|
@@ -14433,9 +14733,9 @@ const NONE = '';
|
|
|
14433
14733
|
const orNone = (values) => jsonOneOf([NONE, ...values]);
|
|
14434
14734
|
const closedOrText = (values) => (values.length ? jsonOneOf(values) : jsonText());
|
|
14435
14735
|
const shaped = (entry, properties) => jsonShapedObject(PLAN_WIRE_SHAPE[entry], properties, `wire ${entry}`);
|
|
14436
|
-
/** The patterns a page section may use (every non-global one), in library order. */
|
|
14736
|
+
/** The patterns a page section may use (every non-global one but a film's, which `placeFilm` places), in library order. */
|
|
14437
14737
|
function sectionPatternIds() {
|
|
14438
|
-
return Object.entries(SITE_PATTERNS).filter(([, p]) => !p.global).map(([id]) => id);
|
|
14738
|
+
return Object.entries(SITE_PATTERNS).filter(([, p]) => !p.global && !p.film).map(([id]) => id);
|
|
14439
14739
|
}
|
|
14440
14740
|
const sectionPatterns = () => sectionPatternIds().map(id => SITE_PATTERNS[id]);
|
|
14441
14741
|
const globalIds = (position) => Object.entries(SITE_PATTERNS).filter(([, p]) => p.global === position).map(([id]) => id);
|
|
@@ -14828,7 +15128,10 @@ var AiRefusalCode;
|
|
|
14828
15128
|
(function (AiRefusalCode) {
|
|
14829
15129
|
AiRefusalCode["NotInPlan"] = "ai.notInPlan";
|
|
14830
15130
|
AiRefusalCode["OutOfCredits"] = "ai.outOfCredits";
|
|
15131
|
+
/** A step used more than twice its estimate (a loop), or the build its plan's `aiCreditsPerGeneration`. */
|
|
14831
15132
|
AiRefusalCode["CapReached"] = "ai.capReached";
|
|
15133
|
+
/** The build asked for `GENERATION_LIMITS.plans` plans already — build one, change it with a sentence, or start over. */
|
|
15134
|
+
AiRefusalCode["PlansUsed"] = "ai.plansUsed";
|
|
14832
15135
|
AiRefusalCode["NotConnected"] = "ai.notConnected";
|
|
14833
15136
|
AiRefusalCode["KeyInvalid"] = "ai.keyInvalid";
|
|
14834
15137
|
AiRefusalCode["PlanUnknown"] = "ai.planUnknown";
|
|
@@ -14838,6 +15141,7 @@ const AI_REFUSAL_STATUS = {
|
|
|
14838
15141
|
[AiRefusalCode.NotInPlan]: 403,
|
|
14839
15142
|
[AiRefusalCode.OutOfCredits]: 402,
|
|
14840
15143
|
[AiRefusalCode.CapReached]: 402,
|
|
15144
|
+
[AiRefusalCode.PlansUsed]: 409,
|
|
14841
15145
|
[AiRefusalCode.NotConnected]: 409,
|
|
14842
15146
|
[AiRefusalCode.KeyInvalid]: 409,
|
|
14843
15147
|
[AiRefusalCode.PlanUnknown]: 503,
|
|
@@ -14851,11 +15155,14 @@ var AiNextKind;
|
|
|
14851
15155
|
AiNextKind["Settings"] = "settings";
|
|
14852
15156
|
/** Try again later, or with less. */
|
|
14853
15157
|
AiNextKind["Retry"] = "retry";
|
|
15158
|
+
/** Keep the plan there is: build it, or change it with a sentence. */
|
|
15159
|
+
AiNextKind["KeepPlan"] = "keepPlan";
|
|
14854
15160
|
})(AiNextKind || (AiNextKind = {}));
|
|
14855
15161
|
const AI_REFUSAL_NEXT = {
|
|
14856
15162
|
[AiRefusalCode.NotInPlan]: AiNextKind.Contact,
|
|
14857
15163
|
[AiRefusalCode.OutOfCredits]: AiNextKind.Contact,
|
|
14858
15164
|
[AiRefusalCode.CapReached]: AiNextKind.Retry,
|
|
15165
|
+
[AiRefusalCode.PlansUsed]: AiNextKind.KeepPlan,
|
|
14859
15166
|
[AiRefusalCode.NotConnected]: AiNextKind.Settings,
|
|
14860
15167
|
[AiRefusalCode.KeyInvalid]: AiNextKind.Settings,
|
|
14861
15168
|
[AiRefusalCode.PlanUnknown]: AiNextKind.Retry,
|
|
@@ -16515,5 +16822,5 @@ function addStockCredits(footer, credits) {
|
|
|
16515
16822
|
* Generated bundle index. Do not edit.
|
|
16516
16823
|
*/
|
|
16517
16824
|
|
|
16518
|
-
export { ACTIVE_BUILD_STATUSES, AI_REFUSAL_NEXT, AI_REFUSAL_STATUS, AI_STEPS, AI_STEP_LABELS, AI_STEP_NEEDS, AI_STEP_PART_TOKENS, AI_STEP_TYPICAL_TOKENS, AiCallStatus, AiCapability, AiFeature, AiGenerationStage, AiKeyMode, AiLimit, AiNextKind, AiProviderId, AiRefusalCode, AiStep, BAR_ITEMS_MAX, BAR_ITEMS_MIN, BASELINE_ROLES, BUILD_STEPS, BaselineRole, BindScope, BuildNoticeCode, BuildStep, CONTENT_ROLE_MEANINGS, CREDITS_PER_USD, CardBindTarget, CheckSeverity, ComposeError, ComposeIssueCode, ContentFieldControl, ContentFieldType, ContentRole, ContentTypeAction, CreatedKind, DANGLING_LINK_CODES, DEFAULT_PHONE_MENU_BREAKPOINT, DEFAULT_SITE_LOCALE, ENTRANCE_EASING, ENTRANCE_ORIGIN_LOOK, ENTRANCE_TRIGGER, EntrancePart, EntranceSide, FACT_KEYS, FIELD_TYPE_OF_CONTROL, FINAL_GENERATION_STAGES, FINDING_SEVERITY, GRAMMAR_TOO_LARGE_MESSAGE, GlobalSlot, HEBREW_PREFIXES, JSON_SCHEMA_BANNED_KEYWORDS, JsonSchemaShapeError, KeptReason, NAV_PART_LABELS, NAV_SHAPE_COPY, NEUTRAL_STYLE_PROPS, NODE_BASELINES, NO_TOKENS, NavPagesSource, NavRole, NavShape, NavShapeError, PAGE_ARCHETYPES, PLAN_EDITS_ANSWER_SHAPES, PLAN_EDITS_PART_SCHEMA_NAMES, PLAN_EDIT_OP_PART, PLAN_EDIT_SHAPE, PLAN_EDIT_WIRE_KEYS, PLAN_PARTS, PLAN_PART_KEYS, PLAN_WIRE_DERIVED, PLAN_WIRE_PART_SCHEMA_NAMES, PLAN_WIRE_SHAPE, PRICING_PATTERN, PUBLISH_BLOCKING_PLACEHOLDERS, PageDataKind, PathIssueCollector, PatternDirective, PatternGlobalPosition, PatternOpens, PatternPlaceholder, PatternRecipe, PhoneMenuBreakpoint, PlaceholderKind, PlanChangeAction, PlanChangeKind, PlanDataSourceMode, PlanDataSourceType, PlanEditIssueCode, PlanEditOp, PlanEditsOutcome, PlanPart, PlanWireEntry, PlanWireShapeError, PlanWordIssueCode, PreflightRefusalCode, PublishRefusalCode, REQUIRED_CONTENT_ROLES, RelativeOp, SAMPLE_IMAGE_REF, SCENE_LEVEL, SCENE_OTHER_PAGES, SITE_CHECKS, SITE_FACT_LABELS, SITE_HEADER_PATTERN, SITE_LIBRARY, SITE_LOCALES, SITE_NEED_IDS, SITE_PATTERNS, SITE_PLAN_VERSION, SITE_TEMPLATES, SPEC_SITE_ARCHETYPES, SPEC_SITE_COPY_LENGTHS, SPEC_SITE_DENSITY_COPY, SPEC_SITE_FACTS, SPEC_SITE_LIBRARY, SPEC_SITE_LOCALES, SPEC_SITE_NEED_IDS, SPEC_SITE_PATTERNS, SPEC_SITE_PLAN_SHAPE, SPEC_SITE_REQUIRED_ROLES, SPEC_SITE_ROLES, SPEC_SITE_TEMPLATES, STOCK_FAMILIES, STOCK_FAMILY_INTENTS, STOCK_INTENT_ORDER, STOCK_INTENT_SUBJECTS, STOCK_ITEM_ASPECT, STOCK_MIN_KEPT, STOCK_PROVIDER_TERMS, STOCK_SUBJECT_WORDS, STRICT_SCHEMA_BUDGET, STRICT_SCHEMA_LIMITS, STUDIO_TEMPLATE, SiteBuildKind, SiteBuildStatus, SiteCheckId, SiteFindingCode, SiteLocale, SitePlanError, SitePlanIssueCode, SitePlanSourceKind, SiteTemplateError, SiteTemplateId, StepState, StockIntent, StockOrientation, StockProviderId, StockReviewFlag, StockReviewVerdict, StockSlotKind, StockSubject, addBarItem, addStockCredits, aiStepParts, applyOwnPhotoGalleries, applyPlanEdits, applyStockItemPhotos, applyStockPhotos, archetypeIssues, aspectRatioOf, assertStyleSlots, assertValidSitePlan, auditSite, barIconForRoute, blocksPublish, buildKeys, buildStepFacts, builtHomePageId, composeNavHeader, composeSection, composeSite, contentTypePreviewFields, contentTypeToWire, copyLengthOf, costUsd, createSerializedNode, creditsOfUsd, dataSourceToWire, derivedDataSources, describePlanData, describeShapeKey, entranceAction, entranceInteraction, estimateStepCredits, expandPlanWire, expandWireContentType, expandWireDataSource, expandWireEdit, expandWireField, expandWirePage, expandWireSection, failedBuildStep, fieldToWire, findNavRoot, isActiveBuild, isNonEmptyString, isPlainObject, isRtlLocale, jsonAnyOf, jsonBoolean, jsonClosedObject, jsonInteger, jsonListOf, jsonOneOf, jsonSchemaKeywords, jsonSchemaObjects, jsonShapedObject, jsonText, modelCanDo, moveBarItem, navPages, navShapeBreakpoint, navShapeOf, nextSourceOf, nodeBindPaths, orientationOfRatio, pageToWire, parsePatternPath, parseSampleImageRef, pathAt, patternById, patternHasForm, patternLinkSlots, patternListGap, patternManifest, patternNeedsBinding, patternNodes, patternOptionalParts, patternRoleNeeds, patternScopes, patternSlotBudgets, patternSlots, patternTakesBinding, phoneMenuPages, planEditOps, planEditToWire, planEditWireGaps, planEditWireKeys, planEditWireOps, planEditWireShape, planEditsFromWire, planEditsJsonSchema, planEditsToWire, planEntrances, planFromTemplate, planNavShape, planOwnPhotos, planPartOfPath, planPartToWire, planStockPhotos, planToWire, planWireGaps, planWirePartJsonSchema, planWirePartShape, planWordIssues, publishRefusal, publishVerdict, recipeListBinds, releasedLayoutDefaults, removeBarItem, requiredAcknowledgements, requiredShapeKeys, roleField, routeMatches, routeParams, sampleImageRef, scoreStockPhoto, sectionEntrances, sectionPatternIds, sectionToWire, setStyleProps, shapeKeys, showcaseGlobals, showcasePages, showcasePlans, showcaseScenes, siteNavPages, slotBudget, stockCopyKey, stockCreditLine, stockCreditLines, stockCreditNode, stockCreditNodeId, stockFits, stockGroupOf, stockItemSlots, stockKept, stockPhotoRatio, stockPhotoSubject, stockPhotoUsable, stockPhotoWords, stockSlots, stockWord, stockWords, strictSchemaComplexity, strictSchemaRefusal, typicalStepTokens, validatePlanEdits, validateSitePlan, walkSerialized, wireContentTypeJsonSchema, wireDataSourceJsonSchema, wireFieldJsonSchema, wirePageJsonSchema, wireSectionJsonSchema, withDerivedSources, wordPattern, writtenTexts };
|
|
16825
|
+
export { ACTIVE_BUILD_STATUSES, AI_REFUSAL_NEXT, AI_REFUSAL_STATUS, AI_STEPS, AI_STEP_LABELS, AI_STEP_NEEDS, AI_STEP_PART_TOKENS, AI_STEP_TYPICAL_TOKENS, AiCallStatus, AiCapability, AiFeature, AiGenerationStage, AiKeyMode, AiLimit, AiNextKind, AiProviderId, AiRefusalCode, AiStep, BAR_ITEMS_MAX, BAR_ITEMS_MIN, BASELINE_ROLES, BUILD_STEPS, BaselineRole, BindScope, BuildNoticeCode, BuildStep, CONTENT_ROLE_MEANINGS, CREDITS_PER_USD, CardBindTarget, CheckSeverity, ComposeError, ComposeIssueCode, ContentFieldControl, ContentFieldType, ContentRole, ContentTypeAction, CreatedKind, DANGLING_LINK_CODES, DEFAULT_PHONE_MENU_BREAKPOINT, DEFAULT_SITE_LOCALE, ENTRANCE_EASING, ENTRANCE_ORIGIN_LOOK, ENTRANCE_TRIGGER, EntrancePart, EntranceSide, FACT_KEYS, FIELD_TYPE_OF_CONTROL, FILM_PATTERN, FINAL_GENERATION_STAGES, FINDING_SEVERITY, FilmUnplaced, GRAMMAR_TOO_LARGE_MESSAGE, GlobalSlot, HEBREW_PREFIXES, JSON_SCHEMA_BANNED_KEYWORDS, JsonSchemaShapeError, KeptReason, NAV_PART_LABELS, NAV_SHAPE_COPY, NEUTRAL_STYLE_PROPS, NODE_BASELINES, NO_TOKENS, NavPagesSource, NavRole, NavShape, NavShapeError, PAGE_ARCHETYPES, PLAN_EDITS_ANSWER_SHAPES, PLAN_EDITS_PART_SCHEMA_NAMES, PLAN_EDIT_OP_PART, PLAN_EDIT_SHAPE, PLAN_EDIT_WIRE_KEYS, PLAN_PARTS, PLAN_PART_KEYS, PLAN_WIRE_DERIVED, PLAN_WIRE_PART_SCHEMA_NAMES, PLAN_WIRE_SHAPE, PRICING_PATTERN, PUBLISH_BLOCKING_PLACEHOLDERS, PageDataKind, PathIssueCollector, PatternDirective, PatternGlobalPosition, PatternOpens, PatternPlaceholder, PatternRecipe, PhoneMenuBreakpoint, PlaceholderKind, PlanChangeAction, PlanChangeKind, PlanDataSourceMode, PlanDataSourceType, PlanEditIssueCode, PlanEditOp, PlanEditsOutcome, PlanPart, PlanWireEntry, PlanWireShapeError, PlanWordIssueCode, PreflightRefusalCode, PublishRefusalCode, REQUIRED_CONTENT_ROLES, RelativeOp, SAMPLE_IMAGE_REF, SCENE_LEVEL, SCENE_OTHER_PAGES, SHOWCASE_FILM, SITE_CHECKS, SITE_FACT_LABELS, SITE_HEADER_PATTERN, SITE_LIBRARY, SITE_LOCALES, SITE_NEED_IDS, SITE_PATTERNS, SITE_PLAN_VERSION, SITE_TEMPLATES, SPEC_SITE_ARCHETYPES, SPEC_SITE_COPY_LENGTHS, SPEC_SITE_DENSITY_COPY, SPEC_SITE_FACTS, SPEC_SITE_LIBRARY, SPEC_SITE_LOCALES, SPEC_SITE_NEED_IDS, SPEC_SITE_PATTERNS, SPEC_SITE_PLAN_SHAPE, SPEC_SITE_REQUIRED_ROLES, SPEC_SITE_ROLES, SPEC_SITE_TEMPLATES, STOCK_FAMILIES, STOCK_FAMILY_INTENTS, STOCK_INTENT_ORDER, STOCK_INTENT_SUBJECTS, STOCK_ITEM_ASPECT, STOCK_MIN_KEPT, STOCK_PROVIDER_TERMS, STOCK_SUBJECT_WORDS, STRICT_SCHEMA_BUDGET, STRICT_SCHEMA_LIMITS, STUDIO_TEMPLATE, SiteBuildKind, SiteBuildStatus, SiteCheckId, SiteFindingCode, SiteLocale, SitePlanError, SitePlanIssueCode, SitePlanSourceKind, SiteTemplateError, SiteTemplateId, StepState, StockIntent, StockOrientation, StockProviderId, StockReviewFlag, StockReviewVerdict, StockSlotKind, StockSubject, addBarItem, addStockCredits, aiStepParts, applyOwnPhotoGalleries, applyPlanEdits, applyStockItemPhotos, applyStockPhotos, archetypeIssues, aspectRatioOf, assertStyleSlots, assertValidSitePlan, auditSite, barIconForRoute, blocksPublish, buildKeys, buildStepFacts, builtHomePageId, composeNavHeader, composeSection, composeSite, contentTypePreviewFields, contentTypeToWire, copyLengthOf, costUsd, createSerializedNode, creditsOfUsd, dataSourceToWire, derivedDataSources, describePlanData, describeShapeKey, entranceAction, entranceInteraction, estimateStepCredits, expandPlanWire, expandWireContentType, expandWireDataSource, expandWireEdit, expandWireField, expandWirePage, expandWireSection, failedBuildStep, fieldToWire, filmOfPlan, filmPlacement, findNavRoot, isActiveBuild, isNonEmptyString, isPlainObject, isRtlLocale, jsonAnyOf, jsonBoolean, jsonClosedObject, jsonInteger, jsonListOf, jsonOneOf, jsonSchemaKeywords, jsonSchemaObjects, jsonShapedObject, jsonText, modelCanDo, moveBarItem, navPages, navShapeBreakpoint, navShapeOf, nextSourceOf, nodeBindPaths, orientationOfRatio, pageToWire, parsePatternPath, parseSampleImageRef, pathAt, patternById, patternHasForm, patternLinkSlots, patternListGap, patternManifest, patternNeedsBinding, patternNodes, patternOptionalParts, patternRoleNeeds, patternScopes, patternSlotBudgets, patternSlots, patternTakesBinding, phoneMenuPages, placeFilm, planEditOps, planEditToWire, planEditWireGaps, planEditWireKeys, planEditWireOps, planEditWireShape, planEditsFromWire, planEditsJsonSchema, planEditsToWire, planEntrances, planFromTemplate, planNavShape, planOwnPhotos, planPartOfPath, planPartToWire, planStockPhotos, planToWire, planWireGaps, planWirePartJsonSchema, planWirePartShape, planWordIssues, publishRefusal, publishVerdict, recipeListBinds, releasedLayoutDefaults, removeBarItem, requiredAcknowledgements, requiredShapeKeys, roleField, routeMatches, routeParams, sampleImageRef, scoreStockPhoto, sectionEntrances, sectionPatternIds, sectionToWire, setStyleProps, shapeKeys, showcaseGlobals, showcasePages, showcasePlans, showcaseScenes, siteNavPages, slotBudget, stockCopyKey, stockCreditLine, stockCreditLines, stockCreditNode, stockCreditNodeId, stockFits, stockGroupOf, stockItemSlots, stockKept, stockPhotoRatio, stockPhotoSubject, stockPhotoUsable, stockPhotoWords, stockSlots, stockWord, stockWords, strictSchemaComplexity, strictSchemaRefusal, typicalStepTokens, validatePlanEdits, validateSitePlan, walkSerialized, wireContentTypeJsonSchema, wireDataSourceJsonSchema, wireFieldJsonSchema, wirePageJsonSchema, wireSectionJsonSchema, withDerivedSources, wordPattern, writtenTexts };
|
|
16519
16826
|
//# sourceMappingURL=vectoriox-iox-ui-generation-core.mjs.map
|