@vectoriox/iox-builder 11.10.1 → 11.11.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.
|
@@ -32,7 +32,7 @@ import Lenis from 'lenis';
|
|
|
32
32
|
import Moveable from 'moveable';
|
|
33
33
|
import Selecto from 'selecto';
|
|
34
34
|
import * as i18 from 'primeng/api';
|
|
35
|
-
import { planVideo, VideoSource, VIDEO_PROVIDER_LABEL, VideoTrait, VideoMode } from '@vectoriox/iox-ui/media-core';
|
|
35
|
+
import { planVideo, VideoKind, VideoSource, VIDEO_PROVIDER_LABEL, VideoTrait, VideoMode } from '@vectoriox/iox-ui/media-core';
|
|
36
36
|
import { ConsentCategory } from '@vectoriox/iox-ui/consent-core';
|
|
37
37
|
|
|
38
38
|
/**
|
|
@@ -105,6 +105,7 @@ const BUILDER_CHROME_EN = Object.freeze({
|
|
|
105
105
|
'builder.chrome.kindSlider': 'Slider',
|
|
106
106
|
'builder.chrome.kindVideo': 'Video',
|
|
107
107
|
'builder.chrome.videoPosterOnly': 'poster only',
|
|
108
|
+
'builder.chrome.videoFrames': 'played by the scroll',
|
|
108
109
|
'builder.chrome.videoFile': 'Uploaded file',
|
|
109
110
|
'builder.chrome.refuseLockedSliderPartMove': 'This control belongs to its slider — it can’t be moved out.',
|
|
110
111
|
'builder.chrome.refuseLockedSliderPause': 'The pause button stays while Autoplay is on — moving content must be pausable. Turn Autoplay off in the slider’s Bindings to remove it.',
|
|
@@ -833,6 +834,19 @@ function findParentOf(roots, target) {
|
|
|
833
834
|
function nodeAncestorPathInEither(layout, globalElements, target) {
|
|
834
835
|
return nodeAncestorPath(layout, target) ?? nodeAncestorPath(globalElements, target);
|
|
835
836
|
}
|
|
837
|
+
/** The node with this id in the page or its globals: what a selection held once the tree was swapped for a snapshot. */
|
|
838
|
+
function findNodeByIdInEither(layout, globals, id) {
|
|
839
|
+
if (!id)
|
|
840
|
+
return null;
|
|
841
|
+
const stack = [...(layout ?? []), ...(globals ?? [])];
|
|
842
|
+
while (stack.length) {
|
|
843
|
+
const node = stack.pop();
|
|
844
|
+
if (node.id === id)
|
|
845
|
+
return node;
|
|
846
|
+
stack.push(...(node.children ?? []));
|
|
847
|
+
}
|
|
848
|
+
return null;
|
|
849
|
+
}
|
|
836
850
|
|
|
837
851
|
/**
|
|
838
852
|
* A tab and its panel go TOGETHER on the canvas (CC4a — composite T18): deleting either deletes both ("Delete tab and
|
|
@@ -5347,6 +5361,18 @@ class SceneCanvasService {
|
|
|
5347
5361
|
if (el)
|
|
5348
5362
|
this.driver?.reread(el);
|
|
5349
5363
|
}
|
|
5364
|
+
/**
|
|
5365
|
+
* A value a layer's own component draws changed (a Video's pictures): its instance takes it now. Its Scene reads the new
|
|
5366
|
+
* attribute when it lands, with no re-render of the page.
|
|
5367
|
+
*/
|
|
5368
|
+
setLayerInput(node, name, value) {
|
|
5369
|
+
const ref = this.overlay?.getNodeRef(node) ?? (node.id ? this.overlay?.findRefByNodeId(node.id)?.ref : undefined);
|
|
5370
|
+
const component = ref?.componentRef;
|
|
5371
|
+
if (!component?.instance)
|
|
5372
|
+
return;
|
|
5373
|
+
component.instance[name] = value;
|
|
5374
|
+
component.changeDetectorRef.detectChanges();
|
|
5375
|
+
}
|
|
5350
5376
|
ngOnDestroy() {
|
|
5351
5377
|
this.driver?.destroy();
|
|
5352
5378
|
this.driver = null;
|
|
@@ -7841,6 +7867,7 @@ const VIDEO_TYPE = 'Video';
|
|
|
7841
7867
|
const VIDEO_KIND_KEY = 'builder.chrome.kindVideo';
|
|
7842
7868
|
const VIDEO_POSTER_ONLY_KEY = 'builder.chrome.videoPosterOnly';
|
|
7843
7869
|
const VIDEO_FILE_KEY = 'builder.chrome.videoFile';
|
|
7870
|
+
const VIDEO_FRAMES_KEY = 'builder.chrome.videoFrames';
|
|
7844
7871
|
/** The parts that offer "Add item" on the selection toolbar (board 3: the "Add slide" pattern). */
|
|
7845
7872
|
const ADD_ITEM_ROLES = new Set([
|
|
7846
7873
|
AccordionRole.Accordion, AccordionRole.Item, AccordionRole.Trigger, AccordionRole.Panel,
|
|
@@ -8100,6 +8127,9 @@ class OverlayComponent {
|
|
|
8100
8127
|
}
|
|
8101
8128
|
videoBadge(node) {
|
|
8102
8129
|
const plan = planVideo(node, null);
|
|
8130
|
+
// Unlike every other Video, the canvas really plays this one.
|
|
8131
|
+
if (plan.kind === VideoKind.Frames)
|
|
8132
|
+
return `${this.builderLabels(VIDEO_KIND_KEY, BUILDER_CHROME_EN[VIDEO_KIND_KEY])} · ${this.builderLabels(VIDEO_FRAMES_KEY, BUILDER_CHROME_EN[VIDEO_FRAMES_KEY])}`;
|
|
8103
8133
|
const where = plan.source === VideoSource.File
|
|
8104
8134
|
? this.builderLabels(VIDEO_FILE_KEY, BUILDER_CHROME_EN[VIDEO_FILE_KEY])
|
|
8105
8135
|
: VIDEO_PROVIDER_LABEL[plan.source];
|
|
@@ -9795,6 +9825,8 @@ class BuilderComponent {
|
|
|
9795
9825
|
setTimeout(() => this.updatePreviewVh());
|
|
9796
9826
|
}
|
|
9797
9827
|
// A newly loaded page: the bar's dots must reflect its overrides before anything is selected.
|
|
9828
|
+
if (changes['layout'] && !changes['layout'].firstChange)
|
|
9829
|
+
this.followSelectionToNewTree();
|
|
9798
9830
|
if (changes['layout'] || changes['globalElements']) {
|
|
9799
9831
|
this.refreshBreakpointCounts();
|
|
9800
9832
|
this.refreshStructureFindings();
|
|
@@ -10224,6 +10256,30 @@ class BuilderComponent {
|
|
|
10224
10256
|
this.cdr.markForCheck();
|
|
10225
10257
|
}));
|
|
10226
10258
|
}
|
|
10259
|
+
/**
|
|
10260
|
+
* Undo and redo swap the layout for a snapshot made of NEW objects. A selection left on the old node keeps the panels
|
|
10261
|
+
* editing something no longer on the page, so every edit after a Cmd+Z was silently lost on Save. The selection moves
|
|
10262
|
+
* to the same element in the new tree, or goes when that element is gone. Next tick: this runs inside a binding pass.
|
|
10263
|
+
*/
|
|
10264
|
+
followSelectionToNewTree() {
|
|
10265
|
+
const held = this.selectedItem;
|
|
10266
|
+
if (!held)
|
|
10267
|
+
return;
|
|
10268
|
+
setTimeout(() => {
|
|
10269
|
+
if (this.selectedItem !== held)
|
|
10270
|
+
return;
|
|
10271
|
+
const current = findNodeByIdInEither(this.layout, this.globalElements, held.id);
|
|
10272
|
+
if (current === held)
|
|
10273
|
+
return;
|
|
10274
|
+
if (current) {
|
|
10275
|
+
this.reselectMoved(current);
|
|
10276
|
+
return;
|
|
10277
|
+
}
|
|
10278
|
+
this.selectedItem = null;
|
|
10279
|
+
this.overlayService.clearSelect();
|
|
10280
|
+
this.cdr.markForCheck();
|
|
10281
|
+
});
|
|
10282
|
+
}
|
|
10227
10283
|
_selectAfterDrop(node) {
|
|
10228
10284
|
// Wait one tick for Angular to render the new component and register it
|
|
10229
10285
|
// in the overlay before attempting to select it.
|
|
@@ -14035,6 +14091,8 @@ class VideoConfig extends ComponentConfig {
|
|
|
14035
14091
|
], VideoSource.YouTube),
|
|
14036
14092
|
new TraitConfig(VideoTrait.Src, 'Video address', TraitInputType.Media, { mode: 'compact' }, ''),
|
|
14037
14093
|
new TraitConfig(VideoTrait.Poster, 'Poster', TraitInputType.Media, { mode: 'compact' }, ''),
|
|
14094
|
+
// Pictures the scroll plays (SC4): the Scene group writes it, so the Bindings panel lists no control for it.
|
|
14095
|
+
new TraitConfig(VideoTrait.Frames, 'Frames', TraitInputType.Text, undefined, null),
|
|
14038
14096
|
// ── Behaviour ─────────────────────────────────────────────────
|
|
14039
14097
|
new TraitConfig('__behaviourLabel', 'Behaviour', TraitInputType.SectionLabel),
|
|
14040
14098
|
new TraitConfig(VideoTrait.Mode, 'Mode', TraitInputType.Select, [
|
|
@@ -14729,5 +14787,5 @@ class BuilderSpacerComponentConfig extends ComponentConfig {
|
|
|
14729
14787
|
* Generated bundle index. Do not edit.
|
|
14730
14788
|
*/
|
|
14731
14789
|
|
|
14732
|
-
export { ACTION_TYPE_OPTIONS, AuditCode, AuditPanelComponent, AuditSeverity, BODY_CRUMB_LABEL, BOUND_ICON, BREAKPOINT_PRESENTATION, BUILDER_CANVAS_CONTAINER, BUILDER_CHROME_EN, BUILDER_FONT_LINK_ATTR, BUILDER_TOKEN_SCOPE_CLASS, BackgroundGroupStyleConfig, BorderGroupStyleConfig, BreadcrumbBarComponent, BuilderButtonBlockComponent, BuilderButtonComponentConfig, BuilderClipboardService, BuilderComponent, BuilderContainerComponent, BuilderContainerComponentConfig, BuilderDataSourceService, BuilderDialogComponent, BuilderDividerComponentConfig, BuilderHeadingComponentConfig, BuilderHistoryService, BuilderIconComponentConfig, BuilderImageComponentConfig, BuilderLinkComponentConfig, BuilderLinkedContainerComponent, BuilderLinkedContainerConfig, BuilderListComponentConfig, BuilderListItemComponentConfig, BuilderMode, BuilderRepeaterComponent, BuilderSpacerComponentConfig, BusinessSpecimenView, ButtonBlockComponentConfig, CANVAS_EMPTY_IMAGE_LABEL_EN, CANVAS_EMPTY_IMAGE_LABEL_KEY, CANVAS_ROOT_RESET_CSS, COMPOSITE_PRESETS, CanvasDesignStateService, CanvasShowState, CardComponentConfig, ChildLayoutGroupStyleConfig, ComponentConfig, ComponentRegistryService, CompositeCanvasService, CompositePaletteGroup, CompositePresetId, DEFAULT_ESSENTIAL_TRAITS, DESCRIPTOR_MAX_LENGTH, DRAG_HANDLE_ATTR, DROP_REFUSED_CLASS, DataSourceRegistryService, DataSourceType, DialogComponentConfig, DimensionsGroupStyleConfig, DragEngineService, EASING_OPTIONS, EDITOR_CHROME_ATTRIBUTE, ESSENTIAL_TRAITS_BY_TYPE, EffectsGroupStyleConfig, FIELD_KIND_PRESETS, FIELD_PARTS, FORM_STATE_BLOCK_TYPES, FORM_TYPE, FieldComponentConfig, FieldGroupComponentConfig, FormComponentConfig, FormErrorComponentConfig, FormStateService, FormSuccessComponentConfig, GLOBALS_AFTER_CLASS, GalleryConfig, GlobalCanvasLayer, GroupStyleConfig, HIDDEN_AT_REST_LABEL_KEY, HIDDEN_AT_REST_ROLES, HIDDEN_AT_REST_TYPES, INSERT_REFUSAL_LABEL_KEYS, INTERACTION_STATES, INVERSE_ACTION, IOX_BUILDER_CANVAS, IOX_BUILDER_LABELS, IOX_CONTENT_TYPE_LABELS, IOX_DATA_SOURCE_ENDPOINTS, InsertRefusal, InteractionEngineService, InteractionPresetRegistryService, IoxBuilderModule, IoxDraggableDirective, IoxDropzoneDirective, LAYOUT_PRESETS, LayerTreeComponent, LayoutGroupStyleConfig, ListGroupStyleConfig, NodeAction, OverlayComponent, OverlayService, PAGE_TRANSITION_EASING_OPTIONS, PALETTE_PRESET_DEFS, PanelChildComponent, PanelComponent, PanelEventService, PanelEventTypes, PanelTypes, PhoneMenuOpenerAction, PositionGroupStyleConfig, PresetRegistryService, RELATIONAL_STATES, RELATIONAL_STATE_BASE, REPEATER_SOURCE_PROP, REPEATER_TYPE, REVEALED_WHILE_SELECTED_ROLES, ROOT_ESCAPE_PX, ROUTE_ANIMATION_OPTIONS, RenderDirective, RepeaterComponentConfig, RootZone, SCREEN_WIDTH_OPTIONS, SILENT_REFUSALS, STRUCTURAL_STATES, SUPPORTED_STATES, SceneCanvasService, SectionComponent, SectionComponentConfig, SelectionReveal, SizeGroupStyleConfig, SliderContainerComponent, SliderContainerConfig, SliderSlideComponent, SliderSlideConfig, SpacingGroupStyleConfig, StructureFix, StyleCategory, StyleRegistryService, TraitConfig as StyleTraitConfig, SubmitButtonComponentConfig, SymbolRegistryService, TARGETED_STATES, TARGETED_STATE_BASE, TOGGLE_PART_ROLES, TRIGGER_OPTIONS, TextBlockComponentConfig, ToolbarAction, ToolbarComponent, TraitConfig, TraitInputType, TypographyGroupStyleConfig, UNITS_ALL, UNITS_DEG, UNITS_FIXED, UNITS_NO_VW, VALIDATION_STATES, VALIDATION_STATE_CLASS, VideoConfig, ViewportService, ZOOM_OPTIONS, arrayItemSchemaFields, arraySchemaFields, auditNodes, bindingLabel, bindingLabels, buildBusinessSpecimen, buildCompositePreset, buildConsentPreset, buildElementStyleSpecimen, buildFieldKindPreset, buildFlavorSpecimen, buildFormPreset, buildFullStyleTraits, buildLayoutPreset, buildPalettePreset, buildPresetStyleTraits, builderCompositeFactory, canFluidise, canvasEmptyImageLabel, canvasHostDisplay, collapseColumnsProps, columnCountOf, compositeStructureFindings, defaultBuilderLabels, defaultPageSettings, deleteTabPair, displayTriggerOf, dropChildren, dropTargetLabel, duplicateTabPair, escapesRoot, essentialTraitsFor, findNodeLocation, findParentOf, flattenLayerTree, flattenSchemaFields, fluidiseProps, generateNodeId, globalCanvasLayer, hiddenAtBase, hiddenUntilItemOn, inPhoneMenuContext, insertRefusal, insertRefusalLabel, interactionTargets, isHiddenAt, isHiddenAtRest, isPhoneMenuOpener, isPinnedGlobal, isSpecimen, itemsOnAtRest, markSpecimen, matchesControlSearch, nearestFormNode, neverShown, nodeAncestorPath, nodeAncestorPathInEither, nodeDescriptor, nodeStyleMap, overlayGlobals, pathToNode, phoneMenuOf, phoneMenuShowsAt, refreshSubtree, regenerateNodeIds, removalRefusal, reorderProps, repeaterSourceAlias, repeaterSubLabel, resolveInsertTarget, resolveTraitControllerType, resolveTraitOptions, retypeNode, rootEscapeBand, rootZone, selectionRevealOf, setOverlayPreview, setStyleTrait, setTrait, shortDescriptor, shownBeforeControl, sourceContentType, sourceTypeLabel, stackChildrenProps, summarise, syncEmptyImagePlaceholder, syncNodeDesign, syncNodeInputs, tabPairLabel, tabsRootForPart, textNode, upsertNodeStyles, visibilityProps, walkNodes, wrapNode };
|
|
14790
|
+
export { ACTION_TYPE_OPTIONS, AuditCode, AuditPanelComponent, AuditSeverity, BODY_CRUMB_LABEL, BOUND_ICON, BREAKPOINT_PRESENTATION, BUILDER_CANVAS_CONTAINER, BUILDER_CHROME_EN, BUILDER_FONT_LINK_ATTR, BUILDER_TOKEN_SCOPE_CLASS, BackgroundGroupStyleConfig, BorderGroupStyleConfig, BreadcrumbBarComponent, BuilderButtonBlockComponent, BuilderButtonComponentConfig, BuilderClipboardService, BuilderComponent, BuilderContainerComponent, BuilderContainerComponentConfig, BuilderDataSourceService, BuilderDialogComponent, BuilderDividerComponentConfig, BuilderHeadingComponentConfig, BuilderHistoryService, BuilderIconComponentConfig, BuilderImageComponentConfig, BuilderLinkComponentConfig, BuilderLinkedContainerComponent, BuilderLinkedContainerConfig, BuilderListComponentConfig, BuilderListItemComponentConfig, BuilderMode, BuilderRepeaterComponent, BuilderSpacerComponentConfig, BusinessSpecimenView, ButtonBlockComponentConfig, CANVAS_EMPTY_IMAGE_LABEL_EN, CANVAS_EMPTY_IMAGE_LABEL_KEY, CANVAS_ROOT_RESET_CSS, COMPOSITE_PRESETS, CanvasDesignStateService, CanvasShowState, CardComponentConfig, ChildLayoutGroupStyleConfig, ComponentConfig, ComponentRegistryService, CompositeCanvasService, CompositePaletteGroup, CompositePresetId, DEFAULT_ESSENTIAL_TRAITS, DESCRIPTOR_MAX_LENGTH, DRAG_HANDLE_ATTR, DROP_REFUSED_CLASS, DataSourceRegistryService, DataSourceType, DialogComponentConfig, DimensionsGroupStyleConfig, DragEngineService, EASING_OPTIONS, EDITOR_CHROME_ATTRIBUTE, ESSENTIAL_TRAITS_BY_TYPE, EffectsGroupStyleConfig, FIELD_KIND_PRESETS, FIELD_PARTS, FORM_STATE_BLOCK_TYPES, FORM_TYPE, FieldComponentConfig, FieldGroupComponentConfig, FormComponentConfig, FormErrorComponentConfig, FormStateService, FormSuccessComponentConfig, GLOBALS_AFTER_CLASS, GalleryConfig, GlobalCanvasLayer, GroupStyleConfig, HIDDEN_AT_REST_LABEL_KEY, HIDDEN_AT_REST_ROLES, HIDDEN_AT_REST_TYPES, INSERT_REFUSAL_LABEL_KEYS, INTERACTION_STATES, INVERSE_ACTION, IOX_BUILDER_CANVAS, IOX_BUILDER_LABELS, IOX_CONTENT_TYPE_LABELS, IOX_DATA_SOURCE_ENDPOINTS, InsertRefusal, InteractionEngineService, InteractionPresetRegistryService, IoxBuilderModule, IoxDraggableDirective, IoxDropzoneDirective, LAYOUT_PRESETS, LayerTreeComponent, LayoutGroupStyleConfig, ListGroupStyleConfig, NodeAction, OverlayComponent, OverlayService, PAGE_TRANSITION_EASING_OPTIONS, PALETTE_PRESET_DEFS, PanelChildComponent, PanelComponent, PanelEventService, PanelEventTypes, PanelTypes, PhoneMenuOpenerAction, PositionGroupStyleConfig, PresetRegistryService, RELATIONAL_STATES, RELATIONAL_STATE_BASE, REPEATER_SOURCE_PROP, REPEATER_TYPE, REVEALED_WHILE_SELECTED_ROLES, ROOT_ESCAPE_PX, ROUTE_ANIMATION_OPTIONS, RenderDirective, RepeaterComponentConfig, RootZone, SCREEN_WIDTH_OPTIONS, SILENT_REFUSALS, STRUCTURAL_STATES, SUPPORTED_STATES, SceneCanvasService, SectionComponent, SectionComponentConfig, SelectionReveal, SizeGroupStyleConfig, SliderContainerComponent, SliderContainerConfig, SliderSlideComponent, SliderSlideConfig, SpacingGroupStyleConfig, StructureFix, StyleCategory, StyleRegistryService, TraitConfig as StyleTraitConfig, SubmitButtonComponentConfig, SymbolRegistryService, TARGETED_STATES, TARGETED_STATE_BASE, TOGGLE_PART_ROLES, TRIGGER_OPTIONS, TextBlockComponentConfig, ToolbarAction, ToolbarComponent, TraitConfig, TraitInputType, TypographyGroupStyleConfig, UNITS_ALL, UNITS_DEG, UNITS_FIXED, UNITS_NO_VW, VALIDATION_STATES, VALIDATION_STATE_CLASS, VideoConfig, ViewportService, ZOOM_OPTIONS, arrayItemSchemaFields, arraySchemaFields, auditNodes, bindingLabel, bindingLabels, buildBusinessSpecimen, buildCompositePreset, buildConsentPreset, buildElementStyleSpecimen, buildFieldKindPreset, buildFlavorSpecimen, buildFormPreset, buildFullStyleTraits, buildLayoutPreset, buildPalettePreset, buildPresetStyleTraits, builderCompositeFactory, canFluidise, canvasEmptyImageLabel, canvasHostDisplay, collapseColumnsProps, columnCountOf, compositeStructureFindings, defaultBuilderLabels, defaultPageSettings, deleteTabPair, displayTriggerOf, dropChildren, dropTargetLabel, duplicateTabPair, escapesRoot, essentialTraitsFor, findNodeByIdInEither, findNodeLocation, findParentOf, flattenLayerTree, flattenSchemaFields, fluidiseProps, generateNodeId, globalCanvasLayer, hiddenAtBase, hiddenUntilItemOn, inPhoneMenuContext, insertRefusal, insertRefusalLabel, interactionTargets, isHiddenAt, isHiddenAtRest, isPhoneMenuOpener, isPinnedGlobal, isSpecimen, itemsOnAtRest, markSpecimen, matchesControlSearch, nearestFormNode, neverShown, nodeAncestorPath, nodeAncestorPathInEither, nodeDescriptor, nodeStyleMap, overlayGlobals, pathToNode, phoneMenuOf, phoneMenuShowsAt, refreshSubtree, regenerateNodeIds, removalRefusal, reorderProps, repeaterSourceAlias, repeaterSubLabel, resolveInsertTarget, resolveTraitControllerType, resolveTraitOptions, retypeNode, rootEscapeBand, rootZone, selectionRevealOf, setOverlayPreview, setStyleTrait, setTrait, shortDescriptor, shownBeforeControl, sourceContentType, sourceTypeLabel, stackChildrenProps, summarise, syncEmptyImagePlaceholder, syncNodeDesign, syncNodeInputs, tabPairLabel, tabsRootForPart, textNode, upsertNodeStyles, visibilityProps, walkNodes, wrapNode };
|
|
14733
14791
|
//# sourceMappingURL=vectoriox-iox-builder.mjs.map
|