@vectoriox/iox-ui 4.10.0 → 4.12.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vectoriox-iox-ui.mjs","sources":["../../../projects/iox-ui/src/lib/view-position/view-position.directive.ts","../../../projects/iox-ui/src/lib/view-position/view-position.module.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos-animations.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos.service.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos-container.component.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos.directive.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos.module.ts","../../../projects/iox-ui/src/lib/services/page-scroll.provider.ts","../../../projects/iox-ui/src/lib/iox-page/page-component/page-component.component.ts","../../../projects/iox-ui/src/lib/iox-page/page-component/page-component.component.html","../../../projects/iox-ui/src/lib/iox-page/iox-page.module.ts","../../../projects/iox-ui/src/lib/iox-ui.module.ts","../../../projects/iox-ui/src/lib/services/component-instance-registry.service.ts","../../../projects/iox-ui/src/lib/iox-cms-client-infra/components/privacy/privacy-modal.service.ts","../../../projects/iox-ui/src/lib/iox-cms-client-infra/services/consent.service.ts","../../../projects/iox-ui/src/lib/iox-cms-client-infra/components/privacy/privacy-modal.component.ts","../../../projects/iox-ui/src/lib/iox-cms-client-infra/components/privacy/privacy-modal.component.html","../../../projects/iox-ui/src/lib/iox-cms-client-infra/services/web-settings.service.ts","../../../projects/iox-ui/src/lib/iox-cms-client-infra/services/content.service.ts","../../../projects/iox-ui/src/lib/iox-cms-client-infra/cms-client-infra.module.ts","../../../projects/iox-ui/src/lib/iox-cms-client-infra/services/analytics.service.ts","../../../projects/iox-ui/src/lib/builder-components/builder-tokens.ts","../../../projects/iox-ui/src/lib/builder-components/image/image.component.ts","../../../projects/iox-ui/src/lib/builder-components/spacer/spacer.component.ts","../../../projects/iox-ui/src/lib/builder-components/card/card.component.ts","../../../projects/iox-ui/src/lib/builder-components/divider/divider.component.ts","../../../projects/iox-ui/src/lib/builder-components/icon/icon.component.ts","../../../projects/iox-ui/src/lib/builder-components/link/link.component.ts","../../../projects/iox-ui/src/lib/builder-components/button/button.component.ts","../../../projects/iox-ui/src/lib/builder-components/heading/heading.component.ts","../../../projects/iox-ui/src/lib/builder-components/text/text.component.ts","../../../projects/iox-ui/src/lib/builder-components/section/section.component.ts","../../../projects/iox-ui/src/lib/builder-components/container/container.component.ts","../../../projects/iox-ui/src/lib/builder-components/linked-container/linked-container.component.ts","../../../projects/iox-ui/src/lib/builder-components/repeater/repeater.component.ts","../../../projects/iox-ui/src/lib/builder-components/button-block/button-block.component.ts","../../../projects/iox-ui/src/lib/builder-components/slider-container/slider-container.component.ts","../../../projects/iox-ui/src/lib/builder-components/slider-slide/slider-slide.component.ts","../../../projects/iox-ui/src/lib/builder-components/list/list.component.ts","../../../projects/iox-ui/src/lib/builder-components/list-item/list-item.component.ts","../../../projects/iox-ui/src/lib/builder-components/iox-builder-components.module.ts","../../../projects/iox-ui/src/lib/builder-components/iox-component-registry.service.ts","../../../projects/iox-ui/src/lib/style-compiler/style-compiler.ts","../../../projects/iox-ui/src/lib/style-compiler/virtual-traits.ts","../../../projects/iox-ui/src/lib/data-source/data-source-resolver.ts","../../../projects/iox-ui/src/lib/page-transition/page-transition-presets.ts","../../../projects/iox-ui/src/public-api.ts","../../../projects/iox-ui/src/vectoriox-iox-ui.ts"],"sourcesContent":["import {AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Input, Output} from '@angular/core';\n\n@Directive({\n selector:'[view-position]',\n standalone: false\n})\n\nexport class ViewPositionDirective implements AfterViewInit{\n\n private _viewPortHighet!:number;\n private _elementHeight!: number;\n private _elementOffseTop!: number;\n private _curterScreen!:number;\n private _halfSscreen!:number;\n \n private _scrollDirection:string= \"Down\";\n private _scrollPos:number = 0;\n public isOnScreen: boolean = false;\n public isHalfScreen: boolean = false;\n \n @Input() data:any\n @Output() onEnter:EventEmitter<any> = new EventEmitter();\n @Output() onLeave:EventEmitter<any> = new EventEmitter();\n @Output() onHalf:EventEmitter<any> = new EventEmitter();\n\n constructor(private _elr:ElementRef){\n this._initScreenDeminitions();\n console.log(`screent highet: ${this._viewPortHighet}`);\n }\n\n\n ngAfterViewInit(): void {\n this._elementOffseTop = this._elr.nativeElement.offsetTop;\n this._elementHeight = this._elr.nativeElement.offsetHeight;\n console.log(`element offset Y = ${this._elementOffseTop}`); \n }\n\n\n @HostListener('window:scroll', ['$event']) onScroll(e: Event): void {\n\n if ((document.body.getBoundingClientRect()).top > this._scrollPos){\n if(this._scrollDirection != \"Up\"){\n this.isHalfScreen =false;\n this._scrollDirection = \"Up\"\n }\n } \n\t else{\n if(this._scrollDirection !=\"Down\"){\n this.isHalfScreen =false;\n this._scrollDirection = \"Down\"\n }\n } \n\t this._scrollPos = (document.body.getBoundingClientRect()).top;\n\n\n let currentClientHight = this._elr.nativeElement.getBoundingClientRect().top;\n if(currentClientHight >= this._viewPortHighet || currentClientHight < -this._elementHeight){\n if(this.isOnScreen){\n this.isOnScreen = false;\n this.onLeave.emit(\"OUT\");\n }\n }else{\n if(!this.isOnScreen){\n this.isOnScreen = true;\n this.onEnter.emit(\"IN\");\n }\n }\n\n if(currentClientHight < this._halfSscreen && currentClientHight > 0 && this._scrollDirection == \"Down\") {\n if(!this.isHalfScreen){\n this.isHalfScreen = true;\n console.log(\"half\")\n this.onHalf.emit(this.data);\n }\n }\n\n if(currentClientHight + this._elementHeight > this._halfSscreen && currentClientHight +this._elementHeight < this._viewPortHighet && this._scrollDirection == \"Up\") {\n if(!this.isHalfScreen){\n this.isHalfScreen = true;\n console.log(\"I am half\")\n this.onHalf.emit(this.data);\n }\n }\n }\n\n @HostListener('window:resize', ['$event']) onResize(e: Event) {\n this._viewPortHighet = window.innerHeight;\n this._initScreenDeminitions();\n }\n \n \n\n private _initScreenDeminitions(){\n this._viewPortHighet = window.innerHeight;\n this._curterScreen = Math.trunc(this._viewPortHighet *0.25);\n this._halfSscreen = Math.trunc(this._viewPortHighet *0.5);\n }\n }","import { NgModule } from '@angular/core';\nimport { ViewPositionDirective } from './view-position.directive';\n\n\n\n@NgModule({\n declarations: [\n ViewPositionDirective\n ],\n imports: [\n ],\n exports: [\n ViewPositionDirective\n ]\n})\nexport class ViewPositionModule { }\n","import { AnimationBuilder, style, animate, keyframes } from '@angular/animations';\n\n/********** Entries Animations ********************/\n\nexport const IoxAnimationStyles: any = {}\n\nIoxAnimationStyles[\"fade-up\"] = (delay:string, duration:string)=>{\n return [style({ opacity: 0, transform: \"translate3d(0,100px,0)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"translateZ(0)\" }))]\n}\n\nIoxAnimationStyles[\"fade-right\"] = (delay:string, duration:string)=>{\n return [style({ opacity: 0, transform: \"translateX(150px)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"translateZ(0)\" }))]\n}\n\nIoxAnimationStyles[\"fade-out-right\"] = (delay:string, duration:string)=>{\n return [style({ opacity: 1, transform: \"translateX(0px)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 0, transform: \"translateX(150px)\" }))]\n}\n\nIoxAnimationStyles[\"fade-left\"] = (delay:string, duration:string)=>{\n return [style({ opacity: 0, transform: \"translateX(-150px)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"translateZ(0)\" }))]\n}\n\nIoxAnimationStyles[\"fade-out-up\"] = (delay:string, duration:string)=>{\n return [ style({ opacity: 1, transform: \"translateZ(0)\" }),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 0, transform: \"translate3d(0,-100px,0)\"}))]\n}\n\nIoxAnimationStyles[\"flip-left\"] = (delay:string, duration:string)=>{\n return [style({opacity: 0,transform: \"perspective(2500px) rotateY(-100deg)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"perspective(2500px) rotateY(0)\" }))]\n}\n\nIoxAnimationStyles[\"flip-up\"] = (delay:string, duration:string)=>{\n return [style({opacity: 0,transform: \"perspective(2500px) rotateX(-100deg)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"perspective(2500px) rotateY(0)\" }))]\n}\n\nIoxAnimationStyles[\"zoom-in-up\"] = (delay:string, duration:string)=>{\n return [style({opacity: 0,transform: \"translate3d(0,100px,0) scale(.6)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"translateZ(0) scale(1)\" }))]\n}","import { Injectable } from \"@angular/core\";\nimport { Observable, Subject } from \"rxjs\";\n\n\n\n@Injectable({providedIn: 'root'})\nexport class AOSService {\n\n\n\n private _scrollOffset:Subject<any> = new Subject();\n public readonly scrollOffset: Observable<any> = this._scrollOffset.asObservable();\n \n constructor() { }\n\n\n updateScrollOffset(offset:any){\n this._scrollOffset.next(offset);\n }\n\n}","import { Component, ElementRef, HostListener, Input, SimpleChanges, ViewChild } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { AOSService } from './iox-aos.service';\n\n@Component({\n selector: \"[ioxAnimateContainer], ioxAnimateContainer\",\n template:`<div class='animate_root_element' #animateRooteElement>\n <ng-content></ng-content>\n </div>`,\n standalone: false\n})\nexport class IoxAnimateContainer {\n\n @Input('kickIn') kickIn = true;\n\n private _scrollOffset:Subject<any> = new Subject();\n public readonly scrollOffset: Observable<any> = this._scrollOffset.asObservable();\n @ViewChild('animateRooteElement') public animateRooteElement:any;\n \n\n constructor(private _element: ElementRef, private _aOSService: AOSService) {\n }\n\n ngAfterViewInit(){\n this.updateOffset();\n }\n\n @HostListener('scroll', ['$event'])\n public onScroll($event:any){\n this.updateOffset();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n console.log(changes);\n if(changes['kickIn'] && changes['kickIn'].currentValue){\n this.updateOffset();\n }\n }\n\n\n private updateOffset(){\n let elClientRect = this.animateRooteElement.nativeElement.getBoundingClientRect();\n this._scrollOffset.next(elClientRect);\n this._aOSService.updateScrollOffset(elClientRect);\n }\n}","import { Directive, OnDestroy, AfterViewInit, ElementRef, Input, OnInit, Renderer2, HostListener, Host, Optional } from \"@angular/core\";\nimport { AnimationBuilder, style, animate, AnimationPlayer } from '@angular/animations';\nimport { IoxAnimationStyles } from \"./iox-aos-animations\"\n;\nimport { IoxAnimateContainer } from \"./iox-aos-container.component\";\n@Directive({\n selector: \"[ioxAnimate], ioxAnimate\",\n standalone: false\n })\n export class IoxAosDirective implements OnDestroy, OnInit, AfterViewInit {\n \n @Input(\"animationDelay\") animationDelay: string =\"\";\n @Input(\"animationIn\") animationIn: string =\"\";\n @Input(\"animationOut\") animationOut: string = \"\";\n @Input(\"animationDuration\") animationDuration: string = \"0.5s\";\n \n // @Input(\"in\")\n // @Input(\"out\")\n\n public animation:AnimationPlayer | any;\n public isAnimationPlayed= false;\n private _elTop:number =0;\n\n\n constructor(@Host() @Optional() private _animateContainer: IoxAnimateContainer, private _element: ElementRef, private _animationBuilder:AnimationBuilder, private _renderer: Renderer2){\n \n this._renderer.setStyle(_element.nativeElement,'opacity', '0');\n }\n\n public ngOnInit(){\n }\n\n public ngAfterViewInit(){\n\n setTimeout(()=>{\n\n this._elTop = this._cumulativeOffset(this._element.nativeElement).top;\n\n if(this._animateContainer){\n if(this._animateContainer.kickIn){\n this.runIfVisiable();\n }else{\n return\n }\n }else{\n this.runIfVisiable();\n }\n\n \n \n },150)\n\n const resizeObserver = new ResizeObserver((entries) =>\n this._elTop = this._cumulativeOffset(this._element.nativeElement).top\n );\n\n resizeObserver.observe(document.body);\n \n if(this._animateContainer){\n this._animateContainer?.scrollOffset.subscribe((offset:any)=>{\n if(this._animateContainer.kickIn){\n this.scrollEventHandler(-1 *offset.top);\n }\n })\n }\n\n \n }\n\n public makeAnimationIn(animationStyle:any):AnimationPlayer{\n let animation = IoxAnimationStyles[animationStyle](this.animationDelay, this.animationDuration);\n const myAnimation = this._animationBuilder.build(animation)\n return myAnimation.create(this._element.nativeElement); \n\n }\n\n private _cumulativeOffset(element:any) {\n var top = 0, left = 0;\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while(element);\n \n return {\n top: top,\n left: left\n };\n };\n\n @HostListener('document:scroll', ['$event']) onScrollEvent($event:any){\n this.scrollEventHandler(window.pageYOffset)\n }\n \n public isVisable(offset:number){\n //console.log(this._elTop >= window.pageYOffset && this._elTop <= window.pageYOffset + window.innerHeight);\n //return this._elTop >= window.pageYOffset && this._elTop <= window.pageYOffset + window.innerHeight;\n return this._elTop >= offset && this._elTop <= offset + window.innerHeight;\n }\n\n\n public scrollEventHandler(offset:number){\n\n if(this._animateContainer && this._animateContainer.kickIn == false){\n return\n }\n\n if(this.isVisable(offset) && !this.isAnimationPlayed){\n let animationStyle = this.animationIn || \"fade-up\";\n this.makeAnimationIn(animationStyle).play();\n this.isAnimationPlayed = true;\n }else if(!this.isVisable(offset) && this.isAnimationPlayed && this.animationOut){\n this.makeAnimationIn(this.animationOut).play();\n this.isAnimationPlayed =false;\n }\n }\n\n public runIfVisiable(){\n if(this.isVisable(window.pageYOffset)){\n let animationStyle = this.animationIn || \"fade-up\";\n this.makeAnimationIn(animationStyle).play();\n this.isAnimationPlayed = true;\n }\n }\n public ngOnDestroy(){\n\n }\n\n }\n\nfunction ViewParent() {\n throw new Error(\"Function not implemented.\");\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { IoxAosDirective } from './iox-aos.directive';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { IoxAnimateContainer } from './iox-aos-container.component';\nimport { AOSService } from './iox-aos.service';\n\n\n@NgModule({\n declarations: [\n IoxAosDirective,\n IoxAnimateContainer\n ],\n imports: [\n BrowserAnimationsModule\n ],\n providers:[\n AOSService\n ],\n exports: [\n IoxAosDirective,\n IoxAnimateContainer\n ]\n})\nexport class IoxAosModule { \n\n static forRoot(): ModuleWithProviders<any> {\n return {\n ngModule: IoxAosModule,\n providers: [AOSService]\n };\n }\n\n}\n","import { Injectable, NgZone, inject } from '@angular/core';\nimport Lenis from 'lenis';\n\n@Injectable()\nexport class PageScrollProvider {\n // inject() (not a ctor param) so subclasses like SsrSafePageScrollProvider keep `super()`.\n private zone = inject(NgZone);\n private lenis?: Lenis;\n private rafId?: number;\n\n init(options?: ConstructorParameters<typeof Lenis>[0]): void {\n if (this.lenis) {\n this.lenis.destroy();\n }\n if (this.rafId != null) {\n cancelAnimationFrame(this.rafId);\n }\n this.lenis = new Lenis(options || {});\n this.startLoop();\n }\n\n scrollTo(y: number, options?: { duration?: number; immediate?: boolean }): void {\n this.instance.scrollTo(y, options);\n }\n\n scrollToTop(options?: { duration?: number; immediate?: boolean }): void {\n this.scrollTo(0, options);\n }\n\n get instance(): Lenis {\n if (!this.lenis) {\n throw new Error('PageScrollProvider: call init() before accessing the instance.');\n }\n return this.lenis;\n }\n\n private startLoop(): void {\n if (!this.lenis) {\n return;\n }\n // Run the perpetual rAF loop OUTSIDE Angular. In-zone, a never-ending requestAnimationFrame\n // keeps ApplicationRef.isStable() permanently false, so SSR hydration never completes\n // (NG0506: \"hydration expected isStable() to emit true ... didn't happen within 10000ms\").\n this.zone.runOutsideAngular(() => {\n const loop = (time: number) => {\n this.lenis!.raf(time);\n this.rafId = requestAnimationFrame(loop);\n };\n this.rafId = requestAnimationFrame(loop);\n });\n }\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, AfterViewInit, OnDestroy } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { PageScrollProvider } from '../../services/page-scroll.provider';\n\n@Component({\n selector: 'iox-page-component',\n templateUrl: './page-component.component.html',\n styleUrls: ['./page-component.component.scss'],\n standalone: false\n})\nexport class IoxPageComponent implements AfterViewInit, OnDestroy {\n @Input() class = '';\n @ViewChild('page') public page!: ElementRef<HTMLDivElement>;\n private scrollSubscription!: Subscription;\n @Output() scrollEvent = new EventEmitter<{\n scrollTop: number;\n scrollLeft: number;\n scrollHeight: number;\n scrollWidth: number;\n clientHeight: number;\n clientWidth: number;\n scrollPercentage: number;\n }>();\n\n constructor(private pageScrollProvider: PageScrollProvider) {}\n\n ngAfterViewInit(): void {\n if (this.page) {\n this.scrollSubscription = fromEvent(this.page.nativeElement, 'scroll').subscribe((event) => {\n this.onScroll(event as Event);\n });\n\n this.pageScrollProvider.init({\n wrapper: this.page.nativeElement,\n content: this.page.nativeElement.querySelector('.page-mask')!,\n duration: 1.2,\n easing: (t: number) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),\n });\n }\n }\n\n onScroll(event: Event): void {\n const target = event.target as HTMLElement;\n const scrollTop = target.scrollTop;\n const scrollLeft = target.scrollLeft;\n const scrollHeight = target.scrollHeight;\n const scrollWidth = target.scrollWidth;\n const clientHeight = target.clientHeight;\n const clientWidth = target.clientWidth;\n const scrollPercentage = (scrollTop / (scrollHeight - clientHeight)) * 100;\n\n this.scrollEvent.emit({ scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth, scrollPercentage });\n }\n\n ngOnDestroy(): void {\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n }\n}\n","<div #page [class]=\"class\" class=\"iox-page-wrapper\">\n <div class=\"page-mask\">\n <ng-content></ng-content>\n </div>\n</div>\n","\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IoxPageComponent } from './page-component/page-component.component';\nimport { PageScrollProvider } from '../services/page-scroll.provider';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [IoxPageComponent],\n exports: [IoxPageComponent],\n providers: [PageScrollProvider]\n})\nexport class IoxPageModule {}\n","import { NgModule } from '@angular/core';\nimport { IoxAosModule } from './iox-aos/iox-aos.module';\nimport { IoxPageModule } from './iox-page/iox-page.module';\n\n\n@NgModule({\n declarations: [],\n imports: [IoxAosModule, IoxPageModule],\n exports: [IoxAosModule, IoxPageModule]\n})\nexport class IoxUiModule { }\n","import { Injectable } from '@angular/core';\n\n/**\n * Holds live component instances by nodeId so interaction engines can call\n * imperative methods (e.g. Swiper.slideNext()) without direct references.\n *\n * Components register on init and unregister on destroy.\n * Used by both InteractionEngineService (builder) and ClientInteractionService (SSR engine).\n */\n@Injectable({ providedIn: 'root' })\nexport class ComponentInstanceRegistryService {\n private _instances = new Map<string, any>();\n\n register(nodeId: string, instance: any): void {\n this._instances.set(nodeId, instance);\n }\n\n unregister(nodeId: string): void {\n this._instances.delete(nodeId);\n }\n\n get(nodeId: string): any {\n return this._instances.get(nodeId);\n }\n}\n","import { Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\nexport enum PrivacyModelEvent {\n OPEN = 1,\n CLOSE = 2\n}\n\n@Injectable()\nexport class PrivacyModalService {\n private modalEvent: Subject<PrivacyModelEvent> = new Subject<PrivacyModelEvent>();\n private decisionSubject: Subject<boolean> | null = null;\n\n constructor() {}\n\n public registerModalEvent(func: Function): void {\n this.modalEvent.subscribe({\n next: (val) => {\n func(val);\n }\n });\n }\n\n public openModal(): Subject<boolean> {\n this.modalEvent.next(PrivacyModelEvent.OPEN);\n this.decisionSubject = new Subject<boolean>();\n return this.decisionSubject;\n }\n\n public closeModal(): void {\n this.modalEvent.next(PrivacyModelEvent.CLOSE);\n }\n\n public notifyDecision(accepted: boolean): void {\n if (this.decisionSubject) {\n this.decisionSubject.next(accepted);\n this.decisionSubject.complete();\n this.decisionSubject = null;\n }\n this.closeModal();\n }\n}","import { Injectable, Injector, Inject } from '@angular/core';\nimport { ENVIRONMENT } from '../cms-client-infra.module';\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpEventType, HttpEvent } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { CookieService } from 'ngx-cookie-service';\nimport { PrivacyModalService } from '../components/privacy/privacy-modal.service';\n\n\n\n@Injectable()\nexport class ConsentService {\n\n\n private readonly WEB_USER = \"webUser\";\n\n constructor(private cookieService: CookieService,\n private httpClient: HttpClient,\n private _privacyModalService: PrivacyModalService,\n @Inject(ENVIRONMENT) public environment: any) {\n }\n\n private hasAnalyticsConsent(): boolean {\n const cookieValue = this.cookieService.get(this.WEB_USER);\n if (!cookieValue) {\n return false;\n }\n\n try {\n const parsedCookieValue = JSON.parse(cookieValue);\n return parsedCookieValue.user?.consent?.analyticsConsent === true;\n } catch {\n // Invalid JSON or unexpected structure: treat as no consent\n return false;\n }\n }\n\n checkAnalyticsConsent(): Observable<boolean> {\n if (this.hasAnalyticsConsent()) {\n // Consent already given, return true immediately as Observable\n return of(true);\n }\n\n // No consent yet (or invalid/missing cookie) -> show modal\n return this._privacyModalService.openModal();\n }\n\n checkMarketingConsent() {\n let cookieValue = this.cookieService.get(this.WEB_USER);\n if (!cookieValue) {\n return false;\n }\n let parsedCookieValue = JSON.parse(cookieValue);\n return parsedCookieValue.user?.consent?.marketingConsent;\n }\n\n setConsent(analytics: boolean, marketing: boolean) {\n let cookieValue = this.cookieService.get(this.WEB_USER);\n let parsedCookieValue = cookieValue ? JSON.parse(cookieValue) : { user: { consent: { \n anonymousId: this.generateAnonymousId() \n } } };\n parsedCookieValue.user.consent.analyticsConsent = analytics;\n parsedCookieValue.user.consent.marketingConsent = marketing;\n this.cookieService.set(this.WEB_USER, JSON.stringify(parsedCookieValue));\n\n this.httpClient.post(`${this.environment.HOST}consent`, parsedCookieValue.user.consent)\n .subscribe({\n next: (response) => {\n console.log('Consent updated successfully:', response);\n },\n error: (error) => {\n console.error('Error updating consent:', error);\n }\n });\n }\n\n private generateAnonymousId() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random() * 16 | 0,\n v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n}","import { Component } from '@angular/core';\nimport { PrivacyModalService, PrivacyModelEvent } from './privacy-modal.service';\nimport { ConsentService } from '../../services/consent.service';\n\n@Component({\n selector: 'privacy-modal',\n templateUrl: './privacy-modal.component.html',\n styleUrls: ['./privacy-modal.component.scss'],\n standalone: false\n})\nexport class PrivacyModalComponent {\n public isOpen: boolean = false;\n constructor(private _privacyModalService: PrivacyModalService,\n private _consentService: ConsentService) {\n this._privacyModalService.registerModalEvent((event: PrivacyModelEvent) => {\n if (event == PrivacyModelEvent.CLOSE) {\n this.isOpen = false;\n } else {\n this.isOpen = true;\n }\n });\n }\n\n onAccept() {\n this._consentService.setConsent(true, true);\n this._privacyModalService.notifyDecision(true);\n this.isOpen = false;\n }\n\n onDecline() {\n this._privacyModalService.notifyDecision(false);\n this.isOpen = false;\n }\n}\n","<div class=\"privacy-modal\" [ngClass]=\"{'open': isOpen, 'closed': !isOpen}\">\n <div class=\"modal-content\">\n <h2>אנחנו שומרים על הפרטיות שלך</h2>\n <p dir=\"rtl\">\n <span>\n אנחנו משמשים בקבצי \n </span>\n <span>Cookies </span>\n <span>כדי לשפר את חווית הגלישה שלך, לנתח שימוש באתר ולהציע תוכן מותאם אישית.</span>\n <span> למידע נוסף על איך אנחנו משתמשים במידע שלך, ראה את <a target=\"_blank\" href=\"/privacy\">מדיניות הפרטיות </a> שלנו</span>\n </p>\n\n <div class=\"button-container\">\n <button class=\"accept-button\" (click)=\"onAccept()\">אני מסכים</button>\n <button class=\"decline-button\" (click)=\"onDecline()\">אני לא מסכים</button>\n </div>\n </div>\n</div>\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpEventType, HttpEvent } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { CookieService } from 'ngx-cookie-service';\nimport { PrivacyModalService } from '../components/privacy/privacy-modal.service';\nimport { ENVIRONMENT } from '../cms-client-infra.module';\n\n\n\n@Injectable()\nexport class WebSettingsService {\n\n constructor(\n private httpClient: HttpClient,\n @Inject(ENVIRONMENT) private environment: any\n ) {\n }\n\n getSettings() {\n // If the server injected a runtime config (window.__APP_CONFIG) use that first,\n // otherwise fall back to the compile-time environment.HOST.\n const runtimeHost = (typeof window !== 'undefined' && (window as any).__APP_CONFIG && (window as any).__APP_CONFIG.HOST) ? (window as any).__APP_CONFIG.HOST : this.environment.HOST;\n return this.httpClient.get(`${runtimeHost}web/settings`);\n }\n\n configArrayToObject(arr: any[]): { [key: string]: any } {\n return arr.reduce((acc, item) => {\n acc[item.key] = item.value;\n return acc;\n }, {});\n }\n\n}","import { Inject, Injectable, Injector } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpEventType, HttpEvent } from '@angular/common/http';\nimport { Observable, pipe, of, from } from 'rxjs';\nimport { filter, map, reduce, retry } from 'rxjs/operators';\nimport { ENVIRONMENT } from '../cms-client-infra.module';\n\n\n\n@Injectable()\nexport class ContentService {\n\n private appContent:any ={};\n\n\n constructor(private httpClient: HttpClient,\n @Inject(ENVIRONMENT) private environment: any\n ) {\n }\n\n getContent(contentName:string,id?:string ) {\n \n if(this.appContent[contentName] && this.appContent[contentName].length){\n\n if(id){\n return of(this.findOne(this.appContent[contentName],id))\n }\n return of(this.appContent[contentName]);\n }\n\n return this.httpClient.get(`${this.environment.HOST}${contentName}`).pipe(map((content:any)=>{\n if(contentName == this.environment.contentResource.SERVICES || contentName == this.environment.contentResource.PROJECTS){\n content = content.map((item: any) =>{\n item.id= item.name.replace(/ /g,\"_\");\n //item._id= item.name.replace(/ /g,\"_\");\n return item;\n })\n }\n this.appContent[contentName] = content;\n if(id){\n return this.findOne(this.appContent[contentName],id)\n }\n return content;\n }));\n }\n\n private findOne(arr:any,id: string){\n for(let i=0; i < arr.length;i++){\n if(arr[i].id == id){\n return arr[i];\n }\n }\n }\n\n}","import { NgModule, ModuleWithProviders, InjectionToken } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CookieService } from 'ngx-cookie-service';\nimport { ConsentService } from './services/consent.service';\nimport { PrivacyModalComponent } from './components/privacy/privacy-modal.component';\nimport { PrivacyModalService } from './components/privacy/privacy-modal.service';\nimport { WebSettingsService } from './services/web-settings.service';\nimport { ContentService } from './services/content.service';\n\nexport const ENVIRONMENT = new InjectionToken<any>('environment');\n\n@NgModule({\n declarations: [\n PrivacyModalComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [PrivacyModalComponent]\n})\nexport class CMSClientInfraModule {\n static forRoot(environment: any): ModuleWithProviders<CMSClientInfraModule> {\n return {\n ngModule: CMSClientInfraModule,\n providers: [\n { provide: ENVIRONMENT, useValue: environment },\n ConsentService,\n ContentService,\n CookieService,\n WebSettingsService,\n PrivacyModalService\n ]\n };\n }\n}\n","import { Injectable, Inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable({ providedIn: 'root' })\nexport class AnalyticsService {\n private gaScriptId = 'google-analytics-script';\n\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {}\n\n applyGoogleAnalytics(appId: string): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n // 1. Establish the dataLayer and the CORRECT gtag function stub\n const win = window as any;\n win.dataLayer = win.dataLayer || [];\n \n // CRITICAL FIX: The Google library requires the special 'arguments' object, \n // NOT a standard array spread [...args]. \n if (!win.gtag) {\n win.gtag = function() {\n win.dataLayer.push(arguments); \n };\n }\n\n // 2. Queue initial commands immediately (even before script loads)\n win.gtag('js', new Date());\n win.gtag('config', appId); \n\n // 3. Load the script if not already present\n if (!document.getElementById(this.gaScriptId)) {\n const script = document.createElement('script');\n script.id = this.gaScriptId;\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtag/js?id=${appId}`;\n \n script.onload = () => {\n console.log('[Analytics] gtag.js script loaded and ready');\n };\n \n script.onerror = (e) => console.error('[Analytics] gtag.js failed to load', e);\n document.head.appendChild(script);\n }\n }\n\n // Helper to send events from your components\n sendEvent(eventName: string, params: object = {}): void {\n if (isPlatformBrowser(this.platformId) && (window as any).gtag) {\n (window as any).gtag('event', eventName, params);\n }\n }\n\n // Synchronous page view sender that won't rely on internal ready Promise\n sendPageView(path: string): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const win = window as any;\n\n try {\n if (win && win.gtag) {\n // Prefer gtag when available\n win.gtag('event', 'page_view', { page_path: path });\n return;\n }\n\n // Fallback: ensure dataLayer exists and push a native arguments-like object\n win.dataLayer = win.dataLayer || [];\n // Use a plain object that resembles gtag's usage if gtag not present\n win.dataLayer.push({ event: 'page_view', page_path: path });\n } catch (err) {\n console.warn('[Analytics] sendPageView failed', err);\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const IS_PREVIEW = new InjectionToken<boolean>('IS_PREVIEW');\n\nexport interface IBuilderEventEmitter {\n emit(type: string, data?: any): void;\n}\n\nexport const IOX_BUILDER_EVENTS = new InjectionToken<IBuilderEventEmitter>('IOX_BUILDER_EVENTS');\n","import { Component, Input } from '@angular/core';\n\n/**\n * Directive-host image: the selector is `img[iox-img]`, so when created dynamically the HOST is\n * the `<img>` itself — NO wrapper element. All styles land on the `<img>` via `.iox-node-{id}`;\n * a single-element (leaf) node has no inner/outer split. See render-parity.md.\n */\n@Component({\n selector: 'img[iox-img]',\n template: '',\n host: {\n '[attr.src]': 'src',\n '[attr.alt]': 'alt',\n '[class]': \"'iox-node-' + nodeId\",\n },\n styles: [':host { display: block; max-width: 100%; }'],\n standalone: false,\n})\nexport class BuilderImageComponent {\n @Input() src = 'https://placehold.co/600x400?text=Image';\n @Input() alt = 'Image';\n @Input() nodeId = '';\n}\n","import { Component, Input } from '@angular/core';\n\n/** Directive-host spacer: the `<div>` IS the host — no wrapper. All styles on `.iox-node`. */\n@Component({\n selector: 'div[iox-spacer]',\n template: '',\n host: { '[class]': \"'iox-spacer iox-node-' + nodeId\" },\n styles: [':host { display: block; flex-shrink: 0; }'],\n standalone: false,\n})\nexport class BuilderSpacerComponent {\n @Input() nodeId = '';\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-card',\n template: `\n <div class=\"card\" [ngClass]=\"'iox-node-' + nodeId\">\n <div class=\"image-wrapper\">\n <img [src]=\"image\" alt=\"Card image\" class=\"card-img\">\n </div>\n <h2>{{ title }}</h2>\n <p>{{ description }}</p>\n </div>\n `,\n styles: [\n '.image-wrapper { width: 100%; aspect-ratio: 1/1; overflow: hidden; margin-bottom: 0.75rem; }',\n '.card-img { width: 100%; height: 100%; object-fit: cover; }',\n 'h2 { margin: 0 0 0.5rem 0; font-size: 1.2rem; }',\n 'p { margin: 0; }',\n ],\n standalone: false,\n})\nexport class CardComponent {\n @Input() title: string = '';\n @Input() image: string = '';\n @Input() description: string = '';\n @Input() nodeId: string = '';\n}\n","import { Component, Input } from '@angular/core';\n\n/** Directive-host divider: the `<div>` IS the host — no wrapper. All styles on `.iox-node`. */\n@Component({\n selector: 'div[iox-divider]',\n template: '',\n host: { '[class]': \"'iox-divider iox-node-' + nodeId\" },\n styles: [':host { display: block; box-sizing: border-box; }'],\n standalone: false,\n})\nexport class BuilderDividerComponent {\n @Input() nodeId = '';\n}\n","import { Component, Input } from '@angular/core';\n\n/** Directive-host icon: the `<i>` IS the host — no wrapper. All styles on `.iox-node`. */\n@Component({\n selector: 'i[iox-icon]',\n template: '',\n host: { '[class]': \"iconClass + ' iox-node-' + nodeId\" },\n // display:inline-flex — the glyph (a font `::before`) becomes a flex item, so the `<i>` box\n // shrink-wraps it and grows with `font-size`. Phosphor forces this on its own class\n // (`[class^=\"ph-\"]{display:inline-flex}`); generated (fantasticon) fonts style only `::before`,\n // so WITHOUT this an `<i>` on a generated font falls back to `display:block; line-height:0` where\n // the glyph OVERFLOWS a collapsed box and never expands its parent (e.g. a ButtonBlock).\n // line-height:0 — an icon is a glyph and must contribute no line-box height of its own (spacing\n // comes from padding/margin). This host style takes precedence over the node's `.iox-node-{id}`\n // rule, so it MUST stay in sync with the Icon branch of renderDefaultDeclarations in the shared\n // style-compiler; if they disagree, this one wins wherever real components are instantiated\n // (builder canvas + the engine's component renderer) and the two renderers silently diverge.\n styles: [':host { display: inline-flex; align-items: center; justify-content: center; line-height: 0; }'],\n standalone: false,\n})\nexport class BuilderIconComponent {\n /** Full Phosphor icon CSS class string, e.g. \"ph-thin ph-star\" */\n @Input() iconClass = 'ph-thin ph-star';\n @Input() nodeId = '';\n}\n","import { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';\nimport { IS_PREVIEW } from '../builder-tokens';\n\n/**\n * Directive-host link: the `<a>` IS the host — no wrapper. Content is the label; styles come from\n * `.iox-node` (the legacy `style` input is kept for builder compat but no longer inline-applied).\n */\n@Component({\n selector: 'a[iox-link]',\n template: `{{ label }}`,\n host: {\n '[attr.href]': \"isPreview ? resolvedHref : null\",\n '[attr.target]': \"isPreview ? target : null\",\n '[style.pointer-events]': \"isPreview ? null : 'none'\",\n '[class]': \"'builder-link iox-node-' + nodeId\",\n '(click)': 'onLinkClick($event)',\n },\n styles: [`:host { display: inline; cursor: pointer; color: inherit; }`],\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BuilderLinkComponent {\n @Input() nodeId: string = '';\n @Input() label = 'Click here';\n @Input() linkType: 'external' | 'page' = 'external';\n @Input() url = 'https://';\n @Input() pageRoute = '';\n @Input() target: '_self' | '_blank' | '_parent' | '_top' = '_self';\n @Input() style: { [key: string]: any } = {};\n\n constructor(@Optional() @Inject(IS_PREVIEW) public isPreview: boolean) {}\n\n get resolvedHref(): string {\n if (this.linkType !== 'page') return this.url || '#';\n return this.pageRoute || '#';\n }\n\n onLinkClick(event: MouseEvent): void {\n if (!this.isPreview) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { IBuilderEventEmitter, IOX_BUILDER_EVENTS } from '../builder-tokens';\n\ninterface EditableNode {\n bindings?: Array<{ prop: string }>;\n traits?: Array<{ name: string; default: any }>;\n}\n\n/**\n * Directive-host button: the `<a>` IS the host — no wrapper. Content is the label; styling comes\n * from `:host` variants + `.iox-node`.\n */\n@Component({\n selector: 'a[iox-button]',\n template: `{{ label }}`,\n host: {\n '[attr.href]': 'link',\n '[class]': \"'builder-btn variant-' + variant + ' iox-node-' + nodeId\",\n '[attr.contenteditable]': \"editing ? 'true' : null\",\n '(dblclick)': 'startEdit($event)',\n '(blur)': 'commitEdit($event)',\n '(keydown)': 'onKeyDown($event)',\n },\n styles: [`\n :host {\n display: inline-block;\n padding: 0.6rem 1.5rem;\n border-radius: 6px;\n font-size: 0.9rem;\n text-decoration: none;\n cursor: pointer;\n text-align: center;\n transition: opacity 0.15s;\n }\n :host.variant-primary { background: #cb9090; color: #fff; border: 1px solid #cb9090; }\n :host.variant-outlined { background: transparent; color: #cb9090; border: 1px solid #cb9090; }\n :host.variant-text { background: transparent; color: #cb9090; border: 1px solid transparent; }\n :host[contenteditable] { outline: 2px solid #cb9090; cursor: text; }\n `],\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BuilderButtonComponent implements OnInit {\n @Input() label = 'Click me';\n @Input() link = '#';\n @Input() variant: 'primary' | 'outlined' | 'text' = 'primary';\n @Input() nodeId: string = '';\n @Input() node: EditableNode | null = null;\n\n public editing = false;\n\n constructor(@Optional() @Inject(IOX_BUILDER_EVENTS) private events: IBuilderEventEmitter | null) {}\n\n ngOnInit(): void {}\n\n startEdit(event: MouseEvent): void {\n if (this.isBound('label')) return;\n event.preventDefault();\n event.stopPropagation();\n this.editing = true;\n setTimeout(() => (event.target as HTMLElement).focus());\n }\n\n commitEdit(event: FocusEvent): void {\n if (!this.editing) return;\n this.editing = false;\n const newValue = (event.target as HTMLElement).innerText.trim();\n this.label = newValue;\n this.syncTraitToPanel('label', newValue);\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n (event.target as HTMLElement).blur();\n }\n if (event.key === 'Escape') {\n this.editing = false;\n (event.target as HTMLElement).blur();\n }\n event.stopPropagation();\n }\n\n private isBound(prop: string): boolean {\n return (this.node?.bindings || []).some(b => b.prop === prop);\n }\n\n private syncTraitToPanel(prop: string, value: string): void {\n if (!this.node || !this.events) return;\n const trait = (this.node.traits || []).find(t => t.name === prop);\n if (trait) { trait.default = value; }\n this.events.emit('elementselect', { node: this.node, componentRef: null });\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { IBuilderEventEmitter, IOX_BUILDER_EVENTS } from '../builder-tokens';\n\ninterface EditableNode {\n bindings?: Array<{ prop: string }>;\n traits?: Array<{ name: string; default: any }>;\n}\n\n/**\n * Directive-host Heading: the real `<h1>`…`<h6>` IS the host — no `app-builder-heading`\n * wrapper, no inner/outer split. The tag is chosen by whoever CREATES the component\n * (engine: `createComponent({ hostElement: document.createElement(level) })`; builder:\n * RenderDirective does the same), NOT by an internal ngSwitch. `level` is kept as an input\n * for that creation logic + serialization. Editing (contenteditable) runs in the builder only.\n */\n@Component({\n selector: 'h1[iox-heading],h2[iox-heading],h3[iox-heading],h4[iox-heading],h5[iox-heading],h6[iox-heading]',\n template: `{{ content }}`,\n host: {\n '[class]': \"'iox-node-' + nodeId\",\n '[attr.contenteditable]': \"editing ? 'true' : null\",\n '(mousedown)': 'onMouseDown($event)',\n '(dblclick)': 'startEdit($event)',\n '(blur)': 'commitEdit($event)',\n '(keydown)': 'onKeyDown($event)',\n },\n // No display/position/color in :host (they'd out-specify styleProps `.iox-node`). Heading tags\n // are block by default; only reset the UA margin + the editing affordances.\n styles: [`:host { margin: 0; } :host[contenteditable] { outline: none; cursor: text; }`],\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BuilderHeadingComponent implements OnInit {\n @Input() content = 'Heading';\n @Input() level: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' = 'h2';\n @Input() nodeId: string = '';\n @Input() node: EditableNode | null = null;\n\n public editing = false;\n\n constructor(\n @Optional() @Inject(IOX_BUILDER_EVENTS) private events: IBuilderEventEmitter | null,\n private cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {}\n\n onMouseDown(event: Event): void {\n if (this.editing) { event.stopPropagation(); }\n }\n\n startEdit(event: Event): void {\n if (this.isBound('content')) return;\n event.stopPropagation();\n this.editing = true;\n this.cdr.detectChanges();\n this.cdr.detach();\n const el = event.target as HTMLElement;\n setTimeout(() => { el.focus(); });\n }\n\n commitEdit(event: FocusEvent): void {\n if (!this.editing) return;\n this.editing = false;\n const newValue = (event.target as HTMLElement).innerText;\n this.content = newValue;\n this.cdr.reattach();\n this.syncTraitToPanel('content', newValue);\n }\n\n onKeyDown(event: Event): void {\n const ke = event as KeyboardEvent;\n if (ke.key === 'Enter' && !ke.shiftKey) {\n event.preventDefault();\n (event.target as HTMLElement).blur();\n }\n if (ke.key === 'Escape') {\n this.editing = false;\n this.cdr.reattach();\n (event.target as HTMLElement).blur();\n }\n event.stopPropagation();\n }\n\n private isBound(prop: string): boolean {\n return (this.node?.bindings || []).some(b => b.prop === prop);\n }\n\n private syncTraitToPanel(prop: string, value: string): void {\n if (!this.node || !this.events) return;\n const trait = (this.node.traits || []).find(t => t.name === prop);\n if (trait) { trait.default = value; }\n this.events.emit('elementselect', { node: this.node, componentRef: null, isCanvasUpdate: true });\n }\n}\n","import { ChangeDetectorRef, Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { IBuilderEventEmitter, IOX_BUILDER_EVENTS } from '../builder-tokens';\n\ninterface EditableNode {\n bindings?: Array<{ prop: string }>;\n traits?: Array<{ name: string; default: any }>;\n}\n\n/**\n * Directive-host Text: the real `<p>`/`<span>` IS the host — no `app-text-block` wrapper,\n * no inner/outer split. The tag is chosen by whoever CREATES the component (engine/builder\n * pass `hostElement`), NOT an internal ngSwitch. Content is rich HTML (Quill) → bound via\n * `[innerHTML]` on the host. Editing (contenteditable) runs in the builder only.\n */\n@Component({\n selector: 'p[iox-text],span[iox-text]',\n template: ``,\n host: {\n '[class]': \"'iox-node-' + nodeId\",\n '[innerHTML]': 'content',\n '[attr.contenteditable]': \"editing ? 'true' : null\",\n '(pointerdown)': 'onPointerDown($event)',\n '(mousedown)': 'onMouseDown($event)',\n '(dblclick)': 'startEdit($event)',\n '(blur)': 'commitEdit($event)',\n '(keydown)': 'onKeyDown($event)',\n '(paste)': 'onPaste($event)',\n },\n // No display/position/color in :host (they'd out-specify styleProps `.iox-node`).\n styles: [`:host { margin: 0; white-space: pre-wrap; } :host[contenteditable] { outline: none; cursor: text; }`],\n standalone: false,\n})\nexport class TextBlockComponent implements OnInit {\n @Input() content = 'Enter text here';\n @Input() tag: 'p' | 'span' = 'p';\n @Input() style: { [key: string]: any } = {};\n @Input() nodeId: string = '';\n @Input() node: EditableNode | null = null;\n\n public editing = false;\n\n constructor(\n @Optional() @Inject(IOX_BUILDER_EVENTS) private events: IBuilderEventEmitter | null,\n private cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {}\n\n onPointerDown(event: Event): void {\n if (this.editing) { event.stopPropagation(); }\n }\n\n onMouseDown(event: Event): void {\n if (this.editing) { event.stopPropagation(); }\n }\n\n startEdit(event: Event): void {\n if (this.isBound('content')) return;\n event.stopPropagation();\n this.editing = true;\n this.cdr.detectChanges();\n this.cdr.detach();\n const el = event.target as HTMLElement;\n el.closest('[data-iox-draggable]')?.setAttribute('data-editing', '');\n setTimeout(() => { el.focus(); });\n }\n\n onPaste(event: Event): void {\n event.preventDefault();\n const plain = (event as ClipboardEvent).clipboardData?.getData('text/plain') ?? '';\n // Insert as plain text so no inline styles from clipboard survive\n document.execCommand('insertText', false, plain);\n }\n\n commitEdit(event: Event): void {\n if (!this.editing) return;\n this.editing = false;\n const el = event.target as HTMLElement;\n el.closest('[data-iox-draggable]')?.removeAttribute('data-editing');\n const newValue = el.innerText;\n this.content = newValue;\n // Explicitly reset to plain text so any pasted HTML nodes are gone\n // before Angular re-renders [innerHTML]\n el.textContent = newValue;\n this.cdr.reattach();\n this.syncTraitToPanel('content', newValue);\n }\n\n onKeyDown(event: Event): void {\n if ((event as KeyboardEvent).key === 'Escape') {\n this.editing = false;\n this.cdr.reattach();\n (event.target as HTMLElement).blur();\n }\n event.stopPropagation();\n }\n\n private isBound(prop: string): boolean {\n return (this.node?.bindings || []).some(b => b.prop === prop);\n }\n\n private syncTraitToPanel(prop: string, value: string): void {\n if (!this.node || !this.events) return;\n const trait = (this.node.traits || []).find(t => t.name === prop);\n if (trait) { trait.default = value; }\n this.events.emit('elementselect', { node: this.node, componentRef: null, isCanvasUpdate: true });\n }\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\n/** Directive-host section: the `<section>` IS the host — no wrapper, no inner/outer split. */\n@Component({\n selector: 'section[iox-section]',\n template: `<ng-container #childrenHost></ng-container>`,\n host: { '[class]': \"'iox-node-' + nodeId\" },\n // No display/position in :host (they'd out-specify styleProps). <section> is block by default.\n styles: [`:host { box-sizing: border-box; }`],\n standalone: false,\n})\nexport class SectionComponent {\n @Input() nodeId = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\n/** Directive-host container: the `<div>` IS the host — no wrapper, no inner/outer split. */\n@Component({\n selector: 'div[iox-container]',\n template: `<ng-container #childrenHost></ng-container>`,\n host: { '[class]': \"'iox-node-' + nodeId\" },\n // No display/position in :host — they'd out-specify styleProps (`.iox-node`). A <div> is block\n // by default; the engine supplies position:relative as a render-default (styleProps overrides).\n styles: [`:host { box-sizing: border-box; }`],\n standalone: false,\n})\nexport class ContainerComponent {\n @Input() nodeId = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n}\n","import { Component, ElementRef, Inject, Input, OnDestroy, OnInit, Optional, ViewChild, ViewContainerRef } from '@angular/core';\nimport { IS_PREVIEW } from '../builder-tokens';\n\n/** Directive-host linked container: the `<a>` IS the host — no wrapper, no inner/outer split. */\n@Component({\n selector: 'a[iox-linked-container]',\n template: `<ng-container #childrenHost></ng-container>`,\n host: {\n '[attr.href]': 'resolvedHref',\n '[attr.target]': 'target',\n '[class]': \"'linked-container-root iox-node-' + nodeId\",\n },\n // No display/position/color in :host (they'd out-specify styleProps). An <a> is inline by\n // default, so the engine supplies display:block + position:relative as render-defaults.\n styles: [`:host { box-sizing: border-box; text-decoration: none; cursor: pointer; }`],\n standalone: false,\n})\nexport class LinkedContainerComponent implements OnInit, OnDestroy {\n @Input() nodeId = '';\n @Input() linkType: 'external' | 'page' = 'external';\n @Input() url = 'https://';\n @Input() pageRoute = '';\n @Input() target: '_self' | '_blank' | '_parent' | '_top' = '_self';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n\n private capturePreventDefault = (e: MouseEvent) => e.preventDefault();\n\n constructor(\n private elRef: ElementRef<HTMLElement>,\n @Optional() @Inject(IS_PREVIEW) private isPreview: boolean,\n ) {}\n\n ngOnInit(): void {\n if (!this.isPreview) {\n this.elRef.nativeElement.addEventListener('click', this.capturePreventDefault, true);\n }\n }\n\n ngOnDestroy(): void {\n if (!this.isPreview) {\n this.elRef.nativeElement.removeEventListener('click', this.capturePreventDefault, true);\n }\n }\n\n get resolvedHref(): string {\n if (this.linkType !== 'page') return this.url || '#';\n return this.pageRoute || '#';\n }\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\n/**\n * Client-engine repeater shell. Data fetching and item expansion are handled\n * by DataSourceResolverService + BindingApplicatorService in the PageResolver\n * before this component is rendered. ClientRenderDirective inserts one child\n * per resolved item into childrenHost.\n */\n@Component({\n selector: 'iox-repeater',\n template: `\n <div class=\"repeater-root\" [ngClass]=\"['iox-node-' + nodeId]\">\n <ng-container #childrenHost></ng-container>\n </div>\n `,\n styles: [`.repeater-root { position: relative; box-sizing: border-box; }`],\n standalone: false,\n})\nexport class ClientRepeaterComponent {\n @Input() nodeId = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\n/**\n * Directive-host ButtonBlock: the real `<a>`/`<button>` IS the host — no `app-button-block`\n * wrapper, no inner/outer split. The tag is chosen by whoever CREATES the component (engine\n * passes `hostElement`: `<a>` when `tag==='a'`, else `<button>`), NOT an internal `*ngIf`.\n * The `iox-btn-block` class (UA resets: inline-flex, color/font inherit, no border) matches the\n * string renderer and lives in the engine's global styles.scss — kept OFF `:host` so styleProps\n * (`.iox-node-{id}`) can override it. Children render into the host via `childrenHost`.\n */\n@Component({\n selector: 'a[iox-button-block],button[iox-button-block]',\n template: `<ng-container #childrenHost></ng-container>`,\n host: {\n '[class]': \"'iox-btn-block iox-node-' + nodeId\",\n '[attr.href]': \"tag === 'a' ? (href || null) : null\",\n '[attr.target]': \"tag === 'a' ? (target || null) : null\",\n '[attr.type]': \"tag === 'a' ? null : type\",\n },\n styles: [`:host { box-sizing: border-box; }`],\n standalone: false,\n})\nexport class ButtonBlockComponent {\n @Input() tag: 'button' | 'a' = 'button';\n @Input() href = '';\n @Input() target: '_self' | '_blank' = '_self';\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input() nodeId = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n}\n","import {\n AfterViewInit,\n Component,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n ViewChild,\n ViewContainerRef,\n inject,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ComponentInstanceRegistryService } from '../../services/component-instance-registry.service';\n\n@Component({\n selector: 'iox-slider-container',\n template: `\n <div class=\"swiper\" [class]=\"'iox-node-' + nodeId\" [attr.dir]=\"dir\" [style.direction]=\"dir\" #swiperEl>\n <div class=\"swiper-wrapper\">\n <ng-container #childrenHost></ng-container>\n </div>\n <div *ngIf=\"enableNavigation\" class=\"swiper-button-prev\"></div>\n <div *ngIf=\"enableNavigation\" class=\"swiper-button-next\"></div>\n <div *ngIf=\"enablePagination\" class=\"swiper-pagination\"></div>\n <div *ngIf=\"enableScrollbar\" class=\"swiper-scrollbar\"></div>\n </div>\n `,\n styles: [`.swiper { width: 100%; height: 100%; box-sizing: border-box; }`],\n standalone: false,\n})\nexport class ClientSliderContainerComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() nodeId = '';\n /** Language (writing) direction. Rendered as the `dir` attribute so it survives SSR and drives\n * Swiper's RTL layout — must match the builder's app-slider-container, which had `dir` while\n * this engine-runtime component did not (RTL showed in the editor but never on the live site). */\n @Input() dir: 'ltr' | 'rtl' = 'ltr';\n @Input() direction: 'horizontal' | 'vertical' = 'horizontal';\n @Input() loop = false;\n @Input() slidesPerView = 1;\n @Input() spaceBetween = 0;\n @Input() speed = 300;\n @Input() effect = 'slide';\n @Input() grabCursor = true;\n @Input() centeredSlides = false;\n @Input() initialSlide = 0;\n @Input() enableNavigation = false;\n @Input() enablePagination = false;\n @Input() enableScrollbar = false;\n @Input() enableAutoplay = false;\n @Input() enableKeyboard = false;\n @Input() enableMousewheel = false;\n @Input() enableZoom = false;\n @Input() enableGrid = false;\n @Input() enableParallax = false;\n @Input() autoplayDelay = 3000;\n @Input() autoplayPauseOnMouseEnter = true;\n @Input() autoplayDisableOnInteraction = false;\n @Input() paginationType: 'bullets' | 'fraction' | 'progressbar' = 'bullets';\n @Input() paginationClickable = true;\n @Input() gridRows = 1;\n @Input() breakpoints = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n\n @ViewChild('swiperEl', { static: true })\n swiperEl!: { nativeElement: HTMLElement };\n\n private _swiper: any = null;\n private instanceRegistry = inject(ComponentInstanceRegistryService);\n\n constructor(@Inject(PLATFORM_ID) private platformId: object) {}\n\n ngOnInit(): void {}\n\n ngAfterViewInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n // Defer so all child slides are rendered first\n requestAnimationFrame(() => this._initSwiper());\n }\n }\n\n ngOnDestroy(): void {\n if (this._swiper) {\n this._swiper.destroy(true, true);\n this._swiper = null;\n this.instanceRegistry.unregister(this.nodeId);\n }\n }\n\n private async _initSwiper(): Promise<void> {\n const el = this.swiperEl?.nativeElement;\n if (!el) return;\n\n const [{ default: Swiper }, swiperModules] = await Promise.all([\n import('swiper'),\n import('swiper/modules'),\n ]);\n\n const {\n Navigation, Pagination, Scrollbar, Autoplay,\n Keyboard, Mousewheel, Zoom, Grid, Parallax,\n EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCards, EffectCreative,\n } = swiperModules as any;\n\n const modules: any[] = [];\n if (this.enableNavigation) modules.push(Navigation);\n if (this.enablePagination) modules.push(Pagination);\n if (this.enableScrollbar) modules.push(Scrollbar);\n if (this.enableAutoplay) modules.push(Autoplay);\n if (this.enableKeyboard) modules.push(Keyboard);\n if (this.enableMousewheel) modules.push(Mousewheel);\n if (this.enableZoom) modules.push(Zoom);\n if (this.enableGrid) modules.push(Grid);\n if (this.enableParallax) modules.push(Parallax);\n\n const effectMap: Record<string, any> = {\n fade: EffectFade, cube: EffectCube, flip: EffectFlip,\n coverflow: EffectCoverflow, cards: EffectCards, creative: EffectCreative,\n };\n if (this.effect !== 'slide' && effectMap[this.effect]) {\n modules.push(effectMap[this.effect]);\n }\n\n const config: Record<string, any> = {\n modules,\n // Swiper reads the container's `dir` attribute, but pass it explicitly so RTL is applied\n // on init regardless of attribute timing.\n dir: this.dir,\n direction: this.direction,\n loop: this.loop,\n slidesPerView: this.slidesPerView,\n spaceBetween: this.spaceBetween,\n speed: this.speed,\n effect: this.effect,\n grabCursor: this.grabCursor,\n centeredSlides: this.centeredSlides,\n initialSlide: this.initialSlide,\n };\n\n if (this.enableNavigation) config['navigation'] = { prevEl: '.swiper-button-prev', nextEl: '.swiper-button-next' };\n if (this.enablePagination) config['pagination'] = { el: '.swiper-pagination', type: this.paginationType, clickable: this.paginationClickable };\n if (this.enableScrollbar) config['scrollbar'] = { el: '.swiper-scrollbar', draggable: true };\n if (this.enableAutoplay) config['autoplay'] = { delay: this.autoplayDelay, pauseOnMouseEnter: this.autoplayPauseOnMouseEnter, disableOnInteraction: this.autoplayDisableOnInteraction };\n if (this.enableGrid && this.gridRows > 1) config['grid'] = { rows: this.gridRows };\n if (this.breakpoints) { try { config['breakpoints'] = JSON.parse(this.breakpoints); } catch { /* ignore */ } }\n\n this._swiper = new Swiper(el, config);\n this.instanceRegistry.register(this.nodeId, this._swiper);\n }\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\n/**\n * Client-engine slide. The HOST element (`iox-slider-slide`) itself carries the\n * `swiper-slide` class so it is a DIRECT child of `.swiper-wrapper` — Swiper only\n * recognises slides that are direct children (the `.swiper-slide` direct-child\n * invariant; see iox-ai-guidance architecture/builder/slider.md). A wrapper div\n * would nest `.swiper-slide` one level too deep and Swiper would ignore the slides.\n *\n * The shared `iox-node-{id}` class is applied to the same host so the page-level\n * CSS rules match (parity with the string renderer / builder).\n */\n@Component({\n selector: 'iox-slider-slide',\n template: `<ng-container #childrenHost></ng-container>`,\n styles: [`:host { display: block; box-sizing: border-box; }`],\n host: { '[class]': `'swiper-slide iox-node-' + nodeId` },\n standalone: false,\n})\nexport class ClientSliderSlideComponent {\n @Input() nodeId = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\n/**\n * Directive-host List: the real `<ul>`/`<ol>` IS the host — no `iox-list` wrapper, no\n * inner/outer split. The tag is chosen by whoever CREATES the component (engine passes\n * `hostElement: document.createElement(htmlTag)`), NOT an internal `*ngIf`. Children render\n * into the host via `childrenHost`. `start`/`reversed` are host attrs (only meaningful on `<ol>`).\n */\n@Component({\n selector: 'ul[iox-list],ol[iox-list]',\n template: `<ng-container #childrenHost></ng-container>`,\n host: {\n '[class]': \"'iox-node-' + nodeId\",\n '[attr.start]': \"htmlTag === 'ol' && start !== '' && start != null ? start : null\",\n '[attr.reversed]': \"htmlTag === 'ol' && reversed ? '' : null\",\n },\n // No display/position in :host (they'd out-specify styleProps). <ul>/<ol> are block by default.\n styles: [`:host { margin: 0; box-sizing: border-box; }`],\n standalone: false,\n})\nexport class ClientListComponent {\n @Input() htmlTag: 'ul' | 'ol' = 'ul';\n @Input() start: string | number = '';\n @Input() reversed = false;\n @Input() nodeId = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\n/**\n * Directive-host List item: the real `<li>` IS the host — no `iox-list-item` wrapper, no\n * inner/outer split. Children render into the `<li>` via `childrenHost`. Fixed tag (`<li>`),\n * so the engine creates it with `vcr.createComponent` (no `hostElement` needed).\n */\n@Component({\n selector: 'li[iox-list-item]',\n template: `<ng-container #childrenHost></ng-container>`,\n host: { '[class]': \"'iox-node-' + nodeId\" },\n // No display/position in :host (they'd out-specify styleProps). <li> is list-item by default.\n styles: [`:host { box-sizing: border-box; }`],\n standalone: false,\n})\nexport class ClientListItemComponent {\n @Input() nodeId = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { BuilderImageComponent } from './image/image.component';\nimport { BuilderSpacerComponent } from './spacer/spacer.component';\nimport { CardComponent } from './card/card.component';\nimport { BuilderDividerComponent } from './divider/divider.component';\nimport { BuilderIconComponent } from './icon/icon.component';\nimport { BuilderLinkComponent } from './link/link.component';\nimport { BuilderButtonComponent } from './button/button.component';\nimport { BuilderHeadingComponent } from './heading/heading.component';\nimport { TextBlockComponent } from './text/text.component';\nimport { SectionComponent } from './section/section.component';\nimport { ContainerComponent } from './container/container.component';\nimport { LinkedContainerComponent } from './linked-container/linked-container.component';\nimport { ClientRepeaterComponent } from './repeater/repeater.component';\nimport { ButtonBlockComponent } from './button-block/button-block.component';\nimport { ClientSliderContainerComponent } from './slider-container/slider-container.component';\nimport { ClientSliderSlideComponent } from './slider-slide/slider-slide.component';\nimport { ClientListComponent } from './list/list.component';\nimport { ClientListItemComponent } from './list-item/list-item.component';\n\nconst COMPONENTS = [\n BuilderImageComponent,\n BuilderSpacerComponent,\n CardComponent,\n BuilderDividerComponent,\n BuilderIconComponent,\n BuilderLinkComponent,\n BuilderButtonComponent,\n BuilderHeadingComponent,\n TextBlockComponent,\n SectionComponent,\n ContainerComponent,\n LinkedContainerComponent,\n ClientRepeaterComponent,\n ButtonBlockComponent,\n ClientSliderContainerComponent,\n ClientSliderSlideComponent,\n ClientListComponent,\n ClientListItemComponent,\n];\n\n@NgModule({\n declarations: COMPONENTS,\n imports: [CommonModule],\n exports: COMPONENTS,\n})\nexport class IoxBuilderComponentsModule {}\n","import { Injectable, Type } from '@angular/core';\n\nimport { BuilderImageComponent } from './image/image.component';\nimport { BuilderSpacerComponent } from './spacer/spacer.component';\nimport { CardComponent } from './card/card.component';\nimport { BuilderDividerComponent } from './divider/divider.component';\nimport { BuilderIconComponent } from './icon/icon.component';\nimport { BuilderLinkComponent } from './link/link.component';\nimport { BuilderButtonComponent } from './button/button.component';\nimport { BuilderHeadingComponent } from './heading/heading.component';\nimport { TextBlockComponent } from './text/text.component';\nimport { SectionComponent } from './section/section.component';\nimport { ContainerComponent } from './container/container.component';\nimport { LinkedContainerComponent } from './linked-container/linked-container.component';\nimport { ClientRepeaterComponent } from './repeater/repeater.component';\nimport { ButtonBlockComponent } from './button-block/button-block.component';\nimport { ClientSliderContainerComponent } from './slider-container/slider-container.component';\nimport { ClientSliderSlideComponent } from './slider-slide/slider-slide.component';\nimport { ClientListComponent } from './list/list.component';\nimport { ClientListItemComponent } from './list-item/list-item.component';\n\n/**\n * Single source of truth for the IOX component type → Angular class mapping.\n * Used by the client engine (iox-client-engine) to resolve component classes\n * from IoxLayoutNode.type strings at render time.\n *\n * All 13 builder components are registered here:\n * - Leaf (Phase 2a): Image, Spacer, Card, Divider, Icon\n * - Inline-editable (Phase 2b): Link, Button, Heading, Text\n * - Layout shells (Phase 2c): Section, Container, LinkedContainer\n * - Repeater (Phase 2d): ClientRepeaterComponent\n *\n * Section/Container/LinkedContainer/Repeater expose childrenHost: ViewContainerRef\n * for ClientRenderDirective to insert child components into.\n */\n@Injectable({ providedIn: 'root' })\nexport class IoxComponentRegistryService {\n private readonly map = new Map<string, Type<any>>([\n ['Image', BuilderImageComponent],\n ['Spacer', BuilderSpacerComponent],\n ['Card', CardComponent],\n ['Divider', BuilderDividerComponent],\n ['Icon', BuilderIconComponent],\n ['Link', BuilderLinkComponent],\n ['Button', BuilderButtonComponent],\n ['Heading', BuilderHeadingComponent],\n ['Text', TextBlockComponent],\n ['Section', SectionComponent],\n ['Container', ContainerComponent],\n ['LinkedContainer', LinkedContainerComponent],\n ['Repeater', ClientRepeaterComponent],\n ['ButtonBlock', ButtonBlockComponent],\n ['SliderContainer', ClientSliderContainerComponent],\n ['SliderSlide', ClientSliderSlideComponent],\n ['List', ClientListComponent],\n ['ListItem', ClientListItemComponent],\n ]);\n\n getComponent(type: string): Type<any> | undefined {\n return this.map.get(type);\n }\n\n hasComponent(type: string): boolean {\n return this.map.has(type);\n }\n}\n","/**\n * style-compiler — the SINGLE source of truth for turning a node's style map into\n * CSS declarations. Framework-agnostic (no Angular): consumed by both renderers.\n *\n * - Builder canvas: `StyleRegistryService` (@vectoriox/iox-builder) → live `<style>` tag.\n * - SSR site: `LayoutRendererService` (iox-client-engine) → HTML string CSS.\n *\n * Lives in @vectoriox/iox-ui because BOTH consumers depend on iox-ui (the engine does\n * NOT depend on iox-builder). Keeping it here — not duplicated per renderer — is what\n * prevents the builder and the live site from drifting.\n * See iox-ai-guidance `architecture/builder/render-parity.md`.\n */\n\n/**\n * Rewrite viewport-relative units so they resolve to the simulated canvas dimensions\n * in the builder, and to the real viewport in production.\n *\n * `--preview-vh` / `--preview-vw` are set by BuilderComponent (ResizeObserver +\n * viewport-state subscription). In production those variables are undefined, so the\n * `1vh` / `1vw` fallbacks restore native browser behaviour.\n */\nexport function rewriteViewportUnits(value: string): string {\n return value\n .replace(/(-?\\d*\\.?\\d+)vh/g, 'calc($1 * var(--preview-vh, 1vh))')\n .replace(/(-?\\d*\\.?\\d+)vw/g, 'calc($1 * var(--preview-vw, 1vw))');\n}\n\n/** camelCase style key → kebab-case CSS property. */\nexport function styleKeyToKebab(key: string): string {\n return key.replace(/[A-Z]/g, m => `-${m.toLowerCase()}`);\n}\n\n/**\n * kebab CSS property → the value that equals its CSS initial AND has no UA-stylesheet override for\n * any element the builder renders (div/section/span/i/a/img/h1–h6/p/ul). Emitting these is a pure\n * no-op, so they're dropped to keep the compiled CSS lean (self-describing nodes serialise every\n * trait, many at their default).\n *\n * Deliberately EXCLUDED, because a value equal to the initial can still be meaningful there:\n * - inherited properties (line-height, color, font-family/size/weight, text-align, letter-spacing…)\n * — the value may override an inherited ancestor value.\n * - margin / padding — UA stylesheets set them on h1–h6, p, ul, so `0` depends on a reset.\n * - border-* — the initial `medium` width + interaction with border-style makes it non-trivial.\n */\nconst NOOP_INITIAL_VALUES: Readonly<Record<string, readonly string[]>> = {\n 'width': ['auto'], 'height': ['auto'],\n 'min-width': ['auto'], 'min-height': ['auto'],\n 'max-width': ['none', 'auto'], 'max-height': ['none', 'auto'], // `auto` is invalid for max-* → inert\n 'position': ['static'],\n 'top': ['auto'], 'right': ['auto'], 'bottom': ['auto'], 'left': ['auto'],\n 'opacity': ['1'], 'z-index': ['auto'],\n 'flex-grow': ['0'], 'flex-shrink': ['1'], 'flex-basis': ['auto'],\n 'flex-direction': ['row'], 'flex-wrap': ['nowrap'],\n 'gap': ['0', '0px', 'normal'],\n 'border-radius': ['0', '0px'],\n 'aspect-ratio': ['auto'],\n 'mix-blend-mode': ['normal'],\n 'transform': ['none'], 'box-shadow': ['none'],\n};\n\n/**\n * Style props a type's render-default fully REPLACES. Emitting them would produce a dead\n * declaration that is immediately overridden in the same rule (e.g. an Icon's serialised\n * `lineHeight: 1.5` followed by the forced `line-height: 1`), so callers strip them first via\n * {@link stripSuppressedProps} and let renderDefaultDeclarations supply the real value.\n */\nexport const SUPPRESSED_STYLE_PROPS_BY_TYPE: Readonly<Record<string, readonly string[]>> = {\n // An icon's line box is structurally forced to 1 — see the Icon branch of renderDefaultDeclarations.\n Icon: ['lineHeight'],\n};\n\n/** Remove the style props whose value a type's render-default always overrides. Returns the map\n * unchanged (same reference) when the type suppresses nothing. */\nexport function stripSuppressedProps(type: string, styleProps: Record<string, any>): Record<string, any> {\n const suppressed = SUPPRESSED_STYLE_PROPS_BY_TYPE[type];\n if (!suppressed?.length) return styleProps;\n const out = { ...styleProps };\n for (const key of suppressed) delete out[key];\n return out;\n}\n\n/**\n * Compile a flat, camelCase style map into an array of `\"prop: value\"` CSS\n * declarations (kebab-cased, viewport-units rewritten, empties + no-op initials dropped,\n * optional `!important`). Callers wrap these in whatever selector they emit.\n *\n * @param props Flat camelCase style map.\n * @param importantProps Keys that must carry `!important` (e.g. `position`, to beat\n * Angular's scoped-CSS specificity boost in the builder). A prop forced\n * `!important` is never dropped as a no-op — the `!important` exists to win\n * the cascade, so its value must always be emitted.\n */\nexport function compileDeclarations(\n props: Record<string, any>,\n importantProps?: ReadonlySet<string>,\n): string[] {\n const out: string[] = [];\n for (const [k, v] of Object.entries(props)) {\n if (v === undefined || v === null || v === '') continue;\n const prop = styleKeyToKebab(k);\n const val = rewriteViewportUnits(String(v));\n const isImportant = importantProps?.has(k) ?? false;\n if (!isImportant && NOOP_INITIAL_VALUES[prop]?.includes(val.trim().toLowerCase())) continue;\n out.push(`${prop}: ${val}${isImportant ? ' !important' : ''}`);\n }\n return out;\n}\n\n/**\n * Per-type default `width` that the builder applies from each component's config\n * (NOT persisted in styleProps — see render-parity.md \"saved node is not\n * self-describing\"). The engine has no config classes, so it resolves the same\n * default from THIS map at render time. Keeping the map here (not re-typed in the\n * engine) is the \"shared default map\" decision.\n *\n * ONLY the `100%` container-type defaults live here. Fixed-size config defaults\n * (Card 200px, Image 300px, SliderSlide 33%) are starter placeholders real content\n * almost always overrides — forcing them onto width-less nodes breaks layout.\n */\nexport const DEFAULT_WIDTH_BY_TYPE: Readonly<Record<string, string>> = {\n Container: '100%', Repeater: '100%', SliderContainer: '100%',\n List: '100%', ListItem: '100%', Text: '100%', Divider: '100%', Spacer: '100%',\n // Section, Heading, LinkedContainer, Card, Image, SliderSlide, Button, ButtonBlock,\n // Icon → no forced default (their config defaults are content sizes set explicitly).\n};\n\n/**\n * Extra \"render default\" declarations the builder gets implicitly from live component\n * behaviour, which the engine must re-apply explicitly for parity. Returns `\"prop: value\"`\n * declarations to append AFTER the node's own compiled declarations.\n *\n * @param type Node type (registry key).\n * @param styleProps The node's persisted styleProps.\n * @param hasHoverState Whether the node has a non-empty hover / parent-hover state.\n */\nexport function renderDefaultDeclarations(\n type: string,\n styleProps: Record<string, any>,\n hasHoverState: boolean,\n): string[] {\n const sp = styleProps ?? {};\n const out: string[] = [];\n const isOutOfFlow = sp['position'] === 'fixed' || sp['position'] === 'absolute';\n\n // Container-type default width so it fills its track. Only when width is unset — once a page\n // is saved with fully-resolved styleProps (self-describing nodes), width comes through\n // compileDeclarations and this is a no-op.\n if (sp['width'] === undefined) {\n if (isOutOfFlow) {\n out.push('width: 100%');\n } else if (DEFAULT_WIDTH_BY_TYPE[type]) {\n out.push(`width: ${DEFAULT_WIDTH_BY_TYPE[type]}`);\n }\n }\n // min-width:0 lets container flex children shrink below content and equal-split. Emit it for\n // container types INDEPENDENT of where width came from (styleProps vs the default above) —\n // otherwise a saved page whose width is persisted would lose the equal-split. In the builder the\n // same rule comes from the `.container-child` wrapper; here it lands on `.iox-node` directly.\n if (DEFAULT_WIDTH_BY_TYPE[type] && sp['minWidth'] === undefined && !isOutOfFlow) {\n out.push('min-width: 0');\n }\n // A border only renders when there is a WIDTH. Gate border-style on borderWidth — NOT on\n // borderColor: a node with only a border colour and no width would otherwise get the\n // browser's default `medium` width and show a phantom border. Absent borderWidth = no border.\n if (sp['borderWidth'] && sp['borderStyle'] === undefined) {\n out.push('border-style: solid');\n }\n // Default transition so own/parent hover animates smoothly (parity with the builder).\n if (hasHoverState && sp['transition'] === undefined) {\n out.push('transition: all 0.2s ease');\n }\n // Image defaults reapplied when unset (the config defaults aren't always persisted). height:auto\n // is only a DEFAULT — when the user sets an explicit height (e.g. 100%) it must WIN, so guard it\n // on `sp['height'] === undefined` (matching the builder, which respects a configured height). An\n // unset height + aspect-ratio lets the ratio drive the box.\n if (type === 'Image') {\n if (sp['aspectRatio'] === undefined) out.push('aspect-ratio: 1/1');\n // object-fit is a Size style trait with config default 'cover'; that default isn't persisted,\n // so reapply it here (matching the builder) when the node has none.\n if (sp['objectFit'] === undefined) out.push('object-fit: cover');\n // NOTE: no `height: auto` — when height is unset, `auto` is already the CSS initial value, so\n // emitting it is a pure no-op. A configured height comes through compileDeclarations and wins.\n }\n // Containers default to a positioning context (for absolutely-positioned children). These live\n // in `.iox-node` (not the component `:host`) so an explicit styleProps value always wins.\n if ((type === 'Container' || type === 'Section' || type === 'LinkedContainer') && sp['position'] === undefined) {\n out.push('position: relative');\n }\n // LinkedContainer is an <a> (inline by default) → default it to block so children lay out.\n if (type === 'LinkedContainer' && sp['display'] === undefined) {\n out.push('display: block');\n }\n // An Icon is a single FONT GLYPH, not a paragraph: it must contribute no line-box height of its\n // own (spacing belongs to padding/margin). But every node serialises the Typography group's\n // `lineHeight` default of 1.5, so icons carry `line-height: 1.5` — a 24px glyph then gets a 36px\n // line box and pushes the surrounding layout around.\n //\n // This is emitted UNCONDITIONALLY (not guarded on `undefined`) and callers append render-defaults\n // AFTER the node's own compiled declarations in the SAME rule, so it overrides a stale serialised\n // value for EXISTING icons too — no re-save needed. line-height is inherited, so simply omitting\n // it is not enough: the icon would inherit 1.5 from its container instead.\n if (type === 'Icon') out.push('line-height: 0');\n // An icon's `<i>` must shrink-wrap its glyph so it grows with font-size and doesn't overflow its\n // parent. Phosphor forces `display:inline-flex` on its own class; generated (fantasticon) fonts\n // don't, so the engine's plain `<i class=\"bi-x iox-node-…\">` would fall back to inline and the\n // glyph would overflow. Emit it here (guarded so a user-set display still wins) — mirrors the\n // builder Icon component's `:host{display:inline-flex}`.\n if (type === 'Icon' && sp['display'] === undefined) {\n out.push('display: inline-flex', 'align-items: center', 'justify-content: center');\n }\n return out;\n}\n","// Virtual trait → composed CSS property helpers.\n//\n// Several style traits are \"virtual\" — they don't map 1:1 to a CSS property but\n// are components of a multi-function CSS value. composeVirtualTraits() strips\n// these virtual keys from the style map and replaces them with the correctly\n// composed CSS properties (filter, backdrop-filter, transform, transition).\n//\n// SHARED (iox-ui): consumed by BOTH the builder (render.directive + style panel)\n// and the SSR engine (LayoutRendererService). It MUST live here, not in iox-builder,\n// because the engine does not depend on iox-builder — without it the engine emitted\n// the raw virtual keys (`translate-x`, `filter-blur`, `scale-x`…) as invalid CSS.\n// Run this BEFORE compileDeclarations so the CSS output is identical on both sides.\n\n// ─── Filter ──────────────────────────────────────────────────────────────────\n\nconst FILTER_FUNS: [trait: string, fn: string, def: string][] = [\n ['filterBlur', 'blur', '0px'],\n ['filterBrightness', 'brightness', '1'],\n ['filterContrast', 'contrast', '1'],\n ['filterGrayscale', 'grayscale', '0'],\n ['filterSaturate', 'saturate', '1'],\n ['filterHueRotate', 'hue-rotate', '0deg'],\n ['filterSepia', 'sepia', '0'],\n ['filterInvert', 'invert', '0'],\n];\n\n// ─── Backdrop-filter ─────────────────────────────────────────────────────────\n\nconst BACKDROP_FUNS: [trait: string, fn: string, def: string][] = [\n ['backdropBlur', 'blur', '0px'],\n ['backdropBrightness', 'brightness', '1'],\n ['backdropContrast', 'contrast', '1'],\n ['backdropSaturate', 'saturate', '1'],\n];\n\n// ─── Transform ───────────────────────────────────────────────────────────────\n\nconst TRANSFORM_FUNS: [trait: string, fn: string, def: string][] = [\n ['translateX', 'translateX', '0px'],\n ['translateY', 'translateY', '0px'],\n ['scaleX', 'scaleX', '1'],\n ['scaleY', 'scaleY', '1'],\n ['rotate', 'rotate', '0deg'],\n ['skewX', 'skewX', '0deg'],\n ['skewY', 'skewY', '0deg'],\n];\n\n// ─── ::marker pseudo-element ─────────────────────────────────────────────────\n\nconst MARKER_FUNS: [trait: string, cssProp: string][] = [\n ['markerColor', 'color'],\n ['markerFontSize', 'fontSize'],\n];\n\n// ─── All virtual trait names ──────────────────────────────────────────────────\n\nexport const VIRTUAL_TRAIT_KEYS = new Set<string>([\n ...FILTER_FUNS.map(([t]) => t),\n ...BACKDROP_FUNS.map(([t]) => t),\n ...TRANSFORM_FUNS.map(([t]) => t),\n 'transitionDuration', 'transitionTimingFunction', 'transitionDelay',\n ...MARKER_FUNS.map(([t]) => t),\n]);\n\n// ─── Helpers ─────────────────────────────────────────────────────────────────\n\nfunction buildFns(\n funs: [string, string, string][],\n src: Record<string, any>,\n): string {\n return funs\n .filter(([t,, d]) => src[t] != null && src[t] !== '' && src[t] !== d)\n .map(([t, fn]) => `${fn}(${src[t]})`)\n .join(' ');\n}\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\n/**\n * Strip virtual trait keys from `raw` and emit their composed CSS equivalents.\n *\n * When composing a partial state-override map (hover, active…), pass the full\n * base style map as `base` so non-overridden components (e.g. filterBrightness\n * when only filterBlur is overridden) are preserved in the composed output.\n * When operating on a complete style map, omit `base` — it defaults to `raw`.\n */\nexport function composeVirtualTraits(\n raw: Record<string, any>,\n base: Record<string, any> = raw,\n): Record<string, any> {\n // Copy all non-virtual properties as-is\n const result: Record<string, any> = {};\n for (const [k, v] of Object.entries(raw)) {\n if (!VIRTUAL_TRAIT_KEYS.has(k)) result[k] = v;\n }\n\n // Merge base values for any virtual key absent from the partial override map\n const merged = (funs: [string, string, string][]): Record<string, any> => {\n const m: Record<string, any> = {};\n for (const [t] of funs) m[t] = raw[t] ?? base[t];\n return m;\n };\n\n // filter\n const filterStr = buildFns(FILTER_FUNS, merged(FILTER_FUNS));\n if (filterStr) result['filter'] = filterStr;\n\n // backdrop-filter\n const backdropStr = buildFns(BACKDROP_FUNS, merged(BACKDROP_FUNS));\n if (backdropStr) result['backdropFilter'] = backdropStr;\n\n // transform\n const transformStr = buildFns(TRANSFORM_FUNS, merged(TRANSFORM_FUNS));\n if (transformStr) result['transform'] = transformStr;\n\n // transition — only emit when duration is non-zero\n const dur = raw['transitionDuration'] ?? base['transitionDuration'];\n const ease = raw['transitionTimingFunction'] ?? base['transitionTimingFunction'];\n const del = raw['transitionDelay'] ?? base['transitionDelay'];\n if (dur && ease && dur !== '0ms' && dur !== '0s') {\n const delPart = del && del !== '0ms' && del !== '0s' ? ` ${del}` : '';\n result['transition'] = `all ${dur} ${ease}${delPart}`;\n }\n\n // ::marker pseudo-element — collected into __markerStyles so StyleRegistryService\n // can emit a separate `.iox-node-{id}::marker { … }` rule.\n const markerStyles: Record<string, any> = {};\n for (const [trait, cssProp] of MARKER_FUNS) {\n const val = raw[trait] ?? base[trait];\n if (val != null && val !== '') markerStyles[cssProp] = val;\n }\n if (Object.keys(markerStyles).length) {\n result['__markerStyles'] = markerStyles;\n }\n\n return result;\n}\n","/**\n * Shared data-source resolving pattern — the SINGLE source of truth for how an IoxDataSource\n * becomes a backend fetch, consumed by BOTH the page builder (iox-cms-client bindings panel) and\n * the SSR client engine (iox-client-engine DataSourceResolverService). There must be no second\n * copy of this decision logic; only the transport differs between the two:\n *\n * builder → authenticated org-scoped controllers (admin session):\n * single by id → GET admin.../resources/:type/:id (ContentService.getContentById)\n * collection → GET admin.../resources/:type (ContentService.getContent)\n * engine → @Public() controllers (no auth, isPublished filter applied server-side):\n * single by id → GET api/:type/:id (UserResourcesController)\n * collection → GET api/:type?filters (UserResourcesController)\n *\n * The DECISION (by-id vs collection, which id, which filters, how to pick the single result) is\n * identical for both — that's what this module owns. Each app maps the returned {@link DataSourcePlan}\n * onto its own transport. A single item is ALWAYS fetched by its id as a path segment — never a\n * `?_id=` query — to match the builder's getContentById.\n */\n\nexport type DataSourceMode = 'single' | 'list';\nexport type DataSourceDomain = 'cms' | 'shop';\n\nexport interface DataSourceRouteFilter {\n field?: string;\n routeParam?: string;\n defaultId?: string;\n}\n\nexport interface DataSourceQueryFilter {\n field?: string;\n /** URL query param the value is read from. OMIT for a CONSTANT filter — then `defaultValue`\n * alone is the value, so `isReviewShow=true` filters identically in preview and on the site. */\n queryParam?: string;\n /** Value used when the query param is absent — i.e. always, for a constant filter, and in the\n * builder preview, where there are no live query params. NOT preview-only: it is the runtime\n * fallback too. An empty default with no query-param value means the filter is DROPPED. */\n defaultValue?: string;\n}\n\nexport interface DataSourceRequestSpec {\n contentType?: string;\n limit?: number;\n filterByRouteParam?: DataSourceRouteFilter;\n filterByQueryParams?: DataSourceQueryFilter[];\n}\n\n/** Structural (duck-typed) view of an IoxDataSource — kept free of the editor model so both libs\n * can depend on it without pulling in iox-builder. */\nexport interface DataSourceSpec {\n alias?: string;\n type?: string; // 'cms' | 'shop' | 'external-api' | 'static'\n mode?: DataSourceMode;\n request?: {\n cms?: DataSourceRequestSpec;\n shop?: DataSourceRequestSpec;\n endpoint?: string;\n data?: any;\n /** `derived` alias: a VIEW into another variable — resolve `from` then getByPath(value, path)\n * (e.g. galleryImages = product.gallery). See repeater-binding-ux-plan.md. */\n derived?: { from: string; path: string };\n };\n}\n\nexport type DataSourcePlan =\n | { kind: 'by-id'; domain: DataSourceDomain; resource: string; id: string; mode: DataSourceMode }\n | { kind: 'collection'; domain: DataSourceDomain; resource: string; filter: Record<string, any>; limit?: number; mode: DataSourceMode }\n | { kind: 'external'; endpoint: string; mode: DataSourceMode }\n | { kind: 'static'; data: any; mode: DataSourceMode }\n | { kind: 'derived'; from: string; path: string; mode: DataSourceMode }\n | { kind: 'none' };\n\n/**\n * Match a page route template against an actual path and extract named params.\n * matchRouteParams('/project/:projectId', 'project/68abc') → { projectId: '68abc' }\n * Both sides are normalised (leading slash stripped) and split on '/'; values are URL-decoded.\n */\nexport function matchRouteParams(template: string | undefined, actual: string | undefined): Record<string, string> {\n const t = (template ?? '').replace(/^\\/+/, '').split('/');\n const a = (actual ?? '').replace(/^\\/+/, '').split('/');\n const params: Record<string, string> = {};\n for (let i = 0; i < t.length; i++) {\n const seg = t[i];\n if (seg && seg.startsWith(':')) params[seg.slice(1)] = decodeURIComponent(a[i] ?? '');\n }\n return params;\n}\n\n/**\n * Build the query filter for a data-source request from its filterByRouteParam / filterByQueryParams\n * config. `field` is filtered by the route-param value (falling back to `defaultId`); query filters\n * map each `field` to a query-param value (falling back to `defaultValue`), and a filter with NO\n * `queryParam` is a constant on `defaultValue`. Empty values are omitted so the source isn't\n * accidentally filtered to nothing.\n */\nexport function buildDataSourceFilter(\n req: DataSourceRequestSpec | undefined,\n routeParams: Record<string, any> = {},\n queryParams: Record<string, any> = {},\n): Record<string, any> {\n const params: Record<string, any> = {};\n const byRoute = req?.filterByRouteParam;\n if (byRoute?.field && byRoute?.routeParam) {\n const value = routeParams[byRoute.routeParam] ?? byRoute.defaultId;\n if (value !== undefined && value !== null && value !== '') params[byRoute.field] = value;\n }\n for (const q of req?.filterByQueryParams ?? []) {\n if (!q?.field) continue;\n // No queryParam → a CONSTANT filter: defaultValue is the value, in the builder preview and\n // on the live site alike. With a queryParam the URL wins and defaultValue is the fallback.\n const value = q.queryParam ? (queryParams[q.queryParam] ?? q.defaultValue) : q.defaultValue;\n if (value !== undefined && value !== null && value !== '') params[q.field] = value;\n }\n return params;\n}\n\n/**\n * Mirrors the builder's getContentById decision. When a SINGLE source is filtered by the item id\n * (`_id`) via a route param, the item is fetched by PATH (`.../:type/:id`), not a `?_id=` query.\n * Returns that id (route-param value, else `defaultId`), or `null` when the source isn't a\n * single-by-id fetch — in which case the caller uses the collection endpoint + filters. The\n * path-based form only applies to the id field; a single source filtered by any other field still\n * goes through the collection endpoint.\n */\nexport function resolveSingleItemId(req: DataSourceRequestSpec | undefined, routeParams: Record<string, any> = {}): string | null {\n const byRoute = req?.filterByRouteParam;\n if (!byRoute?.routeParam) return null;\n if (byRoute.field && byRoute.field !== '_id') return null;\n const value = routeParams[byRoute.routeParam] ?? byRoute.defaultId;\n return value !== undefined && value !== null && value !== '' ? String(value) : null;\n}\n\n/**\n * Resolve an IoxDataSource into a transport-agnostic {@link DataSourcePlan}. This is the shared\n * decision both the builder and the SSR engine run; each then executes the plan with its own\n * HTTP layer. Single sources with a route-param id resolve to a `by-id` (path) fetch — exactly like\n * the builder's getContentById.\n */\nexport function planDataSource(\n ds: DataSourceSpec | undefined,\n routeParams: Record<string, any> = {},\n queryParams: Record<string, any> = {},\n): DataSourcePlan {\n const mode: DataSourceMode = ds?.mode === 'single' ? 'single' : 'list';\n switch (ds?.type) {\n case 'cms':\n case 'shop': {\n const domain = ds.type as DataSourceDomain;\n const req = domain === 'cms' ? ds.request?.cms : ds.request?.shop;\n const resource = req?.contentType;\n if (!resource) return { kind: 'none' };\n const id = mode === 'single' ? resolveSingleItemId(req, routeParams) : null;\n if (id) return { kind: 'by-id', domain, resource, id, mode };\n const filter = buildDataSourceFilter(req, routeParams, queryParams);\n const plan: DataSourcePlan = { kind: 'collection', domain, resource, filter, mode };\n if (req?.limit) (plan as any).limit = req.limit;\n return plan;\n }\n case 'external-api': {\n const endpoint = ds.request?.endpoint;\n return endpoint ? { kind: 'external', endpoint, mode } : { kind: 'none' };\n }\n case 'static':\n return { kind: 'static', data: ds.request?.data ?? null, mode };\n case 'derived': {\n const d = ds.request?.derived;\n return d?.from ? { kind: 'derived', from: d.from, path: d.path ?? '', mode } : { kind: 'none' };\n }\n default:\n return { kind: 'none' };\n }\n}\n\n/**\n * Normalise a collection response into the shape a source expects: unwraps `{items}`/`{data}`\n * envelopes, then returns the first item for a `single` source or the whole array for a `list`.\n * A `by-id` response is already the item, so callers pass it through unchanged.\n */\nexport function normalizeCollectionResult(mode: DataSourceMode, data: any): any {\n const items = Array.isArray(data) ? data : (data?.items ?? data?.data ?? []);\n return mode === 'single' ? (items[0] ?? null) : items;\n}\n\n/** Navigate a dot/bracket path into an object, e.g. `gallery`, `details.images`, `variants[0].skus`.\n * Returns undefined if any segment is missing. Kept minimal + self-contained so it is shareable by\n * both the builder and the SSR engine (the two have divergent local `resolvePath` copies). */\nexport function getByPath(obj: any, path: string): any {\n if (obj == null || !path) return obj;\n // Turn `a[0].b` into ['a','0','b'].\n const segments = path.replace(/\\[(\\w+)\\]/g, '.$1').split('.').filter(Boolean);\n let cur = obj;\n for (const seg of segments) {\n if (cur == null) return undefined;\n cur = cur[seg];\n }\n return cur;\n}\n\n/**\n * The array a Repeater (or a repeating Slider) iterates over — the SHARED decision so the builder\n * canvas and the SSR engine agree (see data-source-resolving.md).\n * - No `sourcePath`: the resolved source IS the list. An array passes through; a lone object degrades\n * to a single-row list (back-compat with the old `fetchItems`); null/undefined → `[]`.\n * - With `sourcePath`: the source resolved to a SINGLE resource (e.g. a product); dive into the\n * nested array property (e.g. `gallery`). Non-array / missing → `[]`.\n */\n/**\n * Fill in `derived` aliases in an already-resolved map. Given the data sources and a map of resolved\n * NON-derived values (by alias), compute each `type:'derived'` alias as `getByPath(parent, path)` in\n * dependency order (chains resolved by iterating until stable). Mutates + returns the map. Used by the\n * SSR engine after it resolves the root sources; the builder resolves derived lazily per alias.\n */\nexport function resolveDerivedInto(dataSources: DataSourceSpec[], resolved: Record<string, any>): Record<string, any> {\n const derived = (dataSources ?? []).filter(d => d?.type === 'derived' && !!d.alias);\n let changed = true, guard = 0;\n while (changed && guard++ < 25) {\n changed = false;\n for (const d of derived) {\n if (d.alias! in resolved) continue;\n const from = d.request?.derived?.from;\n if (from && from in resolved) {\n resolved[d.alias!] = getByPath(resolved[from], d.request!.derived!.path ?? '');\n changed = true;\n }\n }\n }\n return resolved;\n}\n\nexport function resolveRepeaterItems(resolved: any, sourcePath?: string | null): any[] {\n if (sourcePath) {\n const nested = getByPath(resolved, sourcePath);\n return Array.isArray(nested) ? nested : [];\n }\n if (Array.isArray(resolved)) return resolved;\n return resolved == null ? [] : [resolved];\n}\n\n/** Base URLs for the PUBLIC content controllers. Both must end with `/`. The builder and the SSR\n * engine pass their own host (they proxy `/api` differently) but MUST target the public\n * (`@Public()`) controllers, never the authed admin ones — data resolving is storefront data. */\nexport interface DataSourceEndpoints {\n /** cms resources, e.g. `${HOST}` (engine, HOST ends `/api/`) or `${HOST}api/` (builder). */\n cmsBase: string;\n /** shop resources, e.g. `${HOST}shop/` (engine) or `${HOST}api/shop/` (builder). */\n shopBase: string;\n}\n\nexport interface DataSourceRequest {\n url: string;\n params: Record<string, any>;\n}\n\n/**\n * Turn a resolved {@link DataSourcePlan} into the concrete public HTTP request (url + params) — the\n * SINGLE place that decides the URL shape, shared by the builder binding preview and the SSR engine\n * so both hit the SAME public endpoints (no admin, no duplication). Returns `null` for `static` /\n * `none` plans (no HTTP call). A single item is a PATH segment (`/:resource/:id`), never `?_id=`.\n */\nexport function dataSourcePlanToRequest(plan: DataSourcePlan, endpoints: DataSourceEndpoints): DataSourceRequest | null {\n const baseFor = (domain: DataSourceDomain) => (domain === 'shop' ? endpoints.shopBase : endpoints.cmsBase);\n switch (plan.kind) {\n case 'by-id':\n return { url: `${baseFor(plan.domain)}${plan.resource}/${encodeURIComponent(plan.id)}`, params: {} };\n case 'collection': {\n const params: Record<string, any> = { ...plan.filter };\n if (plan.limit) params['limit'] = plan.limit;\n return { url: `${baseFor(plan.domain)}${plan.resource}`, params };\n }\n case 'external':\n return { url: plan.endpoint, params: {} };\n default:\n return null;\n }\n}\n","/**\n * Cinematic page-transition presets — the SINGLE SOURCE OF TRUTH shared by the page builder\n * (preview) and the SSR client engine (production). Pure, transport-agnostic: this module only\n * describes WAAPI keyframe pairs + timing/ordering. It never touches the DOM.\n *\n * A page transition plays TWO synchronized WAAPI animations at once — an `out` animation on a\n * snapshot of the outgoing page and an `in` animation on the incoming page — inside a shared\n * `perspective` container, gated on BOTH finishing (the \"cinematic\" feel, à la Codrops\n * PageTransitions). The consumer supplies the DOM (snapshot layer + live page) and calls\n * `element.animate(frames, options)`; it does NOT redefine the frames.\n *\n * @see architecture/builder/page-transitions.md\n */\n\n/** Perspective (px) applied to the transition container unless a preset overrides it. */\nexport const DEFAULT_PAGE_TRANSITION_PERSPECTIVE = 1200;\n\n/**\n * Default transition duration (ms). Deliberately long — a slow, settled transition is most of what\n * makes a page change read as \"premium\"; the same motion at ~400ms feels like a snap.\n */\nexport const DEFAULT_PAGE_TRANSITION_DURATION = 1500;\n\n/**\n * Default easing: a strong symmetric in-out. Paired with the long duration this is the \"smoothness\"\n * — slow to leave, quick through the middle, gentle to settle.\n */\nexport const DEFAULT_PAGE_TRANSITION_EASING = 'cubic-bezier(0.76, 0, 0.24, 1)';\n\n/** Default preset used when a page has no transition configured at all. */\nexport const DEFAULT_PAGE_TRANSITION = 'parallax-up';\n\nexport type PageTransitionCategory = 'parallax' | 'reveal' | 'curtain' | 'move' | 'fade' | 'scale' | 'rotate';\n\nexport interface PageTransitionPreset {\n category: PageTransitionCategory;\n label: string;\n /** Keyframes for the OUTGOING page (played on a fixed snapshot). */\n outKeyframes: Keyframe[];\n /** Keyframes for the INCOMING page. */\n inKeyframes: Keyframe[];\n /** Which layer is stacked on top during the transition. Default: 'in'. */\n ontop?: 'in' | 'out';\n /** `transform-origin` for the outgoing layer (3D hinge effects). */\n outTransformOrigin?: string;\n /** `transform-origin` for the incoming layer. */\n inTransformOrigin?: string;\n /** Override the container perspective (px) for this preset. */\n perspective?: number;\n /** Delay before the OUT animation starts, as a fraction (0..1) of the duration. */\n outDelayRatio?: number;\n /** Delay before the IN animation starts, as a fraction (0..1) of the duration. */\n inDelayRatio?: number;\n /**\n * Optional full-screen overlay panel (curtain / wipe). When present the transition plays as\n * COVER → swap → UNCOVER instead of the two page layers animating against each other: the panel\n * sweeps in to hide the screen, the outgoing page is dropped behind it, then the panel sweeps\n * out to reveal the incoming page. Each half gets HALF the total duration.\n *\n * Trade-off: the swap is hidden, so you lose the \"both pages visible at once\" depth of the\n * parallax family — this is drama rather than spatial continuity.\n */\n overlay?: {\n coverKeyframes: Keyframe[];\n uncoverKeyframes: Keyframe[];\n };\n}\n\n// ── Keyframe helpers ────────────────────────────────────────────────────────\nconst FADE_OUT: Keyframe[] = [{ opacity: 1 }, { opacity: 0 }];\nconst FADE_IN: Keyframe[] = [{ opacity: 0 }, { opacity: 1 }];\n\nconst move = (from: string, to: string): Keyframe[] => [{ transform: from }, { transform: to }];\n\n/** Gentle recede for the outgoing page under a mask/reveal — it stays put but drops back a little,\n * so the page underneath never looks like a frozen screenshot. */\nconst RECEDE_SOFT: Keyframe[] = [\n { transform: 'scale(1)', opacity: 1 },\n { transform: 'scale(0.94)', opacity: 0.6 },\n];\n\n/** Barely-there settle for the incoming page under a curtain — the panel hides most of it, so this\n * only takes the edge off the reveal. Ends at identity (required: IN frames must not persist). */\nconst SETTLE_IN: Keyframe[] = [{ transform: 'scale(1.04)' }, { transform: 'scale(1)' }];\n\n// ── The preset catalog ──────────────────────────────────────────────────────\n// Keyed by a stable preset id persisted in pageSettings.routeAnimation.transition.\nexport const PAGE_TRANSITION_PRESETS: Record<string, PageTransitionPreset> = {\n // ── Parallax (the default family) ──────────────────────────────────────────\n // The outgoing page travels only HALF the distance while shrinking and dimming, so it recedes\n // *behind* the incoming page rather than sliding away. That travel difference (50% vs 100%) is\n // what reads as depth — there is no 3D here at all. Pair with the long default duration.\n 'parallax-up': {\n category: 'parallax', label: 'Parallax up (recommended)',\n outKeyframes: [\n { transform: 'translateY(0) scale(1)', opacity: 1 },\n { transform: 'translateY(-50%) scale(0.8)', opacity: 0.4 },\n ],\n inKeyframes: move('translateY(100%)', 'translateY(0)'),\n ontop: 'in',\n },\n 'parallax-down': {\n category: 'parallax', label: 'Parallax down',\n outKeyframes: [\n { transform: 'translateY(0) scale(1)', opacity: 1 },\n { transform: 'translateY(50%) scale(0.8)', opacity: 0.4 },\n ],\n inKeyframes: move('translateY(-100%)', 'translateY(0)'),\n ontop: 'in',\n },\n 'parallax-left': {\n category: 'parallax', label: 'Parallax left',\n outKeyframes: [\n { transform: 'translateX(0) scale(1)', opacity: 1 },\n { transform: 'translateX(-50%) scale(0.8)', opacity: 0.4 },\n ],\n inKeyframes: move('translateX(100%)', 'translateX(0)'),\n ontop: 'in',\n },\n 'parallax-right': {\n category: 'parallax', label: 'Parallax right',\n outKeyframes: [\n { transform: 'translateX(0) scale(1)', opacity: 1 },\n { transform: 'translateX(50%) scale(0.8)', opacity: 0.4 },\n ],\n inKeyframes: move('translateX(-100%)', 'translateX(0)'),\n ontop: 'in',\n },\n\n // ── Reveal (clip-path) ─────────────────────────────────────────────────────\n // The incoming page is UNMASKED over the outgoing one, which recedes gently behind. No overlay\n // panel is involved — the mask is animated directly on the incoming layer, so this needs no\n // extra DOM. (WAAPI interpolates clip-path only between the SAME shape function with the same\n // number of points — keep each pair consistent.)\n 'circle-reveal': {\n category: 'reveal', label: 'Circle reveal (iris)',\n outKeyframes: RECEDE_SOFT,\n inKeyframes: [\n { clipPath: 'circle(0% at 50% 50%)' },\n { clipPath: 'circle(75% at 50% 50%)' },\n ],\n ontop: 'in',\n },\n 'wipe-right': {\n category: 'reveal', label: 'Wipe → right',\n outKeyframes: RECEDE_SOFT,\n inKeyframes: [{ clipPath: 'inset(0 100% 0 0)' }, { clipPath: 'inset(0 0 0 0)' }],\n ontop: 'in',\n },\n 'wipe-left': {\n category: 'reveal', label: 'Wipe ← left',\n outKeyframes: RECEDE_SOFT,\n inKeyframes: [{ clipPath: 'inset(0 0 0 100%)' }, { clipPath: 'inset(0 0 0 0)' }],\n ontop: 'in',\n },\n 'wipe-down': {\n category: 'reveal', label: 'Wipe ↓ down',\n outKeyframes: RECEDE_SOFT,\n inKeyframes: [{ clipPath: 'inset(0 0 100% 0)' }, { clipPath: 'inset(0 0 0 0)' }],\n ontop: 'in',\n },\n 'wipe-up': {\n category: 'reveal', label: 'Wipe ↑ up',\n outKeyframes: RECEDE_SOFT,\n inKeyframes: [{ clipPath: 'inset(100% 0 0 0)' }, { clipPath: 'inset(0 0 0 0)' }],\n ontop: 'in',\n },\n 'diagonal-wipe': {\n category: 'reveal', label: 'Diagonal wipe',\n outKeyframes: RECEDE_SOFT,\n // 4-point polygons on both ends so WAAPI can interpolate them.\n inKeyframes: [\n { clipPath: 'polygon(0% 0%, 0% 0%, -40% 100%, -40% 100%)' },\n { clipPath: 'polygon(0% 0%, 140% 0%, 100% 100%, -40% 100%)' },\n ],\n ontop: 'in',\n },\n 'inset-reveal': {\n category: 'reveal', label: 'Box reveal (from centre)',\n outKeyframes: RECEDE_SOFT,\n inKeyframes: [{ clipPath: 'inset(50% 50% 50% 50%)' }, { clipPath: 'inset(0 0 0 0)' }],\n ontop: 'in',\n },\n\n // ── Curtain (overlay panel sweeps across, hiding the swap) ────────────────\n // A solid panel covers the screen, the outgoing page is dropped behind it, then the panel\n // sweeps away revealing the incoming page. Colour comes from routeAnimation.curtainColor, or\n // the incoming page's own background.\n 'curtain-up': {\n category: 'curtain', label: 'Curtain up',\n outKeyframes: RECEDE_SOFT, inKeyframes: SETTLE_IN, ontop: 'in',\n overlay: {\n coverKeyframes: move('translateY(100%)', 'translateY(0)'),\n uncoverKeyframes: move('translateY(0)', 'translateY(-100%)'),\n },\n },\n 'curtain-down': {\n category: 'curtain', label: 'Curtain down',\n outKeyframes: RECEDE_SOFT, inKeyframes: SETTLE_IN, ontop: 'in',\n overlay: {\n coverKeyframes: move('translateY(-100%)', 'translateY(0)'),\n uncoverKeyframes: move('translateY(0)', 'translateY(100%)'),\n },\n },\n 'curtain-left': {\n category: 'curtain', label: 'Curtain left',\n outKeyframes: RECEDE_SOFT, inKeyframes: SETTLE_IN, ontop: 'in',\n overlay: {\n coverKeyframes: move('translateX(100%)', 'translateX(0)'),\n uncoverKeyframes: move('translateX(0)', 'translateX(-100%)'),\n },\n },\n 'curtain-right': {\n category: 'curtain', label: 'Curtain right',\n outKeyframes: RECEDE_SOFT, inKeyframes: SETTLE_IN, ontop: 'in',\n overlay: {\n coverKeyframes: move('translateX(-100%)', 'translateX(0)'),\n uncoverKeyframes: move('translateX(0)', 'translateX(100%)'),\n },\n },\n\n // ── Move / Push (both pages travel the full distance, side by side — no overlap) ─────\n 'move-left': {\n category: 'move', label: 'Push left',\n outKeyframes: move('translateX(0)', 'translateX(-100%)'),\n inKeyframes: move('translateX(100%)', 'translateX(0)'),\n },\n 'move-right': {\n category: 'move', label: 'Push right',\n outKeyframes: move('translateX(0)', 'translateX(100%)'),\n inKeyframes: move('translateX(-100%)', 'translateX(0)'),\n },\n 'move-up': {\n category: 'move', label: 'Push up',\n outKeyframes: move('translateY(0)', 'translateY(-100%)'),\n inKeyframes: move('translateY(100%)', 'translateY(0)'),\n },\n 'move-down': {\n category: 'move', label: 'Push down',\n outKeyframes: move('translateY(0)', 'translateY(100%)'),\n inKeyframes: move('translateY(-100%)', 'translateY(0)'),\n },\n\n // ── Fade (incoming sits on top; outgoing dissolves or holds) ───────────────\n 'fade': {\n category: 'fade', label: 'Fade',\n outKeyframes: FADE_OUT, inKeyframes: FADE_IN, ontop: 'in',\n },\n 'fade-from-right': {\n category: 'fade', label: 'Fade / from right',\n outKeyframes: FADE_OUT,\n inKeyframes: [{ transform: 'translateX(100%)', opacity: 0 }, { transform: 'translateX(0)', opacity: 1 }],\n ontop: 'in',\n },\n 'fade-from-left': {\n category: 'fade', label: 'Fade / from left',\n outKeyframes: FADE_OUT,\n inKeyframes: [{ transform: 'translateX(-100%)', opacity: 0 }, { transform: 'translateX(0)', opacity: 1 }],\n ontop: 'in',\n },\n 'fade-from-bottom': {\n category: 'fade', label: 'Fade / from bottom',\n outKeyframes: FADE_OUT,\n inKeyframes: [{ transform: 'translateY(100%)', opacity: 0 }, { transform: 'translateY(0)', opacity: 1 }],\n ontop: 'in',\n },\n\n // ── Scale ──────────────────────────────────────────────────────────────────\n 'scale-down-up': {\n category: 'scale', label: 'Scale down / scale up',\n outKeyframes: [{ transform: 'scale(1)', opacity: 1 }, { transform: 'scale(0.8)', opacity: 0 }],\n inKeyframes: [{ transform: 'scale(1.2)', opacity: 0 }, { transform: 'scale(1)', opacity: 1 }],\n ontop: 'in',\n },\n 'scale-down': {\n category: 'scale', label: 'Scale down / from right',\n outKeyframes: [{ transform: 'scale(1)', opacity: 1 }, { transform: 'scale(0.8)', opacity: 0 }],\n inKeyframes: move('translateX(100%)', 'translateX(0)'),\n ontop: 'in',\n },\n 'scale-up': {\n category: 'scale', label: 'Move to left / scale up',\n outKeyframes: move('translateX(0)', 'translateX(-100%)'),\n inKeyframes: [{ transform: 'scale(0.8)', opacity: 0 }, { transform: 'scale(1)', opacity: 1 }],\n ontop: 'out',\n },\n\n // ── Rotate / 3D (the cinematic \"wow\" family) ───────────────────────────────\n 'flip': {\n category: 'rotate', label: 'Flip',\n outKeyframes: [{ transform: 'rotateY(0deg)', opacity: 1 }, { transform: 'rotateY(-180deg)', opacity: 0 }],\n inKeyframes: [{ transform: 'rotateY(180deg)', opacity: 0 }, { transform: 'rotateY(0deg)', opacity: 1 }],\n outTransformOrigin: '50% 50%', inTransformOrigin: '50% 50%',\n },\n 'cube-left': {\n category: 'rotate', label: 'Cube / to left',\n outKeyframes: [{ transform: 'translateZ(0) rotateY(0deg)', opacity: 1 }, { transform: 'translateZ(-800px) rotateY(-90deg)', opacity: 0.3 }],\n inKeyframes: [{ transform: 'translateZ(-800px) rotateY(90deg)', opacity: 0.3 }, { transform: 'translateZ(0) rotateY(0deg)', opacity: 1 }],\n outTransformOrigin: '50% 50%', inTransformOrigin: '50% 50%',\n },\n 'cube-right': {\n category: 'rotate', label: 'Cube / to right',\n outKeyframes: [{ transform: 'translateZ(0) rotateY(0deg)', opacity: 1 }, { transform: 'translateZ(-800px) rotateY(90deg)', opacity: 0.3 }],\n inKeyframes: [{ transform: 'translateZ(-800px) rotateY(-90deg)', opacity: 0.3 }, { transform: 'translateZ(0) rotateY(0deg)', opacity: 1 }],\n outTransformOrigin: '50% 50%', inTransformOrigin: '50% 50%',\n },\n 'carousel-left': {\n category: 'rotate', label: 'Carousel / to left',\n outKeyframes: [{ transform: 'translateX(0) scale(1)', opacity: 1 }, { transform: 'translateX(-150%) scale(0.4)', opacity: 0.3 }],\n inKeyframes: [{ transform: 'translateX(200%) scale(0.4)', opacity: 0.3 }, { transform: 'translateX(0) scale(1)', opacity: 1 }],\n ontop: 'in',\n },\n 'carousel-right': {\n category: 'rotate', label: 'Carousel / to right',\n outKeyframes: [{ transform: 'translateX(0) scale(1)', opacity: 1 }, { transform: 'translateX(150%) scale(0.4)', opacity: 0.3 }],\n inKeyframes: [{ transform: 'translateX(-200%) scale(0.4)', opacity: 0.3 }, { transform: 'translateX(0) scale(1)', opacity: 1 }],\n ontop: 'in',\n },\n 'fall': {\n category: 'rotate', label: 'Fall',\n outKeyframes: [{ transform: 'translateZ(0) rotateX(0deg)', opacity: 1 }, { transform: 'translateZ(-500px) rotateX(90deg)', opacity: 0 }],\n inKeyframes: FADE_IN,\n outTransformOrigin: '50% 50%', ontop: 'out', inDelayRatio: 0.3,\n },\n 'newspaper': {\n category: 'rotate', label: 'Newspaper',\n outKeyframes: [{ transform: 'scale(1) rotate(0deg)', opacity: 1 }, { transform: 'scale(0) rotate(720deg)', opacity: 0 }],\n inKeyframes: [{ transform: 'scale(0) rotate(-720deg)', opacity: 0 }, { transform: 'scale(1) rotate(0deg)', opacity: 1 }],\n ontop: 'in', inDelayRatio: 0.5,\n },\n 'fold-left': {\n category: 'rotate', label: 'Fold / unfold',\n outKeyframes: [{ transform: 'translateX(0) rotateY(0deg)', opacity: 1 }, { transform: 'translateX(-100%) rotateY(-90deg)', opacity: 0.6 }],\n inKeyframes: [{ transform: 'translateX(100%) rotateY(90deg)', opacity: 0.6 }, { transform: 'translateX(0) rotateY(0deg)', opacity: 1 }],\n outTransformOrigin: '0% 50%', inTransformOrigin: '100% 50%', ontop: 'in',\n },\n 'room-left': {\n category: 'rotate', label: 'Room / to left',\n outKeyframes: [{ transform: 'translateX(0) rotateY(0deg)', opacity: 1 }, { transform: 'translateX(-100%) rotateY(90deg)', opacity: 0.4 }],\n inKeyframes: [{ transform: 'translateX(100%) rotateY(-90deg)', opacity: 0.4 }, { transform: 'translateX(0) rotateY(0deg)', opacity: 1 }],\n outTransformOrigin: '100% 50%', inTransformOrigin: '0% 50%',\n },\n};\n\n// ── \"Feel\" — duration + easing as a named vibe ───────────────────────────────\n// Most authors want to pick a *feeling*, not a bezier. A feel sets duration + easing together;\n// editing either by hand simply falls back to 'custom' (see feelFor).\nexport interface TransitionFeel {\n value: string;\n label: string;\n duration: number;\n easing: string;\n description: string;\n}\n\nexport const TRANSITION_FEELS: TransitionFeel[] = [\n { value: 'calm', label: 'Calm', duration: 1800, easing: 'cubic-bezier(0.33, 1, 0.68, 1)', description: 'Slow and unhurried — editorial, luxury' },\n { value: 'cinematic', label: 'Cinematic', duration: 1500, easing: DEFAULT_PAGE_TRANSITION_EASING, description: 'Long settle with a strong middle — the default' },\n { value: 'smooth', label: 'Smooth', duration: 1200, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', description: 'Quick out of the gate, glides to a stop' },\n { value: 'snappy', label: 'Snappy', duration: 600, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', description: 'Fast and responsive — app-like' },\n { value: 'crazy', label: 'Crazy', duration: 900, easing: 'cubic-bezier(0.68, -0.6, 0.32, 1.6)', description: 'Overshoots and springs back' },\n];\n\n/** The feel matching this duration+easing exactly, else 'custom'. Drives the panel's selector. */\nexport function feelFor(duration: number | string | undefined, easing: string | undefined): string {\n const d = toFiniteNumber(duration, DEFAULT_PAGE_TRANSITION_DURATION);\n const e = easing || DEFAULT_PAGE_TRANSITION_EASING;\n return TRANSITION_FEELS.find(f => f.duration === d && f.easing === e)?.value ?? 'custom';\n}\n\n/** The duration+easing patch for a feel id (undefined for 'custom' / unknown). */\nexport function applyFeel(feel: string): { duration: number; easing: string } | undefined {\n const f = TRANSITION_FEELS.find(x => x.value === feel);\n return f ? { duration: f.duration, easing: f.easing } : undefined;\n}\n\n// ── Two-select UI metadata (category ▾ → transition ▾) ───────────────────────\nexport interface PageTransitionCategoryMeta {\n value: PageTransitionCategory;\n label: string;\n presets: { value: string; label: string }[];\n}\n\n/** Built from PAGE_TRANSITION_PRESETS so the two lists can never drift apart. */\nexport const PAGE_TRANSITION_CATEGORIES: PageTransitionCategoryMeta[] = (() => {\n const order: { value: PageTransitionCategory; label: string }[] = [\n { value: 'parallax', label: 'Smooth (parallax)' },\n { value: 'reveal', label: 'Reveal (mask)' },\n { value: 'curtain', label: 'Curtain (overlay)' },\n { value: 'move', label: 'Push / slide' },\n { value: 'fade', label: 'Fade' },\n { value: 'scale', label: 'Scale' },\n { value: 'rotate', label: 'Rotate / 3D' },\n ];\n return order.map(cat => ({\n ...cat,\n presets: Object.entries(PAGE_TRANSITION_PRESETS)\n .filter(([, p]) => p.category === cat.value)\n .map(([value, p]) => ({ value, label: p.label })),\n }));\n})();\n\n// ── Resolver: preset → concrete WAAPI frames + options ───────────────────────\nexport interface PageTransitionOptions {\n /** Total transition duration (ms). Accepts a numeric string — builder inputs persist strings. */\n duration?: number | string;\n easing?: string;\n /** Container perspective (px); a preset-specific perspective still wins. */\n perspective?: number | string;\n}\n\n/** Coerce a possibly-string / invalid numeric setting to a usable finite, non-negative number. */\nfunction toFiniteNumber(value: unknown, fallback: number): number {\n const n = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(n) && n >= 0 ? n : fallback;\n}\n\nexport interface ResolvedPageTransition {\n outFrames: Keyframe[];\n inFrames: Keyframe[];\n outOptions: KeyframeAnimationOptions;\n inOptions: KeyframeAnimationOptions;\n ontop: 'in' | 'out';\n perspective: number;\n outTransformOrigin?: string;\n inTransformOrigin?: string;\n /** Present only for curtain presets — each half runs for HALF the total duration. */\n overlay?: {\n coverFrames: Keyframe[];\n uncoverFrames: Keyframe[];\n coverOptions: KeyframeAnimationOptions;\n uncoverOptions: KeyframeAnimationOptions;\n };\n}\n\n/**\n * Resolve a persisted preset id + timing into the two WAAPI animations the consumer runs.\n * Returns `null` for unknown / 'none' presets (caller should skip the transition).\n */\nexport function resolvePageTransition(\n name: string | null | undefined,\n opts: PageTransitionOptions = {},\n): ResolvedPageTransition | null {\n if (!name || name === 'none') return null;\n const preset = PAGE_TRANSITION_PRESETS[name];\n if (!preset) return null;\n\n // Builder numeric inputs persist as STRINGS (e.g. duration:\"413\"), and WAAPI throws on a\n // non-numeric `duration` — which silently kills the whole transition. Coerce defensively here,\n // the single point where these values become animation options, so every consumer is protected\n // and already-saved string data keeps working.\n const duration = toFiniteNumber(opts.duration, DEFAULT_PAGE_TRANSITION_DURATION);\n const easing = opts.easing || DEFAULT_PAGE_TRANSITION_EASING;\n const perspective = toFiniteNumber(\n preset.perspective ?? opts.perspective, DEFAULT_PAGE_TRANSITION_PERSPECTIVE,\n );\n\n const clampRatio = (r?: number) => Math.max(0, Math.min(1, r ?? 0));\n const outDelay = clampRatio(preset.outDelayRatio) * duration;\n const inDelay = clampRatio(preset.inDelayRatio) * duration;\n\n return {\n outFrames: preset.outKeyframes,\n inFrames: preset.inKeyframes,\n // OUT plays on a throwaway snapshot → 'both' (hold keyframe[0] during delay, keyframe[last] after).\n outOptions: { duration, easing, delay: outDelay, fill: 'both' },\n // IN plays on the LIVE page host, so it must NOT persist its end state: a lingering `transform`\n // makes that host a containing block for absolutely-positioned descendants, collapsing a\n // `position:absolute; inset:0` page shell (iox-page-component) to 0 height. Every `in` preset\n // ends at identity (translate 0 / scale 1 / opacity 1), so 'backwards' — which only holds\n // keyframe[0] during the delay — is visually identical and leaves no residue.\n inOptions: { duration, easing, delay: inDelay, fill: 'backwards' },\n ontop: preset.ontop ?? 'in',\n perspective,\n outTransformOrigin: preset.outTransformOrigin,\n inTransformOrigin: preset.inTransformOrigin,\n overlay: preset.overlay && {\n coverFrames: preset.overlay.coverKeyframes,\n uncoverFrames: preset.overlay.uncoverKeyframes,\n // Cover and uncover split the total duration; 'both' holds the panel in place between\n // the two halves so the swap is never visible through a gap.\n coverOptions: { duration: duration / 2, easing, fill: 'both' },\n uncoverOptions: { duration: duration / 2, easing, fill: 'both' },\n },\n };\n}\n\n// ── Orchestration timeline (pure ordering / gating decision) ─────────────────\nexport type TransitionPhase = 'leave' | 'transition' | 'enter';\n\nexport interface TransitionTimelineInput {\n /** At least one element on the outgoing page has a `pageLeave` interaction. */\n hasLeave: boolean;\n /** A page transition preset is configured (and not 'none'). */\n hasTransition: boolean;\n /** At least one element on the incoming page has a `pageEnter` interaction. */\n hasEnter: boolean;\n}\n\n/**\n * The ordered phases a navigation runs, given what is present. The order is INVARIANT:\n * every element `leave` animation finishes before the page `transition` starts, and the page\n * `transition` finishes before any element `enter` animation begins. Phases with nothing to\n * play are omitted. The engine iterates this list and `await`s each phase's completion.\n */\nexport function buildTransitionTimeline(input: TransitionTimelineInput): TransitionPhase[] {\n const phases: TransitionPhase[] = [];\n if (input.hasLeave) phases.push('leave');\n if (input.hasTransition) phases.push('transition');\n if (input.hasEnter) phases.push('enter');\n return phases;\n}\n\n// ── Back-compat migration from the legacy single-page route-animation presets ─\n/**\n * Map a legacy `enter` preset (none/fade/slideUp/slideDown/zoomIn/zoomOut/blurIn/flip) to the\n * nearest cinematic paired `transition` id, so pages saved before this system keep animating.\n * Returns 'fade' for anything unmapped, and 'none' for 'none'.\n */\nexport function legacyEnterToTransition(enter: string | null | undefined): string {\n switch (enter) {\n case 'none': return 'none';\n case 'slideUp': return 'fade-from-bottom';\n case 'slideDown': return 'fade';\n case 'zoomIn': return 'scale-down-up';\n case 'zoomOut': return 'scale-down-up';\n case 'blurIn': return 'fade';\n case 'flip': return 'flip';\n case 'fade': return 'fade';\n // Never configured (or an unrecognised value) → the default parallax transition.\n default: return DEFAULT_PAGE_TRANSITION;\n }\n}\n\n/**\n * Resolve the effective transition id for a page's route-animation settings: the explicit\n * `transition` when present, otherwise migrated from the legacy `enter` preset.\n */\nexport function effectiveTransitionId(anim: { transition?: string | null; enter?: string | null } | null | undefined): string {\n if (!anim) return DEFAULT_PAGE_TRANSITION;\n if (anim.transition) return anim.transition;\n return legacyEnterToTransition(anim.enter);\n}\n","/*\n * Public API Surface of iox-ui\n */\n\nexport * from './lib/view-position/view-position.directive';\nexport * from './lib/view-position/view-position.module';\n\nexport * from './lib/iox-aos/iox-aos.directive';\nexport * from './lib/iox-aos/iox-aos-container.component';\nexport * from './lib/iox-aos/iox-aos.service';\nexport * from './lib/iox-aos/iox-aos.module';\n\nexport * from './lib/iox-ui.module';\nexport * from './lib/iox-page/page-component/page-component.component';\nexport * from './lib/iox-page/iox-page.module';\nexport * from './lib/services/page-scroll.provider';\nexport * from './lib/services/component-instance-registry.service';\n\n// CMS client infra\nexport * from './lib/iox-cms-client-infra/cms-client-infra.module';\nexport * from './lib/iox-cms-client-infra/services/consent.service';\nexport * from './lib/iox-cms-client-infra/services/web-settings.service';\nexport * from './lib/iox-cms-client-infra/services/content.service';\nexport * from './lib/iox-cms-client-infra/services/analytics.service';\nexport * from './lib/iox-cms-client-infra/components/privacy/privacy-modal.component';\nexport * from './lib/iox-cms-client-infra/components/privacy/privacy-modal.service';\n\n// Builder components — extracted from iox-cms-client for shared use in builder + client engine\nexport * from './lib/builder-components/builder-tokens';\nexport * from './lib/builder-components/iox-builder-components.module';\nexport * from './lib/builder-components/iox-component-registry.service';\nexport * from './lib/builder-components/image/image.component';\nexport * from './lib/builder-components/spacer/spacer.component';\nexport * from './lib/builder-components/card/card.component';\nexport * from './lib/builder-components/divider/divider.component';\nexport * from './lib/builder-components/icon/icon.component';\nexport * from './lib/builder-components/link/link.component';\nexport * from './lib/builder-components/button/button.component';\nexport * from './lib/builder-components/button-block/button-block.component';\nexport * from './lib/builder-components/heading/heading.component';\nexport * from './lib/builder-components/text/text.component';\nexport * from './lib/builder-components/section/section.component';\nexport * from './lib/builder-components/container/container.component';\nexport * from './lib/builder-components/linked-container/linked-container.component';\nexport * from './lib/builder-components/repeater/repeater.component';\nexport * from './lib/builder-components/slider-container/slider-container.component';\nexport * from './lib/builder-components/slider-slide/slider-slide.component';\nexport * from './lib/builder-components/list/list.component';\nexport * from './lib/builder-components/list-item/list-item.component';\n\nexport * from './lib/style-compiler/style-compiler';\nexport * from './lib/style-compiler/virtual-traits';\nexport * from './lib/data-source/data-source-resolver';\nexport * from './lib/page-transition/page-transition-presets';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AOSService","i1.IoxAnimateContainer","i1.PageScrollProvider","i1.PrivacyModalService","i2.ConsentService","i3","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vectoriox-iox-ui.mjs","sources":["../../../projects/iox-ui/src/lib/view-position/view-position.directive.ts","../../../projects/iox-ui/src/lib/view-position/view-position.module.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos-animations.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos.service.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos-container.component.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos.directive.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos.module.ts","../../../projects/iox-ui/src/lib/services/page-scroll.provider.ts","../../../projects/iox-ui/src/lib/iox-page/page-component/page-component.component.ts","../../../projects/iox-ui/src/lib/iox-page/page-component/page-component.component.html","../../../projects/iox-ui/src/lib/iox-page/iox-page.module.ts","../../../projects/iox-ui/src/lib/iox-ui.module.ts","../../../projects/iox-ui/src/lib/services/component-instance-registry.service.ts","../../../projects/iox-ui/src/lib/iox-cms-client-infra/components/privacy/privacy-modal.service.ts","../../../projects/iox-ui/src/lib/iox-cms-client-infra/services/consent.service.ts","../../../projects/iox-ui/src/lib/iox-cms-client-infra/components/privacy/privacy-modal.component.ts","../../../projects/iox-ui/src/lib/iox-cms-client-infra/components/privacy/privacy-modal.component.html","../../../projects/iox-ui/src/lib/iox-cms-client-infra/services/web-settings.service.ts","../../../projects/iox-ui/src/lib/iox-cms-client-infra/services/content.service.ts","../../../projects/iox-ui/src/lib/iox-cms-client-infra/cms-client-infra.module.ts","../../../projects/iox-ui/src/lib/iox-cms-client-infra/services/analytics.service.ts","../../../projects/iox-ui/src/lib/builder-components/builder-tokens.ts","../../../projects/iox-ui/src/lib/builder-components/image/image.component.ts","../../../projects/iox-ui/src/lib/builder-components/spacer/spacer.component.ts","../../../projects/iox-ui/src/lib/builder-components/card/card.component.ts","../../../projects/iox-ui/src/lib/builder-components/divider/divider.component.ts","../../../projects/iox-ui/src/lib/builder-components/icon/icon.component.ts","../../../projects/iox-ui/src/lib/builder-components/link/link.component.ts","../../../projects/iox-ui/src/lib/builder-components/button/button.component.ts","../../../projects/iox-ui/src/lib/builder-components/heading/heading.component.ts","../../../projects/iox-ui/src/lib/builder-components/text/text.component.ts","../../../projects/iox-ui/src/lib/builder-components/section/section.component.ts","../../../projects/iox-ui/src/lib/builder-components/container/container.component.ts","../../../projects/iox-ui/src/lib/builder-components/linked-container/linked-container.component.ts","../../../projects/iox-ui/src/lib/builder-components/repeater/repeater.component.ts","../../../projects/iox-ui/src/lib/builder-components/button-block/button-block.component.ts","../../../projects/iox-ui/src/lib/builder-components/slider-container/slider-container.component.ts","../../../projects/iox-ui/src/lib/builder-components/slider-slide/slider-slide.component.ts","../../../projects/iox-ui/src/lib/builder-components/list/list.component.ts","../../../projects/iox-ui/src/lib/builder-components/list-item/list-item.component.ts","../../../projects/iox-ui/src/lib/builder-components/iox-builder-components.module.ts","../../../projects/iox-ui/src/lib/builder-components/iox-component-registry.service.ts","../../../projects/iox-ui/src/lib/style-compiler/style-compiler.ts","../../../projects/iox-ui/src/lib/style-compiler/virtual-traits.ts","../../../projects/iox-ui/src/lib/data-source/data-source-resolver.ts","../../../projects/iox-ui/src/lib/data-source/relative-sources.ts","../../../projects/iox-ui/src/lib/page-transition/page-transition-presets.ts","../../../projects/iox-ui/src/public-api.ts","../../../projects/iox-ui/src/vectoriox-iox-ui.ts"],"sourcesContent":["import {AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Input, Output} from '@angular/core';\n\n@Directive({\n selector:'[view-position]',\n standalone: false\n})\n\nexport class ViewPositionDirective implements AfterViewInit{\n\n private _viewPortHighet!:number;\n private _elementHeight!: number;\n private _elementOffseTop!: number;\n private _curterScreen!:number;\n private _halfSscreen!:number;\n \n private _scrollDirection:string= \"Down\";\n private _scrollPos:number = 0;\n public isOnScreen: boolean = false;\n public isHalfScreen: boolean = false;\n \n @Input() data:any\n @Output() onEnter:EventEmitter<any> = new EventEmitter();\n @Output() onLeave:EventEmitter<any> = new EventEmitter();\n @Output() onHalf:EventEmitter<any> = new EventEmitter();\n\n constructor(private _elr:ElementRef){\n this._initScreenDeminitions();\n console.log(`screent highet: ${this._viewPortHighet}`);\n }\n\n\n ngAfterViewInit(): void {\n this._elementOffseTop = this._elr.nativeElement.offsetTop;\n this._elementHeight = this._elr.nativeElement.offsetHeight;\n console.log(`element offset Y = ${this._elementOffseTop}`); \n }\n\n\n @HostListener('window:scroll', ['$event']) onScroll(e: Event): void {\n\n if ((document.body.getBoundingClientRect()).top > this._scrollPos){\n if(this._scrollDirection != \"Up\"){\n this.isHalfScreen =false;\n this._scrollDirection = \"Up\"\n }\n } \n\t else{\n if(this._scrollDirection !=\"Down\"){\n this.isHalfScreen =false;\n this._scrollDirection = \"Down\"\n }\n } \n\t this._scrollPos = (document.body.getBoundingClientRect()).top;\n\n\n let currentClientHight = this._elr.nativeElement.getBoundingClientRect().top;\n if(currentClientHight >= this._viewPortHighet || currentClientHight < -this._elementHeight){\n if(this.isOnScreen){\n this.isOnScreen = false;\n this.onLeave.emit(\"OUT\");\n }\n }else{\n if(!this.isOnScreen){\n this.isOnScreen = true;\n this.onEnter.emit(\"IN\");\n }\n }\n\n if(currentClientHight < this._halfSscreen && currentClientHight > 0 && this._scrollDirection == \"Down\") {\n if(!this.isHalfScreen){\n this.isHalfScreen = true;\n console.log(\"half\")\n this.onHalf.emit(this.data);\n }\n }\n\n if(currentClientHight + this._elementHeight > this._halfSscreen && currentClientHight +this._elementHeight < this._viewPortHighet && this._scrollDirection == \"Up\") {\n if(!this.isHalfScreen){\n this.isHalfScreen = true;\n console.log(\"I am half\")\n this.onHalf.emit(this.data);\n }\n }\n }\n\n @HostListener('window:resize', ['$event']) onResize(e: Event) {\n this._viewPortHighet = window.innerHeight;\n this._initScreenDeminitions();\n }\n \n \n\n private _initScreenDeminitions(){\n this._viewPortHighet = window.innerHeight;\n this._curterScreen = Math.trunc(this._viewPortHighet *0.25);\n this._halfSscreen = Math.trunc(this._viewPortHighet *0.5);\n }\n }","import { NgModule } from '@angular/core';\nimport { ViewPositionDirective } from './view-position.directive';\n\n\n\n@NgModule({\n declarations: [\n ViewPositionDirective\n ],\n imports: [\n ],\n exports: [\n ViewPositionDirective\n ]\n})\nexport class ViewPositionModule { }\n","import { AnimationBuilder, style, animate, keyframes } from '@angular/animations';\n\n/********** Entries Animations ********************/\n\nexport const IoxAnimationStyles: any = {}\n\nIoxAnimationStyles[\"fade-up\"] = (delay:string, duration:string)=>{\n return [style({ opacity: 0, transform: \"translate3d(0,100px,0)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"translateZ(0)\" }))]\n}\n\nIoxAnimationStyles[\"fade-right\"] = (delay:string, duration:string)=>{\n return [style({ opacity: 0, transform: \"translateX(150px)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"translateZ(0)\" }))]\n}\n\nIoxAnimationStyles[\"fade-out-right\"] = (delay:string, duration:string)=>{\n return [style({ opacity: 1, transform: \"translateX(0px)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 0, transform: \"translateX(150px)\" }))]\n}\n\nIoxAnimationStyles[\"fade-left\"] = (delay:string, duration:string)=>{\n return [style({ opacity: 0, transform: \"translateX(-150px)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"translateZ(0)\" }))]\n}\n\nIoxAnimationStyles[\"fade-out-up\"] = (delay:string, duration:string)=>{\n return [ style({ opacity: 1, transform: \"translateZ(0)\" }),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 0, transform: \"translate3d(0,-100px,0)\"}))]\n}\n\nIoxAnimationStyles[\"flip-left\"] = (delay:string, duration:string)=>{\n return [style({opacity: 0,transform: \"perspective(2500px) rotateY(-100deg)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"perspective(2500px) rotateY(0)\" }))]\n}\n\nIoxAnimationStyles[\"flip-up\"] = (delay:string, duration:string)=>{\n return [style({opacity: 0,transform: \"perspective(2500px) rotateX(-100deg)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"perspective(2500px) rotateY(0)\" }))]\n}\n\nIoxAnimationStyles[\"zoom-in-up\"] = (delay:string, duration:string)=>{\n return [style({opacity: 0,transform: \"translate3d(0,100px,0) scale(.6)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"translateZ(0) scale(1)\" }))]\n}","import { Injectable } from \"@angular/core\";\nimport { Observable, Subject } from \"rxjs\";\n\n\n\n@Injectable({providedIn: 'root'})\nexport class AOSService {\n\n\n\n private _scrollOffset:Subject<any> = new Subject();\n public readonly scrollOffset: Observable<any> = this._scrollOffset.asObservable();\n \n constructor() { }\n\n\n updateScrollOffset(offset:any){\n this._scrollOffset.next(offset);\n }\n\n}","import { Component, ElementRef, HostListener, Input, SimpleChanges, ViewChild } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { AOSService } from './iox-aos.service';\n\n@Component({\n selector: \"[ioxAnimateContainer], ioxAnimateContainer\",\n template:`<div class='animate_root_element' #animateRooteElement>\n <ng-content></ng-content>\n </div>`,\n standalone: false\n})\nexport class IoxAnimateContainer {\n\n @Input('kickIn') kickIn = true;\n\n private _scrollOffset:Subject<any> = new Subject();\n public readonly scrollOffset: Observable<any> = this._scrollOffset.asObservable();\n @ViewChild('animateRooteElement') public animateRooteElement:any;\n \n\n constructor(private _element: ElementRef, private _aOSService: AOSService) {\n }\n\n ngAfterViewInit(){\n this.updateOffset();\n }\n\n @HostListener('scroll', ['$event'])\n public onScroll($event:any){\n this.updateOffset();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n console.log(changes);\n if(changes['kickIn'] && changes['kickIn'].currentValue){\n this.updateOffset();\n }\n }\n\n\n private updateOffset(){\n let elClientRect = this.animateRooteElement.nativeElement.getBoundingClientRect();\n this._scrollOffset.next(elClientRect);\n this._aOSService.updateScrollOffset(elClientRect);\n }\n}","import { Directive, OnDestroy, AfterViewInit, ElementRef, Input, OnInit, Renderer2, HostListener, Host, Optional } from \"@angular/core\";\nimport { AnimationBuilder, style, animate, AnimationPlayer } from '@angular/animations';\nimport { IoxAnimationStyles } from \"./iox-aos-animations\"\n;\nimport { IoxAnimateContainer } from \"./iox-aos-container.component\";\n@Directive({\n selector: \"[ioxAnimate], ioxAnimate\",\n standalone: false\n })\n export class IoxAosDirective implements OnDestroy, OnInit, AfterViewInit {\n \n @Input(\"animationDelay\") animationDelay: string =\"\";\n @Input(\"animationIn\") animationIn: string =\"\";\n @Input(\"animationOut\") animationOut: string = \"\";\n @Input(\"animationDuration\") animationDuration: string = \"0.5s\";\n \n // @Input(\"in\")\n // @Input(\"out\")\n\n public animation:AnimationPlayer | any;\n public isAnimationPlayed= false;\n private _elTop:number =0;\n\n\n constructor(@Host() @Optional() private _animateContainer: IoxAnimateContainer, private _element: ElementRef, private _animationBuilder:AnimationBuilder, private _renderer: Renderer2){\n \n this._renderer.setStyle(_element.nativeElement,'opacity', '0');\n }\n\n public ngOnInit(){\n }\n\n public ngAfterViewInit(){\n\n setTimeout(()=>{\n\n this._elTop = this._cumulativeOffset(this._element.nativeElement).top;\n\n if(this._animateContainer){\n if(this._animateContainer.kickIn){\n this.runIfVisiable();\n }else{\n return\n }\n }else{\n this.runIfVisiable();\n }\n\n \n \n },150)\n\n const resizeObserver = new ResizeObserver((entries) =>\n this._elTop = this._cumulativeOffset(this._element.nativeElement).top\n );\n\n resizeObserver.observe(document.body);\n \n if(this._animateContainer){\n this._animateContainer?.scrollOffset.subscribe((offset:any)=>{\n if(this._animateContainer.kickIn){\n this.scrollEventHandler(-1 *offset.top);\n }\n })\n }\n\n \n }\n\n public makeAnimationIn(animationStyle:any):AnimationPlayer{\n let animation = IoxAnimationStyles[animationStyle](this.animationDelay, this.animationDuration);\n const myAnimation = this._animationBuilder.build(animation)\n return myAnimation.create(this._element.nativeElement); \n\n }\n\n private _cumulativeOffset(element:any) {\n var top = 0, left = 0;\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while(element);\n \n return {\n top: top,\n left: left\n };\n };\n\n @HostListener('document:scroll', ['$event']) onScrollEvent($event:any){\n this.scrollEventHandler(window.pageYOffset)\n }\n \n public isVisable(offset:number){\n //console.log(this._elTop >= window.pageYOffset && this._elTop <= window.pageYOffset + window.innerHeight);\n //return this._elTop >= window.pageYOffset && this._elTop <= window.pageYOffset + window.innerHeight;\n return this._elTop >= offset && this._elTop <= offset + window.innerHeight;\n }\n\n\n public scrollEventHandler(offset:number){\n\n if(this._animateContainer && this._animateContainer.kickIn == false){\n return\n }\n\n if(this.isVisable(offset) && !this.isAnimationPlayed){\n let animationStyle = this.animationIn || \"fade-up\";\n this.makeAnimationIn(animationStyle).play();\n this.isAnimationPlayed = true;\n }else if(!this.isVisable(offset) && this.isAnimationPlayed && this.animationOut){\n this.makeAnimationIn(this.animationOut).play();\n this.isAnimationPlayed =false;\n }\n }\n\n public runIfVisiable(){\n if(this.isVisable(window.pageYOffset)){\n let animationStyle = this.animationIn || \"fade-up\";\n this.makeAnimationIn(animationStyle).play();\n this.isAnimationPlayed = true;\n }\n }\n public ngOnDestroy(){\n\n }\n\n }\n\nfunction ViewParent() {\n throw new Error(\"Function not implemented.\");\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { IoxAosDirective } from './iox-aos.directive';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { IoxAnimateContainer } from './iox-aos-container.component';\nimport { AOSService } from './iox-aos.service';\n\n\n@NgModule({\n declarations: [\n IoxAosDirective,\n IoxAnimateContainer\n ],\n imports: [\n BrowserAnimationsModule\n ],\n providers:[\n AOSService\n ],\n exports: [\n IoxAosDirective,\n IoxAnimateContainer\n ]\n})\nexport class IoxAosModule { \n\n static forRoot(): ModuleWithProviders<any> {\n return {\n ngModule: IoxAosModule,\n providers: [AOSService]\n };\n }\n\n}\n","import { Injectable, NgZone, inject } from '@angular/core';\nimport Lenis from 'lenis';\n\n@Injectable()\nexport class PageScrollProvider {\n // inject() (not a ctor param) so subclasses like SsrSafePageScrollProvider keep `super()`.\n private zone = inject(NgZone);\n private lenis?: Lenis;\n private rafId?: number;\n\n init(options?: ConstructorParameters<typeof Lenis>[0]): void {\n if (this.lenis) {\n this.lenis.destroy();\n }\n if (this.rafId != null) {\n cancelAnimationFrame(this.rafId);\n }\n this.lenis = new Lenis(options || {});\n this.startLoop();\n }\n\n scrollTo(y: number, options?: { duration?: number; immediate?: boolean }): void {\n this.instance.scrollTo(y, options);\n }\n\n scrollToTop(options?: { duration?: number; immediate?: boolean }): void {\n this.scrollTo(0, options);\n }\n\n get instance(): Lenis {\n if (!this.lenis) {\n throw new Error('PageScrollProvider: call init() before accessing the instance.');\n }\n return this.lenis;\n }\n\n private startLoop(): void {\n if (!this.lenis) {\n return;\n }\n // Run the perpetual rAF loop OUTSIDE Angular. In-zone, a never-ending requestAnimationFrame\n // keeps ApplicationRef.isStable() permanently false, so SSR hydration never completes\n // (NG0506: \"hydration expected isStable() to emit true ... didn't happen within 10000ms\").\n this.zone.runOutsideAngular(() => {\n const loop = (time: number) => {\n this.lenis!.raf(time);\n this.rafId = requestAnimationFrame(loop);\n };\n this.rafId = requestAnimationFrame(loop);\n });\n }\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, AfterViewInit, OnDestroy } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { PageScrollProvider } from '../../services/page-scroll.provider';\n\n@Component({\n selector: 'iox-page-component',\n templateUrl: './page-component.component.html',\n styleUrls: ['./page-component.component.scss'],\n standalone: false\n})\nexport class IoxPageComponent implements AfterViewInit, OnDestroy {\n @Input() class = '';\n @ViewChild('page') public page!: ElementRef<HTMLDivElement>;\n private scrollSubscription!: Subscription;\n @Output() scrollEvent = new EventEmitter<{\n scrollTop: number;\n scrollLeft: number;\n scrollHeight: number;\n scrollWidth: number;\n clientHeight: number;\n clientWidth: number;\n scrollPercentage: number;\n }>();\n\n constructor(private pageScrollProvider: PageScrollProvider) {}\n\n ngAfterViewInit(): void {\n if (this.page) {\n this.scrollSubscription = fromEvent(this.page.nativeElement, 'scroll').subscribe((event) => {\n this.onScroll(event as Event);\n });\n\n this.pageScrollProvider.init({\n wrapper: this.page.nativeElement,\n content: this.page.nativeElement.querySelector('.page-mask')!,\n duration: 1.2,\n easing: (t: number) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),\n });\n }\n }\n\n onScroll(event: Event): void {\n const target = event.target as HTMLElement;\n const scrollTop = target.scrollTop;\n const scrollLeft = target.scrollLeft;\n const scrollHeight = target.scrollHeight;\n const scrollWidth = target.scrollWidth;\n const clientHeight = target.clientHeight;\n const clientWidth = target.clientWidth;\n const scrollPercentage = (scrollTop / (scrollHeight - clientHeight)) * 100;\n\n this.scrollEvent.emit({ scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth, scrollPercentage });\n }\n\n ngOnDestroy(): void {\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n }\n}\n","<div #page [class]=\"class\" class=\"iox-page-wrapper\">\n <div class=\"page-mask\">\n <ng-content></ng-content>\n </div>\n</div>\n","\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IoxPageComponent } from './page-component/page-component.component';\nimport { PageScrollProvider } from '../services/page-scroll.provider';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [IoxPageComponent],\n exports: [IoxPageComponent],\n providers: [PageScrollProvider]\n})\nexport class IoxPageModule {}\n","import { NgModule } from '@angular/core';\nimport { IoxAosModule } from './iox-aos/iox-aos.module';\nimport { IoxPageModule } from './iox-page/iox-page.module';\n\n\n@NgModule({\n declarations: [],\n imports: [IoxAosModule, IoxPageModule],\n exports: [IoxAosModule, IoxPageModule]\n})\nexport class IoxUiModule { }\n","import { Injectable } from '@angular/core';\n\n/**\n * Holds live component instances by nodeId so interaction engines can call\n * imperative methods (e.g. Swiper.slideNext()) without direct references.\n *\n * Components register on init and unregister on destroy.\n * Used by both InteractionEngineService (builder) and ClientInteractionService (SSR engine).\n */\n@Injectable({ providedIn: 'root' })\nexport class ComponentInstanceRegistryService {\n private _instances = new Map<string, any>();\n\n register(nodeId: string, instance: any): void {\n this._instances.set(nodeId, instance);\n }\n\n unregister(nodeId: string): void {\n this._instances.delete(nodeId);\n }\n\n get(nodeId: string): any {\n return this._instances.get(nodeId);\n }\n}\n","import { Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\nexport enum PrivacyModelEvent {\n OPEN = 1,\n CLOSE = 2\n}\n\n@Injectable()\nexport class PrivacyModalService {\n private modalEvent: Subject<PrivacyModelEvent> = new Subject<PrivacyModelEvent>();\n private decisionSubject: Subject<boolean> | null = null;\n\n constructor() {}\n\n public registerModalEvent(func: Function): void {\n this.modalEvent.subscribe({\n next: (val) => {\n func(val);\n }\n });\n }\n\n public openModal(): Subject<boolean> {\n this.modalEvent.next(PrivacyModelEvent.OPEN);\n this.decisionSubject = new Subject<boolean>();\n return this.decisionSubject;\n }\n\n public closeModal(): void {\n this.modalEvent.next(PrivacyModelEvent.CLOSE);\n }\n\n public notifyDecision(accepted: boolean): void {\n if (this.decisionSubject) {\n this.decisionSubject.next(accepted);\n this.decisionSubject.complete();\n this.decisionSubject = null;\n }\n this.closeModal();\n }\n}","import { Injectable, Injector, Inject } from '@angular/core';\nimport { ENVIRONMENT } from '../cms-client-infra.module';\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpEventType, HttpEvent } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { CookieService } from 'ngx-cookie-service';\nimport { PrivacyModalService } from '../components/privacy/privacy-modal.service';\n\n\n\n@Injectable()\nexport class ConsentService {\n\n\n private readonly WEB_USER = \"webUser\";\n\n constructor(private cookieService: CookieService,\n private httpClient: HttpClient,\n private _privacyModalService: PrivacyModalService,\n @Inject(ENVIRONMENT) public environment: any) {\n }\n\n private hasAnalyticsConsent(): boolean {\n const cookieValue = this.cookieService.get(this.WEB_USER);\n if (!cookieValue) {\n return false;\n }\n\n try {\n const parsedCookieValue = JSON.parse(cookieValue);\n return parsedCookieValue.user?.consent?.analyticsConsent === true;\n } catch {\n // Invalid JSON or unexpected structure: treat as no consent\n return false;\n }\n }\n\n checkAnalyticsConsent(): Observable<boolean> {\n if (this.hasAnalyticsConsent()) {\n // Consent already given, return true immediately as Observable\n return of(true);\n }\n\n // No consent yet (or invalid/missing cookie) -> show modal\n return this._privacyModalService.openModal();\n }\n\n checkMarketingConsent() {\n let cookieValue = this.cookieService.get(this.WEB_USER);\n if (!cookieValue) {\n return false;\n }\n let parsedCookieValue = JSON.parse(cookieValue);\n return parsedCookieValue.user?.consent?.marketingConsent;\n }\n\n setConsent(analytics: boolean, marketing: boolean) {\n let cookieValue = this.cookieService.get(this.WEB_USER);\n let parsedCookieValue = cookieValue ? JSON.parse(cookieValue) : { user: { consent: { \n anonymousId: this.generateAnonymousId() \n } } };\n parsedCookieValue.user.consent.analyticsConsent = analytics;\n parsedCookieValue.user.consent.marketingConsent = marketing;\n this.cookieService.set(this.WEB_USER, JSON.stringify(parsedCookieValue));\n\n this.httpClient.post(`${this.environment.HOST}consent`, parsedCookieValue.user.consent)\n .subscribe({\n next: (response) => {\n console.log('Consent updated successfully:', response);\n },\n error: (error) => {\n console.error('Error updating consent:', error);\n }\n });\n }\n\n private generateAnonymousId() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random() * 16 | 0,\n v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n}","import { Component } from '@angular/core';\nimport { PrivacyModalService, PrivacyModelEvent } from './privacy-modal.service';\nimport { ConsentService } from '../../services/consent.service';\n\n@Component({\n selector: 'privacy-modal',\n templateUrl: './privacy-modal.component.html',\n styleUrls: ['./privacy-modal.component.scss'],\n standalone: false\n})\nexport class PrivacyModalComponent {\n public isOpen: boolean = false;\n constructor(private _privacyModalService: PrivacyModalService,\n private _consentService: ConsentService) {\n this._privacyModalService.registerModalEvent((event: PrivacyModelEvent) => {\n if (event == PrivacyModelEvent.CLOSE) {\n this.isOpen = false;\n } else {\n this.isOpen = true;\n }\n });\n }\n\n onAccept() {\n this._consentService.setConsent(true, true);\n this._privacyModalService.notifyDecision(true);\n this.isOpen = false;\n }\n\n onDecline() {\n this._privacyModalService.notifyDecision(false);\n this.isOpen = false;\n }\n}\n","<div class=\"privacy-modal\" [ngClass]=\"{'open': isOpen, 'closed': !isOpen}\">\n <div class=\"modal-content\">\n <h2>אנחנו שומרים על הפרטיות שלך</h2>\n <p dir=\"rtl\">\n <span>\n אנחנו משמשים בקבצי \n </span>\n <span>Cookies </span>\n <span>כדי לשפר את חווית הגלישה שלך, לנתח שימוש באתר ולהציע תוכן מותאם אישית.</span>\n <span> למידע נוסף על איך אנחנו משתמשים במידע שלך, ראה את <a target=\"_blank\" href=\"/privacy\">מדיניות הפרטיות </a> שלנו</span>\n </p>\n\n <div class=\"button-container\">\n <button class=\"accept-button\" (click)=\"onAccept()\">אני מסכים</button>\n <button class=\"decline-button\" (click)=\"onDecline()\">אני לא מסכים</button>\n </div>\n </div>\n</div>\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpEventType, HttpEvent } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { CookieService } from 'ngx-cookie-service';\nimport { PrivacyModalService } from '../components/privacy/privacy-modal.service';\nimport { ENVIRONMENT } from '../cms-client-infra.module';\n\n\n\n@Injectable()\nexport class WebSettingsService {\n\n constructor(\n private httpClient: HttpClient,\n @Inject(ENVIRONMENT) private environment: any\n ) {\n }\n\n getSettings() {\n // If the server injected a runtime config (window.__APP_CONFIG) use that first,\n // otherwise fall back to the compile-time environment.HOST.\n const runtimeHost = (typeof window !== 'undefined' && (window as any).__APP_CONFIG && (window as any).__APP_CONFIG.HOST) ? (window as any).__APP_CONFIG.HOST : this.environment.HOST;\n return this.httpClient.get(`${runtimeHost}web/settings`);\n }\n\n configArrayToObject(arr: any[]): { [key: string]: any } {\n return arr.reduce((acc, item) => {\n acc[item.key] = item.value;\n return acc;\n }, {});\n }\n\n}","import { Inject, Injectable, Injector } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpEventType, HttpEvent } from '@angular/common/http';\nimport { Observable, pipe, of, from } from 'rxjs';\nimport { filter, map, reduce, retry } from 'rxjs/operators';\nimport { ENVIRONMENT } from '../cms-client-infra.module';\n\n\n\n@Injectable()\nexport class ContentService {\n\n private appContent:any ={};\n\n\n constructor(private httpClient: HttpClient,\n @Inject(ENVIRONMENT) private environment: any\n ) {\n }\n\n getContent(contentName:string,id?:string ) {\n \n if(this.appContent[contentName] && this.appContent[contentName].length){\n\n if(id){\n return of(this.findOne(this.appContent[contentName],id))\n }\n return of(this.appContent[contentName]);\n }\n\n return this.httpClient.get(`${this.environment.HOST}${contentName}`).pipe(map((content:any)=>{\n if(contentName == this.environment.contentResource.SERVICES || contentName == this.environment.contentResource.PROJECTS){\n content = content.map((item: any) =>{\n item.id= item.name.replace(/ /g,\"_\");\n //item._id= item.name.replace(/ /g,\"_\");\n return item;\n })\n }\n this.appContent[contentName] = content;\n if(id){\n return this.findOne(this.appContent[contentName],id)\n }\n return content;\n }));\n }\n\n private findOne(arr:any,id: string){\n for(let i=0; i < arr.length;i++){\n if(arr[i].id == id){\n return arr[i];\n }\n }\n }\n\n}","import { NgModule, ModuleWithProviders, InjectionToken } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CookieService } from 'ngx-cookie-service';\nimport { ConsentService } from './services/consent.service';\nimport { PrivacyModalComponent } from './components/privacy/privacy-modal.component';\nimport { PrivacyModalService } from './components/privacy/privacy-modal.service';\nimport { WebSettingsService } from './services/web-settings.service';\nimport { ContentService } from './services/content.service';\n\nexport const ENVIRONMENT = new InjectionToken<any>('environment');\n\n@NgModule({\n declarations: [\n PrivacyModalComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [PrivacyModalComponent]\n})\nexport class CMSClientInfraModule {\n static forRoot(environment: any): ModuleWithProviders<CMSClientInfraModule> {\n return {\n ngModule: CMSClientInfraModule,\n providers: [\n { provide: ENVIRONMENT, useValue: environment },\n ConsentService,\n ContentService,\n CookieService,\n WebSettingsService,\n PrivacyModalService\n ]\n };\n }\n}\n","import { Injectable, Inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable({ providedIn: 'root' })\nexport class AnalyticsService {\n private gaScriptId = 'google-analytics-script';\n\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {}\n\n applyGoogleAnalytics(appId: string): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n // 1. Establish the dataLayer and the CORRECT gtag function stub\n const win = window as any;\n win.dataLayer = win.dataLayer || [];\n \n // CRITICAL FIX: The Google library requires the special 'arguments' object, \n // NOT a standard array spread [...args]. \n if (!win.gtag) {\n win.gtag = function() {\n win.dataLayer.push(arguments); \n };\n }\n\n // 2. Queue initial commands immediately (even before script loads)\n win.gtag('js', new Date());\n win.gtag('config', appId); \n\n // 3. Load the script if not already present\n if (!document.getElementById(this.gaScriptId)) {\n const script = document.createElement('script');\n script.id = this.gaScriptId;\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtag/js?id=${appId}`;\n \n script.onload = () => {\n console.log('[Analytics] gtag.js script loaded and ready');\n };\n \n script.onerror = (e) => console.error('[Analytics] gtag.js failed to load', e);\n document.head.appendChild(script);\n }\n }\n\n // Helper to send events from your components\n sendEvent(eventName: string, params: object = {}): void {\n if (isPlatformBrowser(this.platformId) && (window as any).gtag) {\n (window as any).gtag('event', eventName, params);\n }\n }\n\n // Synchronous page view sender that won't rely on internal ready Promise\n sendPageView(path: string): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const win = window as any;\n\n try {\n if (win && win.gtag) {\n // Prefer gtag when available\n win.gtag('event', 'page_view', { page_path: path });\n return;\n }\n\n // Fallback: ensure dataLayer exists and push a native arguments-like object\n win.dataLayer = win.dataLayer || [];\n // Use a plain object that resembles gtag's usage if gtag not present\n win.dataLayer.push({ event: 'page_view', page_path: path });\n } catch (err) {\n console.warn('[Analytics] sendPageView failed', err);\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const IS_PREVIEW = new InjectionToken<boolean>('IS_PREVIEW');\n\nexport interface IBuilderEventEmitter {\n emit(type: string, data?: any): void;\n}\n\nexport const IOX_BUILDER_EVENTS = new InjectionToken<IBuilderEventEmitter>('IOX_BUILDER_EVENTS');\n","import { Component, Input } from '@angular/core';\n\n/**\n * Directive-host image: the selector is `img[iox-img]`, so when created dynamically the HOST is\n * the `<img>` itself — NO wrapper element. All styles land on the `<img>` via `.iox-node-{id}`;\n * a single-element (leaf) node has no inner/outer split. See render-parity.md.\n */\n@Component({\n selector: 'img[iox-img]',\n template: '',\n host: {\n '[attr.src]': 'src',\n '[attr.alt]': 'alt',\n '[class]': \"'iox-node-' + nodeId\",\n },\n styles: [':host { display: block; max-width: 100%; }'],\n standalone: false,\n})\nexport class BuilderImageComponent {\n @Input() src = 'https://placehold.co/600x400?text=Image';\n @Input() alt = 'Image';\n @Input() nodeId = '';\n}\n","import { Component, Input } from '@angular/core';\n\n/** Directive-host spacer: the `<div>` IS the host — no wrapper. All styles on `.iox-node`. */\n@Component({\n selector: 'div[iox-spacer]',\n template: '',\n host: { '[class]': \"'iox-spacer iox-node-' + nodeId\" },\n styles: [':host { display: block; flex-shrink: 0; }'],\n standalone: false,\n})\nexport class BuilderSpacerComponent {\n @Input() nodeId = '';\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-card',\n template: `\n <div class=\"card\" [ngClass]=\"'iox-node-' + nodeId\">\n <div class=\"image-wrapper\">\n <img [src]=\"image\" alt=\"Card image\" class=\"card-img\">\n </div>\n <h2>{{ title }}</h2>\n <p>{{ description }}</p>\n </div>\n `,\n styles: [\n '.image-wrapper { width: 100%; aspect-ratio: 1/1; overflow: hidden; margin-bottom: 0.75rem; }',\n '.card-img { width: 100%; height: 100%; object-fit: cover; }',\n 'h2 { margin: 0 0 0.5rem 0; font-size: 1.2rem; }',\n 'p { margin: 0; }',\n ],\n standalone: false,\n})\nexport class CardComponent {\n @Input() title: string = '';\n @Input() image: string = '';\n @Input() description: string = '';\n @Input() nodeId: string = '';\n}\n","import { Component, Input } from '@angular/core';\n\n/** Directive-host divider: the `<div>` IS the host — no wrapper. All styles on `.iox-node`. */\n@Component({\n selector: 'div[iox-divider]',\n template: '',\n host: { '[class]': \"'iox-divider iox-node-' + nodeId\" },\n styles: [':host { display: block; box-sizing: border-box; }'],\n standalone: false,\n})\nexport class BuilderDividerComponent {\n @Input() nodeId = '';\n}\n","import { Component, Input } from '@angular/core';\n\n/** Directive-host icon: the `<i>` IS the host — no wrapper. All styles on `.iox-node`. */\n@Component({\n selector: 'i[iox-icon]',\n template: '',\n host: { '[class]': \"iconClass + ' iox-node-' + nodeId\" },\n // display:inline-flex — the glyph (a font `::before`) becomes a flex item, so the `<i>` box\n // shrink-wraps it and grows with `font-size`. Phosphor forces this on its own class\n // (`[class^=\"ph-\"]{display:inline-flex}`); generated (fantasticon) fonts style only `::before`,\n // so WITHOUT this an `<i>` on a generated font falls back to `display:block; line-height:0` where\n // the glyph OVERFLOWS a collapsed box and never expands its parent (e.g. a ButtonBlock).\n // line-height:0 — an icon is a glyph and must contribute no line-box height of its own (spacing\n // comes from padding/margin). This host style takes precedence over the node's `.iox-node-{id}`\n // rule, so it MUST stay in sync with the Icon branch of renderDefaultDeclarations in the shared\n // style-compiler; if they disagree, this one wins wherever real components are instantiated\n // (builder canvas + the engine's component renderer) and the two renderers silently diverge.\n styles: [':host { display: inline-flex; align-items: center; justify-content: center; line-height: 0; }'],\n standalone: false,\n})\nexport class BuilderIconComponent {\n /** Full Phosphor icon CSS class string, e.g. \"ph-thin ph-star\" */\n @Input() iconClass = 'ph-thin ph-star';\n @Input() nodeId = '';\n}\n","import { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';\nimport { IS_PREVIEW } from '../builder-tokens';\n\n/**\n * Directive-host link: the `<a>` IS the host — no wrapper. Content is the label; styles come from\n * `.iox-node` (the legacy `style` input is kept for builder compat but no longer inline-applied).\n */\n@Component({\n selector: 'a[iox-link]',\n template: `{{ label }}`,\n host: {\n '[attr.href]': \"isPreview ? resolvedHref : null\",\n '[attr.target]': \"isPreview ? target : null\",\n '[style.pointer-events]': \"isPreview ? null : 'none'\",\n '[class]': \"'builder-link iox-node-' + nodeId\",\n '(click)': 'onLinkClick($event)',\n },\n styles: [`:host { display: inline; cursor: pointer; color: inherit; }`],\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BuilderLinkComponent {\n @Input() nodeId: string = '';\n @Input() label = 'Click here';\n @Input() linkType: 'external' | 'page' = 'external';\n @Input() url = 'https://';\n @Input() pageRoute = '';\n @Input() target: '_self' | '_blank' | '_parent' | '_top' = '_self';\n @Input() style: { [key: string]: any } = {};\n\n constructor(@Optional() @Inject(IS_PREVIEW) public isPreview: boolean) {}\n\n get resolvedHref(): string {\n if (this.linkType !== 'page') return this.url || '#';\n return this.pageRoute || '#';\n }\n\n onLinkClick(event: MouseEvent): void {\n if (!this.isPreview) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { IBuilderEventEmitter, IOX_BUILDER_EVENTS } from '../builder-tokens';\n\ninterface EditableNode {\n bindings?: Array<{ prop: string }>;\n traits?: Array<{ name: string; default: any }>;\n}\n\n/**\n * Directive-host button: the `<a>` IS the host — no wrapper. Content is the label; styling comes\n * from `:host` variants + `.iox-node`.\n */\n@Component({\n selector: 'a[iox-button]',\n template: `{{ label }}`,\n host: {\n '[attr.href]': 'link',\n '[class]': \"'builder-btn variant-' + variant + ' iox-node-' + nodeId\",\n '[attr.contenteditable]': \"editing ? 'true' : null\",\n '(dblclick)': 'startEdit($event)',\n '(blur)': 'commitEdit($event)',\n '(keydown)': 'onKeyDown($event)',\n },\n styles: [`\n :host {\n display: inline-block;\n padding: 0.6rem 1.5rem;\n border-radius: 6px;\n font-size: 0.9rem;\n text-decoration: none;\n cursor: pointer;\n text-align: center;\n transition: opacity 0.15s;\n }\n :host.variant-primary { background: #cb9090; color: #fff; border: 1px solid #cb9090; }\n :host.variant-outlined { background: transparent; color: #cb9090; border: 1px solid #cb9090; }\n :host.variant-text { background: transparent; color: #cb9090; border: 1px solid transparent; }\n :host[contenteditable] { outline: 2px solid #cb9090; cursor: text; }\n `],\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BuilderButtonComponent implements OnInit {\n @Input() label = 'Click me';\n @Input() link = '#';\n @Input() variant: 'primary' | 'outlined' | 'text' = 'primary';\n @Input() nodeId: string = '';\n @Input() node: EditableNode | null = null;\n\n public editing = false;\n\n constructor(@Optional() @Inject(IOX_BUILDER_EVENTS) private events: IBuilderEventEmitter | null) {}\n\n ngOnInit(): void {}\n\n startEdit(event: MouseEvent): void {\n if (this.isBound('label')) return;\n event.preventDefault();\n event.stopPropagation();\n this.editing = true;\n setTimeout(() => (event.target as HTMLElement).focus());\n }\n\n commitEdit(event: FocusEvent): void {\n if (!this.editing) return;\n this.editing = false;\n const newValue = (event.target as HTMLElement).innerText.trim();\n this.label = newValue;\n this.syncTraitToPanel('label', newValue);\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n (event.target as HTMLElement).blur();\n }\n if (event.key === 'Escape') {\n this.editing = false;\n (event.target as HTMLElement).blur();\n }\n event.stopPropagation();\n }\n\n private isBound(prop: string): boolean {\n return (this.node?.bindings || []).some(b => b.prop === prop);\n }\n\n private syncTraitToPanel(prop: string, value: string): void {\n if (!this.node || !this.events) return;\n const trait = (this.node.traits || []).find(t => t.name === prop);\n if (trait) { trait.default = value; }\n this.events.emit('elementselect', { node: this.node, componentRef: null });\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { IBuilderEventEmitter, IOX_BUILDER_EVENTS } from '../builder-tokens';\n\ninterface EditableNode {\n bindings?: Array<{ prop: string }>;\n traits?: Array<{ name: string; default: any }>;\n}\n\n/**\n * Directive-host Heading: the real `<h1>`…`<h6>` IS the host — no `app-builder-heading`\n * wrapper, no inner/outer split. The tag is chosen by whoever CREATES the component\n * (engine: `createComponent({ hostElement: document.createElement(level) })`; builder:\n * RenderDirective does the same), NOT by an internal ngSwitch. `level` is kept as an input\n * for that creation logic + serialization. Editing (contenteditable) runs in the builder only.\n */\n@Component({\n selector: 'h1[iox-heading],h2[iox-heading],h3[iox-heading],h4[iox-heading],h5[iox-heading],h6[iox-heading]',\n template: `{{ content }}`,\n host: {\n '[class]': \"'iox-node-' + nodeId\",\n '[attr.contenteditable]': \"editing ? 'true' : null\",\n '(mousedown)': 'onMouseDown($event)',\n '(dblclick)': 'startEdit($event)',\n '(blur)': 'commitEdit($event)',\n '(keydown)': 'onKeyDown($event)',\n },\n // No display/position/color in :host (they'd out-specify styleProps `.iox-node`). Heading tags\n // are block by default; only reset the UA margin + the editing affordances.\n styles: [`:host { margin: 0; } :host[contenteditable] { outline: none; cursor: text; }`],\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BuilderHeadingComponent implements OnInit {\n @Input() content = 'Heading';\n @Input() level: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' = 'h2';\n @Input() nodeId: string = '';\n @Input() node: EditableNode | null = null;\n\n public editing = false;\n\n constructor(\n @Optional() @Inject(IOX_BUILDER_EVENTS) private events: IBuilderEventEmitter | null,\n private cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {}\n\n onMouseDown(event: Event): void {\n if (this.editing) { event.stopPropagation(); }\n }\n\n startEdit(event: Event): void {\n if (this.isBound('content')) return;\n event.stopPropagation();\n this.editing = true;\n this.cdr.detectChanges();\n this.cdr.detach();\n const el = event.target as HTMLElement;\n setTimeout(() => { el.focus(); });\n }\n\n commitEdit(event: FocusEvent): void {\n if (!this.editing) return;\n this.editing = false;\n const newValue = (event.target as HTMLElement).innerText;\n this.content = newValue;\n this.cdr.reattach();\n this.syncTraitToPanel('content', newValue);\n }\n\n onKeyDown(event: Event): void {\n const ke = event as KeyboardEvent;\n if (ke.key === 'Enter' && !ke.shiftKey) {\n event.preventDefault();\n (event.target as HTMLElement).blur();\n }\n if (ke.key === 'Escape') {\n this.editing = false;\n this.cdr.reattach();\n (event.target as HTMLElement).blur();\n }\n event.stopPropagation();\n }\n\n private isBound(prop: string): boolean {\n return (this.node?.bindings || []).some(b => b.prop === prop);\n }\n\n private syncTraitToPanel(prop: string, value: string): void {\n if (!this.node || !this.events) return;\n const trait = (this.node.traits || []).find(t => t.name === prop);\n if (trait) { trait.default = value; }\n this.events.emit('elementselect', { node: this.node, componentRef: null, isCanvasUpdate: true });\n }\n}\n","import { ChangeDetectorRef, Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { IBuilderEventEmitter, IOX_BUILDER_EVENTS } from '../builder-tokens';\n\ninterface EditableNode {\n bindings?: Array<{ prop: string }>;\n traits?: Array<{ name: string; default: any }>;\n}\n\n/**\n * Directive-host Text: the real `<p>`/`<span>` IS the host — no `app-text-block` wrapper,\n * no inner/outer split. The tag is chosen by whoever CREATES the component (engine/builder\n * pass `hostElement`), NOT an internal ngSwitch. Content is rich HTML (Quill) → bound via\n * `[innerHTML]` on the host. Editing (contenteditable) runs in the builder only.\n */\n@Component({\n selector: 'p[iox-text],span[iox-text]',\n template: ``,\n host: {\n '[class]': \"'iox-node-' + nodeId\",\n '[innerHTML]': 'content',\n '[attr.contenteditable]': \"editing ? 'true' : null\",\n '(pointerdown)': 'onPointerDown($event)',\n '(mousedown)': 'onMouseDown($event)',\n '(dblclick)': 'startEdit($event)',\n '(blur)': 'commitEdit($event)',\n '(keydown)': 'onKeyDown($event)',\n '(paste)': 'onPaste($event)',\n },\n // No display/position/color in :host (they'd out-specify styleProps `.iox-node`).\n styles: [`:host { margin: 0; white-space: pre-wrap; } :host[contenteditable] { outline: none; cursor: text; }`],\n standalone: false,\n})\nexport class TextBlockComponent implements OnInit {\n @Input() content = 'Enter text here';\n @Input() tag: 'p' | 'span' = 'p';\n @Input() style: { [key: string]: any } = {};\n @Input() nodeId: string = '';\n @Input() node: EditableNode | null = null;\n\n public editing = false;\n\n constructor(\n @Optional() @Inject(IOX_BUILDER_EVENTS) private events: IBuilderEventEmitter | null,\n private cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {}\n\n onPointerDown(event: Event): void {\n if (this.editing) { event.stopPropagation(); }\n }\n\n onMouseDown(event: Event): void {\n if (this.editing) { event.stopPropagation(); }\n }\n\n startEdit(event: Event): void {\n if (this.isBound('content')) return;\n event.stopPropagation();\n this.editing = true;\n this.cdr.detectChanges();\n this.cdr.detach();\n const el = event.target as HTMLElement;\n el.closest('[data-iox-draggable]')?.setAttribute('data-editing', '');\n setTimeout(() => { el.focus(); });\n }\n\n onPaste(event: Event): void {\n event.preventDefault();\n const plain = (event as ClipboardEvent).clipboardData?.getData('text/plain') ?? '';\n // Insert as plain text so no inline styles from clipboard survive\n document.execCommand('insertText', false, plain);\n }\n\n commitEdit(event: Event): void {\n if (!this.editing) return;\n this.editing = false;\n const el = event.target as HTMLElement;\n el.closest('[data-iox-draggable]')?.removeAttribute('data-editing');\n const newValue = el.innerText;\n this.content = newValue;\n // Explicitly reset to plain text so any pasted HTML nodes are gone\n // before Angular re-renders [innerHTML]\n el.textContent = newValue;\n this.cdr.reattach();\n this.syncTraitToPanel('content', newValue);\n }\n\n onKeyDown(event: Event): void {\n if ((event as KeyboardEvent).key === 'Escape') {\n this.editing = false;\n this.cdr.reattach();\n (event.target as HTMLElement).blur();\n }\n event.stopPropagation();\n }\n\n private isBound(prop: string): boolean {\n return (this.node?.bindings || []).some(b => b.prop === prop);\n }\n\n private syncTraitToPanel(prop: string, value: string): void {\n if (!this.node || !this.events) return;\n const trait = (this.node.traits || []).find(t => t.name === prop);\n if (trait) { trait.default = value; }\n this.events.emit('elementselect', { node: this.node, componentRef: null, isCanvasUpdate: true });\n }\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\n/** Directive-host section: the `<section>` IS the host — no wrapper, no inner/outer split. */\n@Component({\n selector: 'section[iox-section]',\n template: `<ng-container #childrenHost></ng-container>`,\n host: { '[class]': \"'iox-node-' + nodeId\" },\n // No display/position in :host (they'd out-specify styleProps). <section> is block by default.\n styles: [`:host { box-sizing: border-box; }`],\n standalone: false,\n})\nexport class SectionComponent {\n @Input() nodeId = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\n/** Directive-host container: the `<div>` IS the host — no wrapper, no inner/outer split. */\n@Component({\n selector: 'div[iox-container]',\n template: `<ng-container #childrenHost></ng-container>`,\n host: { '[class]': \"'iox-node-' + nodeId\" },\n // No display/position in :host — they'd out-specify styleProps (`.iox-node`). A <div> is block\n // by default; the engine supplies position:relative as a render-default (styleProps overrides).\n styles: [`:host { box-sizing: border-box; }`],\n standalone: false,\n})\nexport class ContainerComponent {\n @Input() nodeId = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n}\n","import { Component, ElementRef, Inject, Input, OnDestroy, OnInit, Optional, ViewChild, ViewContainerRef } from '@angular/core';\nimport { IS_PREVIEW } from '../builder-tokens';\n\n/** Directive-host linked container: the `<a>` IS the host — no wrapper, no inner/outer split. */\n@Component({\n selector: 'a[iox-linked-container]',\n template: `<ng-container #childrenHost></ng-container>`,\n host: {\n '[attr.href]': 'resolvedHref',\n '[attr.target]': 'target',\n '[class]': \"'linked-container-root iox-node-' + nodeId\",\n },\n // No display/position/color in :host (they'd out-specify styleProps). An <a> is inline by\n // default, so the engine supplies display:block + position:relative as render-defaults.\n styles: [`:host { box-sizing: border-box; text-decoration: none; cursor: pointer; }`],\n standalone: false,\n})\nexport class LinkedContainerComponent implements OnInit, OnDestroy {\n @Input() nodeId = '';\n @Input() linkType: 'external' | 'page' = 'external';\n @Input() url = 'https://';\n @Input() pageRoute = '';\n @Input() target: '_self' | '_blank' | '_parent' | '_top' = '_self';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n\n private capturePreventDefault = (e: MouseEvent) => e.preventDefault();\n\n constructor(\n private elRef: ElementRef<HTMLElement>,\n @Optional() @Inject(IS_PREVIEW) private isPreview: boolean,\n ) {}\n\n ngOnInit(): void {\n if (!this.isPreview) {\n this.elRef.nativeElement.addEventListener('click', this.capturePreventDefault, true);\n }\n }\n\n ngOnDestroy(): void {\n if (!this.isPreview) {\n this.elRef.nativeElement.removeEventListener('click', this.capturePreventDefault, true);\n }\n }\n\n get resolvedHref(): string {\n if (this.linkType !== 'page') return this.url || '#';\n return this.pageRoute || '#';\n }\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\n/**\n * Client-engine repeater shell. Data fetching and item expansion are handled\n * by DataSourceResolverService + BindingApplicatorService in the PageResolver\n * before this component is rendered. ClientRenderDirective inserts one child\n * per resolved item into childrenHost.\n */\n@Component({\n selector: 'iox-repeater',\n template: `\n <div class=\"repeater-root\" [ngClass]=\"['iox-node-' + nodeId]\">\n <ng-container #childrenHost></ng-container>\n </div>\n `,\n styles: [`.repeater-root { position: relative; box-sizing: border-box; }`],\n standalone: false,\n})\nexport class ClientRepeaterComponent {\n @Input() nodeId = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\n/**\n * Directive-host ButtonBlock: the real `<a>`/`<button>` IS the host — no `app-button-block`\n * wrapper, no inner/outer split. The tag is chosen by whoever CREATES the component (engine\n * passes `hostElement`: `<a>` when `tag==='a'`, else `<button>`), NOT an internal `*ngIf`.\n * The `iox-btn-block` class (UA resets: inline-flex, color/font inherit, no border) matches the\n * string renderer and lives in the engine's global styles.scss — kept OFF `:host` so styleProps\n * (`.iox-node-{id}`) can override it. Children render into the host via `childrenHost`.\n */\n@Component({\n selector: 'a[iox-button-block],button[iox-button-block]',\n template: `<ng-container #childrenHost></ng-container>`,\n host: {\n '[class]': \"'iox-btn-block iox-node-' + nodeId\",\n '[attr.href]': \"tag === 'a' ? (href || null) : null\",\n '[attr.target]': \"tag === 'a' ? (target || null) : null\",\n '[attr.type]': \"tag === 'a' ? null : type\",\n },\n styles: [`:host { box-sizing: border-box; }`],\n standalone: false,\n})\nexport class ButtonBlockComponent {\n @Input() tag: 'button' | 'a' = 'button';\n @Input() href = '';\n @Input() target: '_self' | '_blank' = '_self';\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input() nodeId = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n}\n","import {\n AfterViewInit,\n Component,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n ViewChild,\n ViewContainerRef,\n inject,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ComponentInstanceRegistryService } from '../../services/component-instance-registry.service';\n\n@Component({\n selector: 'iox-slider-container',\n template: `\n <div class=\"swiper\" [class]=\"'iox-node-' + nodeId\" [attr.dir]=\"dir\" [style.direction]=\"dir\" #swiperEl>\n <div class=\"swiper-wrapper\">\n <ng-container #childrenHost></ng-container>\n </div>\n <div *ngIf=\"enableNavigation\" class=\"swiper-button-prev\"></div>\n <div *ngIf=\"enableNavigation\" class=\"swiper-button-next\"></div>\n <div *ngIf=\"enablePagination\" class=\"swiper-pagination\"></div>\n <div *ngIf=\"enableScrollbar\" class=\"swiper-scrollbar\"></div>\n </div>\n `,\n styles: [`.swiper { width: 100%; height: 100%; box-sizing: border-box; }`],\n standalone: false,\n})\nexport class ClientSliderContainerComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() nodeId = '';\n /** Language (writing) direction. Rendered as the `dir` attribute so it survives SSR and drives\n * Swiper's RTL layout — must match the builder's app-slider-container, which had `dir` while\n * this engine-runtime component did not (RTL showed in the editor but never on the live site). */\n @Input() dir: 'ltr' | 'rtl' = 'ltr';\n @Input() direction: 'horizontal' | 'vertical' = 'horizontal';\n @Input() loop = false;\n @Input() slidesPerView = 1;\n @Input() spaceBetween = 0;\n @Input() speed = 300;\n @Input() effect = 'slide';\n @Input() grabCursor = true;\n @Input() centeredSlides = false;\n @Input() initialSlide = 0;\n @Input() enableNavigation = false;\n @Input() enablePagination = false;\n @Input() enableScrollbar = false;\n @Input() enableAutoplay = false;\n @Input() enableKeyboard = false;\n @Input() enableMousewheel = false;\n @Input() enableZoom = false;\n @Input() enableGrid = false;\n @Input() enableParallax = false;\n @Input() autoplayDelay = 3000;\n @Input() autoplayPauseOnMouseEnter = true;\n @Input() autoplayDisableOnInteraction = false;\n @Input() paginationType: 'bullets' | 'fraction' | 'progressbar' = 'bullets';\n @Input() paginationClickable = true;\n @Input() gridRows = 1;\n @Input() breakpoints = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n\n @ViewChild('swiperEl', { static: true })\n swiperEl!: { nativeElement: HTMLElement };\n\n private _swiper: any = null;\n private instanceRegistry = inject(ComponentInstanceRegistryService);\n\n constructor(@Inject(PLATFORM_ID) private platformId: object) {}\n\n ngOnInit(): void {}\n\n ngAfterViewInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n // Defer so all child slides are rendered first\n requestAnimationFrame(() => this._initSwiper());\n }\n }\n\n ngOnDestroy(): void {\n if (this._swiper) {\n this._swiper.destroy(true, true);\n this._swiper = null;\n this.instanceRegistry.unregister(this.nodeId);\n }\n }\n\n private async _initSwiper(): Promise<void> {\n const el = this.swiperEl?.nativeElement;\n if (!el) return;\n\n const [{ default: Swiper }, swiperModules] = await Promise.all([\n import('swiper'),\n import('swiper/modules'),\n ]);\n\n const {\n Navigation, Pagination, Scrollbar, Autoplay,\n Keyboard, Mousewheel, Zoom, Grid, Parallax,\n EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCards, EffectCreative,\n } = swiperModules as any;\n\n const modules: any[] = [];\n if (this.enableNavigation) modules.push(Navigation);\n if (this.enablePagination) modules.push(Pagination);\n if (this.enableScrollbar) modules.push(Scrollbar);\n if (this.enableAutoplay) modules.push(Autoplay);\n if (this.enableKeyboard) modules.push(Keyboard);\n if (this.enableMousewheel) modules.push(Mousewheel);\n if (this.enableZoom) modules.push(Zoom);\n if (this.enableGrid) modules.push(Grid);\n if (this.enableParallax) modules.push(Parallax);\n\n const effectMap: Record<string, any> = {\n fade: EffectFade, cube: EffectCube, flip: EffectFlip,\n coverflow: EffectCoverflow, cards: EffectCards, creative: EffectCreative,\n };\n if (this.effect !== 'slide' && effectMap[this.effect]) {\n modules.push(effectMap[this.effect]);\n }\n\n const config: Record<string, any> = {\n modules,\n // Swiper reads the container's `dir` attribute, but pass it explicitly so RTL is applied\n // on init regardless of attribute timing.\n dir: this.dir,\n direction: this.direction,\n loop: this.loop,\n slidesPerView: this.slidesPerView,\n spaceBetween: this.spaceBetween,\n speed: this.speed,\n effect: this.effect,\n grabCursor: this.grabCursor,\n centeredSlides: this.centeredSlides,\n initialSlide: this.initialSlide,\n };\n\n if (this.enableNavigation) config['navigation'] = { prevEl: '.swiper-button-prev', nextEl: '.swiper-button-next' };\n if (this.enablePagination) config['pagination'] = { el: '.swiper-pagination', type: this.paginationType, clickable: this.paginationClickable };\n if (this.enableScrollbar) config['scrollbar'] = { el: '.swiper-scrollbar', draggable: true };\n if (this.enableAutoplay) config['autoplay'] = { delay: this.autoplayDelay, pauseOnMouseEnter: this.autoplayPauseOnMouseEnter, disableOnInteraction: this.autoplayDisableOnInteraction };\n if (this.enableGrid && this.gridRows > 1) config['grid'] = { rows: this.gridRows };\n if (this.breakpoints) { try { config['breakpoints'] = JSON.parse(this.breakpoints); } catch { /* ignore */ } }\n\n this._swiper = new Swiper(el, config);\n this.instanceRegistry.register(this.nodeId, this._swiper);\n }\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\n/**\n * Client-engine slide. The HOST element (`iox-slider-slide`) itself carries the\n * `swiper-slide` class so it is a DIRECT child of `.swiper-wrapper` — Swiper only\n * recognises slides that are direct children (the `.swiper-slide` direct-child\n * invariant; see iox-ai-guidance architecture/builder/slider.md). A wrapper div\n * would nest `.swiper-slide` one level too deep and Swiper would ignore the slides.\n *\n * The shared `iox-node-{id}` class is applied to the same host so the page-level\n * CSS rules match (parity with the string renderer / builder).\n */\n@Component({\n selector: 'iox-slider-slide',\n template: `<ng-container #childrenHost></ng-container>`,\n styles: [`:host { display: block; box-sizing: border-box; }`],\n host: { '[class]': `'swiper-slide iox-node-' + nodeId` },\n standalone: false,\n})\nexport class ClientSliderSlideComponent {\n @Input() nodeId = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\n/**\n * Directive-host List: the real `<ul>`/`<ol>` IS the host — no `iox-list` wrapper, no\n * inner/outer split. The tag is chosen by whoever CREATES the component (engine passes\n * `hostElement: document.createElement(htmlTag)`), NOT an internal `*ngIf`. Children render\n * into the host via `childrenHost`. `start`/`reversed` are host attrs (only meaningful on `<ol>`).\n */\n@Component({\n selector: 'ul[iox-list],ol[iox-list]',\n template: `<ng-container #childrenHost></ng-container>`,\n host: {\n '[class]': \"'iox-node-' + nodeId\",\n '[attr.start]': \"htmlTag === 'ol' && start !== '' && start != null ? start : null\",\n '[attr.reversed]': \"htmlTag === 'ol' && reversed ? '' : null\",\n },\n // No display/position in :host (they'd out-specify styleProps). <ul>/<ol> are block by default.\n styles: [`:host { margin: 0; box-sizing: border-box; }`],\n standalone: false,\n})\nexport class ClientListComponent {\n @Input() htmlTag: 'ul' | 'ol' = 'ul';\n @Input() start: string | number = '';\n @Input() reversed = false;\n @Input() nodeId = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\n\n/**\n * Directive-host List item: the real `<li>` IS the host — no `iox-list-item` wrapper, no\n * inner/outer split. Children render into the `<li>` via `childrenHost`. Fixed tag (`<li>`),\n * so the engine creates it with `vcr.createComponent` (no `hostElement` needed).\n */\n@Component({\n selector: 'li[iox-list-item]',\n template: `<ng-container #childrenHost></ng-container>`,\n host: { '[class]': \"'iox-node-' + nodeId\" },\n // No display/position in :host (they'd out-specify styleProps). <li> is list-item by default.\n styles: [`:host { box-sizing: border-box; }`],\n standalone: false,\n})\nexport class ClientListItemComponent {\n @Input() nodeId = '';\n\n @ViewChild('childrenHost', { read: ViewContainerRef, static: true })\n childrenHost!: ViewContainerRef;\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { BuilderImageComponent } from './image/image.component';\nimport { BuilderSpacerComponent } from './spacer/spacer.component';\nimport { CardComponent } from './card/card.component';\nimport { BuilderDividerComponent } from './divider/divider.component';\nimport { BuilderIconComponent } from './icon/icon.component';\nimport { BuilderLinkComponent } from './link/link.component';\nimport { BuilderButtonComponent } from './button/button.component';\nimport { BuilderHeadingComponent } from './heading/heading.component';\nimport { TextBlockComponent } from './text/text.component';\nimport { SectionComponent } from './section/section.component';\nimport { ContainerComponent } from './container/container.component';\nimport { LinkedContainerComponent } from './linked-container/linked-container.component';\nimport { ClientRepeaterComponent } from './repeater/repeater.component';\nimport { ButtonBlockComponent } from './button-block/button-block.component';\nimport { ClientSliderContainerComponent } from './slider-container/slider-container.component';\nimport { ClientSliderSlideComponent } from './slider-slide/slider-slide.component';\nimport { ClientListComponent } from './list/list.component';\nimport { ClientListItemComponent } from './list-item/list-item.component';\n\nconst COMPONENTS = [\n BuilderImageComponent,\n BuilderSpacerComponent,\n CardComponent,\n BuilderDividerComponent,\n BuilderIconComponent,\n BuilderLinkComponent,\n BuilderButtonComponent,\n BuilderHeadingComponent,\n TextBlockComponent,\n SectionComponent,\n ContainerComponent,\n LinkedContainerComponent,\n ClientRepeaterComponent,\n ButtonBlockComponent,\n ClientSliderContainerComponent,\n ClientSliderSlideComponent,\n ClientListComponent,\n ClientListItemComponent,\n];\n\n@NgModule({\n declarations: COMPONENTS,\n imports: [CommonModule],\n exports: COMPONENTS,\n})\nexport class IoxBuilderComponentsModule {}\n","import { Injectable, Type } from '@angular/core';\n\nimport { BuilderImageComponent } from './image/image.component';\nimport { BuilderSpacerComponent } from './spacer/spacer.component';\nimport { CardComponent } from './card/card.component';\nimport { BuilderDividerComponent } from './divider/divider.component';\nimport { BuilderIconComponent } from './icon/icon.component';\nimport { BuilderLinkComponent } from './link/link.component';\nimport { BuilderButtonComponent } from './button/button.component';\nimport { BuilderHeadingComponent } from './heading/heading.component';\nimport { TextBlockComponent } from './text/text.component';\nimport { SectionComponent } from './section/section.component';\nimport { ContainerComponent } from './container/container.component';\nimport { LinkedContainerComponent } from './linked-container/linked-container.component';\nimport { ClientRepeaterComponent } from './repeater/repeater.component';\nimport { ButtonBlockComponent } from './button-block/button-block.component';\nimport { ClientSliderContainerComponent } from './slider-container/slider-container.component';\nimport { ClientSliderSlideComponent } from './slider-slide/slider-slide.component';\nimport { ClientListComponent } from './list/list.component';\nimport { ClientListItemComponent } from './list-item/list-item.component';\n\n/**\n * Single source of truth for the IOX component type → Angular class mapping.\n * Used by the client engine (iox-client-engine) to resolve component classes\n * from IoxLayoutNode.type strings at render time.\n *\n * All 13 builder components are registered here:\n * - Leaf (Phase 2a): Image, Spacer, Card, Divider, Icon\n * - Inline-editable (Phase 2b): Link, Button, Heading, Text\n * - Layout shells (Phase 2c): Section, Container, LinkedContainer\n * - Repeater (Phase 2d): ClientRepeaterComponent\n *\n * Section/Container/LinkedContainer/Repeater expose childrenHost: ViewContainerRef\n * for ClientRenderDirective to insert child components into.\n */\n@Injectable({ providedIn: 'root' })\nexport class IoxComponentRegistryService {\n private readonly map = new Map<string, Type<any>>([\n ['Image', BuilderImageComponent],\n ['Spacer', BuilderSpacerComponent],\n ['Card', CardComponent],\n ['Divider', BuilderDividerComponent],\n ['Icon', BuilderIconComponent],\n ['Link', BuilderLinkComponent],\n ['Button', BuilderButtonComponent],\n ['Heading', BuilderHeadingComponent],\n ['Text', TextBlockComponent],\n ['Section', SectionComponent],\n ['Container', ContainerComponent],\n ['LinkedContainer', LinkedContainerComponent],\n ['Repeater', ClientRepeaterComponent],\n ['ButtonBlock', ButtonBlockComponent],\n ['SliderContainer', ClientSliderContainerComponent],\n ['SliderSlide', ClientSliderSlideComponent],\n ['List', ClientListComponent],\n ['ListItem', ClientListItemComponent],\n ]);\n\n getComponent(type: string): Type<any> | undefined {\n return this.map.get(type);\n }\n\n hasComponent(type: string): boolean {\n return this.map.has(type);\n }\n}\n","/**\n * style-compiler — the SINGLE source of truth for turning a node's style map into\n * CSS declarations. Framework-agnostic (no Angular): consumed by both renderers.\n *\n * - Builder canvas: `StyleRegistryService` (@vectoriox/iox-builder) → live `<style>` tag.\n * - SSR site: `LayoutRendererService` (iox-client-engine) → HTML string CSS.\n *\n * Lives in @vectoriox/iox-ui because BOTH consumers depend on iox-ui (the engine does\n * NOT depend on iox-builder). Keeping it here — not duplicated per renderer — is what\n * prevents the builder and the live site from drifting.\n * See iox-ai-guidance `architecture/builder/render-parity.md`.\n */\n\n/**\n * Rewrite viewport-relative units so they resolve to the simulated canvas dimensions\n * in the builder, and to the real viewport in production.\n *\n * `--preview-vh` / `--preview-vw` are set by BuilderComponent (ResizeObserver +\n * viewport-state subscription). In production those variables are undefined, so the\n * `1vh` / `1vw` fallbacks restore native browser behaviour.\n */\nexport function rewriteViewportUnits(value: string): string {\n return value\n .replace(/(-?\\d*\\.?\\d+)vh/g, 'calc($1 * var(--preview-vh, 1vh))')\n .replace(/(-?\\d*\\.?\\d+)vw/g, 'calc($1 * var(--preview-vw, 1vw))');\n}\n\n/** camelCase style key → kebab-case CSS property. */\nexport function styleKeyToKebab(key: string): string {\n return key.replace(/[A-Z]/g, m => `-${m.toLowerCase()}`);\n}\n\n/**\n * kebab CSS property → the value that equals its CSS initial AND has no UA-stylesheet override for\n * any element the builder renders (div/section/span/i/a/img/h1–h6/p/ul). Emitting these is a pure\n * no-op, so they're dropped to keep the compiled CSS lean (self-describing nodes serialise every\n * trait, many at their default).\n *\n * Deliberately EXCLUDED, because a value equal to the initial can still be meaningful there:\n * - inherited properties (line-height, color, font-family/size/weight, text-align, letter-spacing…)\n * — the value may override an inherited ancestor value.\n * - margin / padding — UA stylesheets set them on h1–h6, p, ul, so `0` depends on a reset.\n * - border-* — the initial `medium` width + interaction with border-style makes it non-trivial.\n */\nconst NOOP_INITIAL_VALUES: Readonly<Record<string, readonly string[]>> = {\n 'width': ['auto'], 'height': ['auto'],\n 'min-width': ['auto'], 'min-height': ['auto'],\n 'max-width': ['none', 'auto'], 'max-height': ['none', 'auto'], // `auto` is invalid for max-* → inert\n 'position': ['static'],\n 'top': ['auto'], 'right': ['auto'], 'bottom': ['auto'], 'left': ['auto'],\n 'opacity': ['1'], 'z-index': ['auto'],\n 'flex-grow': ['0'], 'flex-shrink': ['1'], 'flex-basis': ['auto'],\n 'flex-direction': ['row'], 'flex-wrap': ['nowrap'],\n 'gap': ['0', '0px', 'normal'],\n 'border-radius': ['0', '0px'],\n 'aspect-ratio': ['auto'],\n 'mix-blend-mode': ['normal'],\n 'transform': ['none'], 'box-shadow': ['none'],\n};\n\n/**\n * Style props a type's render-default fully REPLACES. Emitting them would produce a dead\n * declaration that is immediately overridden in the same rule (e.g. an Icon's serialised\n * `lineHeight: 1.5` followed by the forced `line-height: 1`), so callers strip them first via\n * {@link stripSuppressedProps} and let renderDefaultDeclarations supply the real value.\n */\nexport const SUPPRESSED_STYLE_PROPS_BY_TYPE: Readonly<Record<string, readonly string[]>> = {\n // An icon's line box is structurally forced to 1 — see the Icon branch of renderDefaultDeclarations.\n Icon: ['lineHeight'],\n};\n\n/** Remove the style props whose value a type's render-default always overrides. Returns the map\n * unchanged (same reference) when the type suppresses nothing. */\nexport function stripSuppressedProps(type: string, styleProps: Record<string, any>): Record<string, any> {\n const suppressed = SUPPRESSED_STYLE_PROPS_BY_TYPE[type];\n if (!suppressed?.length) return styleProps;\n const out = { ...styleProps };\n for (const key of suppressed) delete out[key];\n return out;\n}\n\n/**\n * Compile a flat, camelCase style map into an array of `\"prop: value\"` CSS\n * declarations (kebab-cased, viewport-units rewritten, empties + no-op initials dropped,\n * optional `!important`). Callers wrap these in whatever selector they emit.\n *\n * @param props Flat camelCase style map.\n * @param importantProps Keys that must carry `!important` (e.g. `position`, to beat\n * Angular's scoped-CSS specificity boost in the builder). A prop forced\n * `!important` is never dropped as a no-op — the `!important` exists to win\n * the cascade, so its value must always be emitted.\n */\nexport function compileDeclarations(\n props: Record<string, any>,\n importantProps?: ReadonlySet<string>,\n): string[] {\n const out: string[] = [];\n for (const [k, v] of Object.entries(props)) {\n if (v === undefined || v === null || v === '') continue;\n const prop = styleKeyToKebab(k);\n const val = rewriteViewportUnits(String(v));\n const isImportant = importantProps?.has(k) ?? false;\n if (!isImportant && NOOP_INITIAL_VALUES[prop]?.includes(val.trim().toLowerCase())) continue;\n out.push(`${prop}: ${val}${isImportant ? ' !important' : ''}`);\n }\n return out;\n}\n\n/**\n * Per-type default `width` that the builder applies from each component's config\n * (NOT persisted in styleProps — see render-parity.md \"saved node is not\n * self-describing\"). The engine has no config classes, so it resolves the same\n * default from THIS map at render time. Keeping the map here (not re-typed in the\n * engine) is the \"shared default map\" decision.\n *\n * ONLY the `100%` container-type defaults live here. Fixed-size config defaults\n * (Card 200px, Image 300px, SliderSlide 33%) are starter placeholders real content\n * almost always overrides — forcing them onto width-less nodes breaks layout.\n */\nexport const DEFAULT_WIDTH_BY_TYPE: Readonly<Record<string, string>> = {\n Container: '100%', Repeater: '100%', SliderContainer: '100%',\n List: '100%', ListItem: '100%', Text: '100%', Divider: '100%', Spacer: '100%',\n // Section, Heading, LinkedContainer, Card, Image, SliderSlide, Button, ButtonBlock,\n // Icon → no forced default (their config defaults are content sizes set explicitly).\n};\n\n/**\n * Extra \"render default\" declarations the builder gets implicitly from live component\n * behaviour, which the engine must re-apply explicitly for parity. Returns `\"prop: value\"`\n * declarations to append AFTER the node's own compiled declarations.\n *\n * @param type Node type (registry key).\n * @param styleProps The node's persisted styleProps.\n * @param hasHoverState Whether the node has a non-empty hover / parent-hover state.\n */\nexport function renderDefaultDeclarations(\n type: string,\n styleProps: Record<string, any>,\n hasHoverState: boolean,\n): string[] {\n const sp = styleProps ?? {};\n const out: string[] = [];\n const isOutOfFlow = sp['position'] === 'fixed' || sp['position'] === 'absolute';\n\n // Container-type default width so it fills its track. Only when width is unset — once a page\n // is saved with fully-resolved styleProps (self-describing nodes), width comes through\n // compileDeclarations and this is a no-op.\n if (sp['width'] === undefined) {\n if (isOutOfFlow) {\n out.push('width: 100%');\n } else if (DEFAULT_WIDTH_BY_TYPE[type]) {\n out.push(`width: ${DEFAULT_WIDTH_BY_TYPE[type]}`);\n }\n }\n // min-width:0 lets container flex children shrink below content and equal-split. Emit it for\n // container types INDEPENDENT of where width came from (styleProps vs the default above) —\n // otherwise a saved page whose width is persisted would lose the equal-split. In the builder the\n // same rule comes from the `.container-child` wrapper; here it lands on `.iox-node` directly.\n if (DEFAULT_WIDTH_BY_TYPE[type] && sp['minWidth'] === undefined && !isOutOfFlow) {\n out.push('min-width: 0');\n }\n // A border only renders when there is a WIDTH. Gate border-style on borderWidth — NOT on\n // borderColor: a node with only a border colour and no width would otherwise get the\n // browser's default `medium` width and show a phantom border. Absent borderWidth = no border.\n if (sp['borderWidth'] && sp['borderStyle'] === undefined) {\n out.push('border-style: solid');\n }\n // Default transition so own/parent hover animates smoothly (parity with the builder).\n if (hasHoverState && sp['transition'] === undefined) {\n out.push('transition: all 0.2s ease');\n }\n // Image defaults reapplied when unset (the config defaults aren't always persisted). height:auto\n // is only a DEFAULT — when the user sets an explicit height (e.g. 100%) it must WIN, so guard it\n // on `sp['height'] === undefined` (matching the builder, which respects a configured height). An\n // unset height + aspect-ratio lets the ratio drive the box.\n if (type === 'Image') {\n if (sp['aspectRatio'] === undefined) out.push('aspect-ratio: 1/1');\n // object-fit is a Size style trait with config default 'cover'; that default isn't persisted,\n // so reapply it here (matching the builder) when the node has none.\n if (sp['objectFit'] === undefined) out.push('object-fit: cover');\n // NOTE: no `height: auto` — when height is unset, `auto` is already the CSS initial value, so\n // emitting it is a pure no-op. A configured height comes through compileDeclarations and wins.\n }\n // Containers default to a positioning context (for absolutely-positioned children). These live\n // in `.iox-node` (not the component `:host`) so an explicit styleProps value always wins.\n if ((type === 'Container' || type === 'Section' || type === 'LinkedContainer') && sp['position'] === undefined) {\n out.push('position: relative');\n }\n // LinkedContainer is an <a> (inline by default) → default it to block so children lay out.\n if (type === 'LinkedContainer' && sp['display'] === undefined) {\n out.push('display: block');\n }\n // An Icon is a single FONT GLYPH, not a paragraph: it must contribute no line-box height of its\n // own (spacing belongs to padding/margin). But every node serialises the Typography group's\n // `lineHeight` default of 1.5, so icons carry `line-height: 1.5` — a 24px glyph then gets a 36px\n // line box and pushes the surrounding layout around.\n //\n // This is emitted UNCONDITIONALLY (not guarded on `undefined`) and callers append render-defaults\n // AFTER the node's own compiled declarations in the SAME rule, so it overrides a stale serialised\n // value for EXISTING icons too — no re-save needed. line-height is inherited, so simply omitting\n // it is not enough: the icon would inherit 1.5 from its container instead.\n if (type === 'Icon') out.push('line-height: 0');\n // An icon's `<i>` must shrink-wrap its glyph so it grows with font-size and doesn't overflow its\n // parent. Phosphor forces `display:inline-flex` on its own class; generated (fantasticon) fonts\n // don't, so the engine's plain `<i class=\"bi-x iox-node-…\">` would fall back to inline and the\n // glyph would overflow. Emit it here (guarded so a user-set display still wins) — mirrors the\n // builder Icon component's `:host{display:inline-flex}`.\n if (type === 'Icon' && sp['display'] === undefined) {\n out.push('display: inline-flex', 'align-items: center', 'justify-content: center');\n }\n return out;\n}\n","// Virtual trait → composed CSS property helpers.\n//\n// Several style traits are \"virtual\" — they don't map 1:1 to a CSS property but\n// are components of a multi-function CSS value. composeVirtualTraits() strips\n// these virtual keys from the style map and replaces them with the correctly\n// composed CSS properties (filter, backdrop-filter, transform, transition).\n//\n// SHARED (iox-ui): consumed by BOTH the builder (render.directive + style panel)\n// and the SSR engine (LayoutRendererService). It MUST live here, not in iox-builder,\n// because the engine does not depend on iox-builder — without it the engine emitted\n// the raw virtual keys (`translate-x`, `filter-blur`, `scale-x`…) as invalid CSS.\n// Run this BEFORE compileDeclarations so the CSS output is identical on both sides.\n\n// ─── Filter ──────────────────────────────────────────────────────────────────\n\nconst FILTER_FUNS: [trait: string, fn: string, def: string][] = [\n ['filterBlur', 'blur', '0px'],\n ['filterBrightness', 'brightness', '1'],\n ['filterContrast', 'contrast', '1'],\n ['filterGrayscale', 'grayscale', '0'],\n ['filterSaturate', 'saturate', '1'],\n ['filterHueRotate', 'hue-rotate', '0deg'],\n ['filterSepia', 'sepia', '0'],\n ['filterInvert', 'invert', '0'],\n];\n\n// ─── Backdrop-filter ─────────────────────────────────────────────────────────\n\nconst BACKDROP_FUNS: [trait: string, fn: string, def: string][] = [\n ['backdropBlur', 'blur', '0px'],\n ['backdropBrightness', 'brightness', '1'],\n ['backdropContrast', 'contrast', '1'],\n ['backdropSaturate', 'saturate', '1'],\n];\n\n// ─── Transform ───────────────────────────────────────────────────────────────\n\nconst TRANSFORM_FUNS: [trait: string, fn: string, def: string][] = [\n ['translateX', 'translateX', '0px'],\n ['translateY', 'translateY', '0px'],\n ['scaleX', 'scaleX', '1'],\n ['scaleY', 'scaleY', '1'],\n ['rotate', 'rotate', '0deg'],\n ['skewX', 'skewX', '0deg'],\n ['skewY', 'skewY', '0deg'],\n];\n\n// ─── ::marker pseudo-element ─────────────────────────────────────────────────\n\nconst MARKER_FUNS: [trait: string, cssProp: string][] = [\n ['markerColor', 'color'],\n ['markerFontSize', 'fontSize'],\n];\n\n// ─── All virtual trait names ──────────────────────────────────────────────────\n\nexport const VIRTUAL_TRAIT_KEYS = new Set<string>([\n ...FILTER_FUNS.map(([t]) => t),\n ...BACKDROP_FUNS.map(([t]) => t),\n ...TRANSFORM_FUNS.map(([t]) => t),\n 'transitionDuration', 'transitionTimingFunction', 'transitionDelay',\n ...MARKER_FUNS.map(([t]) => t),\n]);\n\n// ─── Helpers ─────────────────────────────────────────────────────────────────\n\nfunction buildFns(\n funs: [string, string, string][],\n src: Record<string, any>,\n): string {\n return funs\n .filter(([t,, d]) => src[t] != null && src[t] !== '' && src[t] !== d)\n .map(([t, fn]) => `${fn}(${src[t]})`)\n .join(' ');\n}\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\n/**\n * Strip virtual trait keys from `raw` and emit their composed CSS equivalents.\n *\n * When composing a partial state-override map (hover, active…), pass the full\n * base style map as `base` so non-overridden components (e.g. filterBrightness\n * when only filterBlur is overridden) are preserved in the composed output.\n * When operating on a complete style map, omit `base` — it defaults to `raw`.\n */\nexport function composeVirtualTraits(\n raw: Record<string, any>,\n base: Record<string, any> = raw,\n): Record<string, any> {\n // Copy all non-virtual properties as-is\n const result: Record<string, any> = {};\n for (const [k, v] of Object.entries(raw)) {\n if (!VIRTUAL_TRAIT_KEYS.has(k)) result[k] = v;\n }\n\n // Merge base values for any virtual key absent from the partial override map\n const merged = (funs: [string, string, string][]): Record<string, any> => {\n const m: Record<string, any> = {};\n for (const [t] of funs) m[t] = raw[t] ?? base[t];\n return m;\n };\n\n // filter\n const filterStr = buildFns(FILTER_FUNS, merged(FILTER_FUNS));\n if (filterStr) result['filter'] = filterStr;\n\n // backdrop-filter\n const backdropStr = buildFns(BACKDROP_FUNS, merged(BACKDROP_FUNS));\n if (backdropStr) result['backdropFilter'] = backdropStr;\n\n // transform\n const transformStr = buildFns(TRANSFORM_FUNS, merged(TRANSFORM_FUNS));\n if (transformStr) result['transform'] = transformStr;\n\n // transition — only emit when duration is non-zero\n const dur = raw['transitionDuration'] ?? base['transitionDuration'];\n const ease = raw['transitionTimingFunction'] ?? base['transitionTimingFunction'];\n const del = raw['transitionDelay'] ?? base['transitionDelay'];\n if (dur && ease && dur !== '0ms' && dur !== '0s') {\n const delPart = del && del !== '0ms' && del !== '0s' ? ` ${del}` : '';\n result['transition'] = `all ${dur} ${ease}${delPart}`;\n }\n\n // ::marker pseudo-element — collected into __markerStyles so StyleRegistryService\n // can emit a separate `.iox-node-{id}::marker { … }` rule.\n const markerStyles: Record<string, any> = {};\n for (const [trait, cssProp] of MARKER_FUNS) {\n const val = raw[trait] ?? base[trait];\n if (val != null && val !== '') markerStyles[cssProp] = val;\n }\n if (Object.keys(markerStyles).length) {\n result['__markerStyles'] = markerStyles;\n }\n\n return result;\n}\n","/**\n * Shared data-source resolving pattern — the SINGLE source of truth for how an IoxDataSource\n * becomes a backend fetch, consumed by BOTH the page builder (iox-cms-client bindings panel) and\n * the SSR client engine (iox-client-engine DataSourceResolverService). There must be no second\n * copy of this decision logic; only the transport differs between the two:\n *\n * builder → authenticated org-scoped controllers (admin session):\n * single by id → GET admin.../resources/:type/:id (ContentService.getContentById)\n * collection → GET admin.../resources/:type (ContentService.getContent)\n * engine → @Public() controllers (no auth, isPublished filter applied server-side):\n * single by id → GET api/:type/:id (UserResourcesController)\n * collection → GET api/:type?filters (UserResourcesController)\n *\n * The DECISION (by-id vs collection, which id, which filters, how to pick the single result) is\n * identical for both — that's what this module owns. Each app maps the returned {@link DataSourcePlan}\n * onto its own transport. A single item is ALWAYS fetched by its id as a path segment — never a\n * `?_id=` query — to match the builder's getContentById.\n */\n\nexport type DataSourceMode = 'single' | 'list';\nexport type DataSourceDomain = 'cms' | 'shop';\n\nexport interface DataSourceRouteFilter {\n field?: string;\n routeParam?: string;\n defaultId?: string;\n}\n\nexport interface DataSourceQueryFilter {\n field?: string;\n /** URL query param the value is read from. OMIT for a CONSTANT filter — then `defaultValue`\n * alone is the value, so `isReviewShow=true` filters identically in preview and on the site. */\n queryParam?: string;\n /** Value used when the query param is absent — i.e. always, for a constant filter, and in the\n * builder preview, where there are no live query params. NOT preview-only: it is the runtime\n * fallback too. An empty default with no query-param value means the filter is DROPPED. */\n defaultValue?: string;\n}\n\nexport interface DataSourceRequestSpec {\n contentType?: string;\n limit?: number;\n filterByRouteParam?: DataSourceRouteFilter;\n filterByQueryParams?: DataSourceQueryFilter[];\n}\n\n/** Structural (duck-typed) view of an IoxDataSource — kept free of the editor model so both libs\n * can depend on it without pulling in iox-builder. */\nexport interface DataSourceSpec {\n alias?: string;\n type?: string; // 'cms' | 'shop' | 'external-api' | 'static'\n mode?: DataSourceMode;\n request?: {\n cms?: DataSourceRequestSpec;\n shop?: DataSourceRequestSpec;\n endpoint?: string;\n data?: any;\n /** `derived` alias: a VIEW into another variable — resolve `from` then getByPath(value, path)\n * (e.g. galleryImages = product.gallery). See repeater-binding-ux-plan.md. */\n derived?: { from: string; path: string };\n };\n}\n\nexport type DataSourcePlan =\n | { kind: 'by-id'; domain: DataSourceDomain; resource: string; id: string; mode: DataSourceMode }\n | { kind: 'collection'; domain: DataSourceDomain; resource: string; filter: Record<string, any>; limit?: number; mode: DataSourceMode }\n | { kind: 'external'; endpoint: string; mode: DataSourceMode }\n | { kind: 'static'; data: any; mode: DataSourceMode }\n | { kind: 'derived'; from: string; path: string; mode: DataSourceMode }\n | { kind: 'none' };\n\n/**\n * Match a page route template against an actual path and extract named params.\n * matchRouteParams('/project/:projectId', 'project/68abc') → { projectId: '68abc' }\n * Both sides are normalised (leading slash stripped) and split on '/'; values are URL-decoded.\n */\nexport function matchRouteParams(template: string | undefined, actual: string | undefined): Record<string, string> {\n const t = (template ?? '').replace(/^\\/+/, '').split('/');\n const a = (actual ?? '').replace(/^\\/+/, '').split('/');\n const params: Record<string, string> = {};\n for (let i = 0; i < t.length; i++) {\n const seg = t[i];\n if (seg && seg.startsWith(':')) params[seg.slice(1)] = decodeURIComponent(a[i] ?? '');\n }\n return params;\n}\n\n/**\n * Build the query filter for a data-source request from its filterByRouteParam / filterByQueryParams\n * config. `field` is filtered by the route-param value (falling back to `defaultId`); query filters\n * map each `field` to a query-param value (falling back to `defaultValue`), and a filter with NO\n * `queryParam` is a constant on `defaultValue`. Empty values are omitted so the source isn't\n * accidentally filtered to nothing.\n */\nexport function buildDataSourceFilter(\n req: DataSourceRequestSpec | undefined,\n routeParams: Record<string, any> = {},\n queryParams: Record<string, any> = {},\n): Record<string, any> {\n const params: Record<string, any> = {};\n const byRoute = req?.filterByRouteParam;\n if (byRoute?.field && byRoute?.routeParam) {\n const value = routeParams[byRoute.routeParam] ?? byRoute.defaultId;\n if (value !== undefined && value !== null && value !== '') params[byRoute.field] = value;\n }\n for (const q of req?.filterByQueryParams ?? []) {\n if (!q?.field) continue;\n // No queryParam → a CONSTANT filter: defaultValue is the value, in the builder preview and\n // on the live site alike. With a queryParam the URL wins and defaultValue is the fallback.\n const value = q.queryParam ? (queryParams[q.queryParam] ?? q.defaultValue) : q.defaultValue;\n if (value !== undefined && value !== null && value !== '') params[q.field] = value;\n }\n return params;\n}\n\n/**\n * Mirrors the builder's getContentById decision. When a SINGLE source is filtered by the item id\n * (`_id`) via a route param, the item is fetched by PATH (`.../:type/:id`), not a `?_id=` query.\n * Returns that id (route-param value, else `defaultId`), or `null` when the source isn't a\n * single-by-id fetch — in which case the caller uses the collection endpoint + filters. The\n * path-based form only applies to the id field; a single source filtered by any other field still\n * goes through the collection endpoint.\n */\nexport function resolveSingleItemId(req: DataSourceRequestSpec | undefined, routeParams: Record<string, any> = {}): string | null {\n const byRoute = req?.filterByRouteParam;\n if (!byRoute?.routeParam) return null;\n if (byRoute.field && byRoute.field !== '_id') return null;\n const value = routeParams[byRoute.routeParam] ?? byRoute.defaultId;\n return value !== undefined && value !== null && value !== '' ? String(value) : null;\n}\n\n/**\n * Resolve an IoxDataSource into a transport-agnostic {@link DataSourcePlan}. This is the shared\n * decision both the builder and the SSR engine run; each then executes the plan with its own\n * HTTP layer. Single sources with a route-param id resolve to a `by-id` (path) fetch — exactly like\n * the builder's getContentById.\n */\nexport function planDataSource(\n ds: DataSourceSpec | undefined,\n routeParams: Record<string, any> = {},\n queryParams: Record<string, any> = {},\n): DataSourcePlan {\n const mode: DataSourceMode = ds?.mode === 'single' ? 'single' : 'list';\n switch (ds?.type) {\n case 'cms':\n case 'shop': {\n const domain = ds.type as DataSourceDomain;\n const req = domain === 'cms' ? ds.request?.cms : ds.request?.shop;\n const resource = req?.contentType;\n if (!resource) return { kind: 'none' };\n const id = mode === 'single' ? resolveSingleItemId(req, routeParams) : null;\n if (id) return { kind: 'by-id', domain, resource, id, mode };\n const filter = buildDataSourceFilter(req, routeParams, queryParams);\n const plan: DataSourcePlan = { kind: 'collection', domain, resource, filter, mode };\n if (req?.limit) (plan as any).limit = req.limit;\n return plan;\n }\n case 'external-api': {\n const endpoint = ds.request?.endpoint;\n return endpoint ? { kind: 'external', endpoint, mode } : { kind: 'none' };\n }\n case 'static':\n return { kind: 'static', data: ds.request?.data ?? null, mode };\n case 'derived': {\n const d = ds.request?.derived;\n return d?.from ? { kind: 'derived', from: d.from, path: d.path ?? '', mode } : { kind: 'none' };\n }\n default:\n return { kind: 'none' };\n }\n}\n\n/**\n * Normalise a collection response into the shape a source expects: unwraps `{items}`/`{data}`\n * envelopes, then returns the first item for a `single` source or the whole array for a `list`.\n * A `by-id` response is already the item, so callers pass it through unchanged.\n */\nexport function normalizeCollectionResult(mode: DataSourceMode, data: any): any {\n const items = Array.isArray(data) ? data : (data?.items ?? data?.data ?? []);\n return mode === 'single' ? (items[0] ?? null) : items;\n}\n\n/** Navigate a dot/bracket path into an object, e.g. `gallery`, `details.images`, `variants[0].skus`.\n * Returns undefined if any segment is missing. Kept minimal + self-contained so it is shareable by\n * both the builder and the SSR engine (the two have divergent local `resolvePath` copies). */\nexport function getByPath(obj: any, path: string): any {\n if (obj == null || !path) return obj;\n // Turn `a[0].b` into ['a','0','b'].\n const segments = path.replace(/\\[(\\w+)\\]/g, '.$1').split('.').filter(Boolean);\n let cur = obj;\n for (const seg of segments) {\n if (cur == null) return undefined;\n cur = cur[seg];\n }\n return cur;\n}\n\n/**\n * The array a Repeater (or a repeating Slider) iterates over — the SHARED decision so the builder\n * canvas and the SSR engine agree (see data-source-resolving.md).\n * - No `sourcePath`: the resolved source IS the list. An array passes through; a lone object degrades\n * to a single-row list (back-compat with the old `fetchItems`); null/undefined → `[]`.\n * - With `sourcePath`: the source resolved to a SINGLE resource (e.g. a product); dive into the\n * nested array property (e.g. `gallery`). Non-array / missing → `[]`.\n */\n/**\n * Fill in `derived` aliases in an already-resolved map. Given the data sources and a map of resolved\n * NON-derived values (by alias), compute each `type:'derived'` alias as `getByPath(parent, path)` in\n * dependency order (chains resolved by iterating until stable). Mutates + returns the map. Used by the\n * SSR engine after it resolves the root sources; the builder resolves derived lazily per alias.\n */\nexport function resolveDerivedInto(dataSources: DataSourceSpec[], resolved: Record<string, any>): Record<string, any> {\n const derived = (dataSources ?? []).filter(d => d?.type === 'derived' && !!d.alias);\n let changed = true, guard = 0;\n while (changed && guard++ < 25) {\n changed = false;\n for (const d of derived) {\n if (d.alias! in resolved) continue;\n const from = d.request?.derived?.from;\n if (from && from in resolved) {\n resolved[d.alias!] = getByPath(resolved[from], d.request!.derived!.path ?? '');\n changed = true;\n }\n }\n }\n return resolved;\n}\n\nexport function resolveRepeaterItems(resolved: any, sourcePath?: string | null): any[] {\n if (sourcePath) {\n const nested = getByPath(resolved, sourcePath);\n return Array.isArray(nested) ? nested : [];\n }\n if (Array.isArray(resolved)) return resolved;\n return resolved == null ? [] : [resolved];\n}\n\n// ── Referenced data sources (shared: builder-save + SSR resolve) ─────────────────────────────────\n// Which data-source aliases a node tree uses, so a consumer resolves ONLY what a page/global needs\n// (not the whole org library). Used by cms-client (persist globals' sources) and the SSR engine\n// (resolve the referenced subset per page). See org-data-sources-plan.md.\n\n/** Aliases referenced anywhere in a node tree: a repeater/slider `source` (a `bindings` entry with\n * `prop === 'source'`, or `props.source` for the slider) plus every binding's `source`. */\nexport function collectReferencedAliases(nodes: any[], acc: Set<string> = new Set<string>()): Set<string> {\n for (const n of nodes ?? []) {\n for (const b of n?.bindings ?? []) { if (b?.source) acc.add(b.source); }\n if (n?.props?.source) acc.add(n.props.source);\n if (n?.children?.length) collectReferencedAliases(n.children, acc);\n }\n return acc;\n}\n\n/** The subset of `all` whose `alias` is referenced by `nodes` (shallow — direct references only). */\nexport function referencedDataSources(nodes: any[], all: any[]): any[] {\n const aliases = collectReferencedAliases(nodes);\n return (all ?? []).filter(ds => aliases.has(ds?.alias));\n}\n\n/** Like `referencedDataSources`, but also pulls in the DERIVED dependencies (transitively): a\n * referenced `derived` alias needs its `request.derived.from` source resolved too, even though the\n * layout never names the parent directly. Use this when RESOLVING (the engine) so derived views\n * don't resolve to nothing. */\nexport function referencedDataSourcesDeep(nodes: any[], all: any[]): any[] {\n const byAlias = new Map((all ?? []).map(d => [d?.alias, d]));\n const wanted = collectReferencedAliases(nodes);\n const queue = [...wanted];\n while (queue.length) {\n const ds: any = byAlias.get(queue.pop() as string);\n const from = ds?.request?.derived?.from;\n if (from && !wanted.has(from)) { wanted.add(from); queue.push(from); }\n }\n return (all ?? []).filter(d => wanted.has(d?.alias));\n}\n\n/** Base URLs for the PUBLIC content controllers. Both must end with `/`. The builder and the SSR\n * engine pass their own host (they proxy `/api` differently) but MUST target the public\n * (`@Public()`) controllers, never the authed admin ones — data resolving is storefront data. */\nexport interface DataSourceEndpoints {\n /** cms resources, e.g. `${HOST}` (engine, HOST ends `/api/`) or `${HOST}api/` (builder). */\n cmsBase: string;\n /** shop resources, e.g. `${HOST}shop/` (engine) or `${HOST}api/shop/` (builder). */\n shopBase: string;\n}\n\nexport interface DataSourceRequest {\n url: string;\n params: Record<string, any>;\n}\n\n/**\n * Turn a resolved {@link DataSourcePlan} into the concrete public HTTP request (url + params) — the\n * SINGLE place that decides the URL shape, shared by the builder binding preview and the SSR engine\n * so both hit the SAME public endpoints (no admin, no duplication). Returns `null` for `static` /\n * `none` plans (no HTTP call). A single item is a PATH segment (`/:resource/:id`), never `?_id=`.\n */\nexport function dataSourcePlanToRequest(plan: DataSourcePlan, endpoints: DataSourceEndpoints): DataSourceRequest | null {\n const baseFor = (domain: DataSourceDomain) => (domain === 'shop' ? endpoints.shopBase : endpoints.cmsBase);\n switch (plan.kind) {\n case 'by-id':\n return { url: `${baseFor(plan.domain)}${plan.resource}/${encodeURIComponent(plan.id)}`, params: {} };\n case 'collection': {\n const params: Record<string, any> = { ...plan.filter };\n if (plan.limit) params['limit'] = plan.limit;\n return { url: `${baseFor(plan.domain)}${plan.resource}`, params };\n }\n case 'external':\n return { url: plan.endpoint, params: {} };\n default:\n return null;\n }\n}\n","/**\n * Shared RELATIVE (route-context) data resolving — the SINGLE source of truth for how a detail page\n * derives values FROM its current route item, consumed by BOTH the page builder (iox-cms-client) and\n * the SSR client engine (iox-client-engine). Companion to `data-source-resolver.ts`.\n *\n * These are the pure, transport-agnostic pieces behind the Route binding scope\n * (`$route` / `$current` / `$siblings` / `$related`). Resolution is a DEPENDENT SECOND PASS: the\n * consumer resolves `$current` first (the existing single by-id fetch via `planDataSource`), then\n * calls these to derive the relative values — there is NO new `DataSourcePlan` kind (`$related` still\n * feeds a normal `collection` plan built from {@link buildRelatedFilter}). See\n * `architecture/builder/relative-data-sources-plan.md`.\n *\n * There must be no second copy of this decision logic; only the transport (which HTTP layer fetches\n * the ordered collection / related list) differs between the two consumers.\n */\n\nimport { getByPath } from './data-source-resolver';\n\n/** Aliases in the Route scope are platform-owned and start with this prefix; a USER alias may never\n * start with it, which keeps the Route scope structurally collision-proof with Local/Global. Used to\n * validate new/renamed aliases and to render the reserved (read-only) item state in the bind picker. */\nexport const RESERVED_ALIAS_PREFIX = '$';\n\n/** True for a platform-owned Route-scope alias (`$route`, `$current`, `$siblings`, `$related`, …). */\nexport function isReservedAlias(alias: string | null | undefined): boolean {\n return typeof alias === 'string' && alias.startsWith(RESERVED_ALIAS_PREFIX);\n}\n\n/** The `$siblings` value: the current item's neighbours within an ordered set. */\nexport interface SiblingsResult<T = any> {\n /** The item before the current one (`null` at the start, unless `wrap`). */\n prev: T | null;\n /** The item after the current one (`null` at the end, unless `wrap`). */\n next: T | null;\n /** Zero-based position of the current item in the ordered set; `-1` when not found. */\n index: number;\n /** Total items in the set. */\n count: number;\n /** `true` when the current item is the first in the set. */\n isFirst: boolean;\n /** `true` when the current item is the last in the set. */\n isLast: boolean;\n}\n\nexport interface ResolveSiblingsOptions {\n /** Field identifying the current item within the list. Default `_id`. */\n idField?: string;\n /** Dot/bracket path to sort by BEFORE locating neighbours (e.g. `order`, `date`). Omit to use the\n * list's existing order. The same item neighbours differently per ordering, so this is the one\n * choice `$siblings` requires. */\n sortBy?: string;\n /** Sort direction when `sortBy` is set. Default `asc`. */\n sortDir?: 'asc' | 'desc';\n /** Wrap around the ends (`last.next` → first, `first.prev` → last). Only applies when `count > 1`.\n * Default `false`. */\n wrap?: boolean;\n}\n\nconst EMPTY_SIBLINGS: SiblingsResult = { prev: null, next: null, index: -1, count: 0, isFirst: false, isLast: false };\n\n/** Generic, deterministic comparator: numbers numerically, Dates by time, everything else by\n * locale-aware string compare (ISO date strings sort correctly this way). Nullish sorts first. */\nfunction compareValues(a: any, b: any): number {\n if (a == null && b == null) return 0;\n if (a == null) return -1;\n if (b == null) return 1;\n if (typeof a === 'number' && typeof b === 'number') return a - b;\n const da = a instanceof Date ? a.getTime() : NaN;\n const db = b instanceof Date ? b.getTime() : NaN;\n if (!isNaN(da) && !isNaN(db)) return da - db;\n return String(a).localeCompare(String(b));\n}\n\n/**\n * Locate the current item within an ordered set and return its neighbours + position. Pure: the input\n * list is never mutated (sorting works on a shallow copy). `currentId` is compared to each item's\n * `idField` via string equality (route-param values are strings). When the current id isn't found,\n * `index` is `-1` and `prev`/`next` are `null` (but `count` still reflects the set size).\n */\nexport function resolveSiblings<T = any>(\n items: T[] | null | undefined,\n currentId: string | number | null | undefined,\n options: ResolveSiblingsOptions = {},\n): SiblingsResult<T> {\n const list = Array.isArray(items) ? items.slice() : [];\n const count = list.length;\n if (count === 0) return { ...EMPTY_SIBLINGS };\n\n const idField = options.idField ?? '_id';\n if (options.sortBy) {\n const dir = options.sortDir === 'desc' ? -1 : 1;\n list.sort((a, b) => dir * compareValues(getByPath(a, options.sortBy!), getByPath(b, options.sortBy!)));\n }\n\n const cid = currentId == null ? null : String(currentId);\n const index = cid == null ? -1 : list.findIndex(it => String(getByPath(it, idField)) === cid);\n if (index === -1) return { prev: null, next: null, index: -1, count, isFirst: false, isLast: false };\n\n const canWrap = !!options.wrap && count > 1;\n const prev = index > 0 ? list[index - 1] : (canWrap ? list[count - 1] : null);\n const next = index < count - 1 ? list[index + 1] : (canWrap ? list[0] : null);\n return { prev, next, index, count, isFirst: index === 0, isLast: index === count - 1 };\n}\n\nexport interface BuildRelatedFilterOptions {\n /** Field(s) on the current item whose value(s) the related items must match (e.g. `category`,\n * or `['category', 'brand']`). Each contributes an equality filter on that field. */\n matchFields: string | string[];\n}\n\n/** A value usable as an equality filter param: a non-empty scalar. Objects/arrays/nullish are skipped\n * so a related query isn't built from an unresolved rel object (surfaced as a config issue in the UI\n * rather than silently matching everything). Multi-value match is a v2 concern. */\nfunction isScalarFilterValue(v: any): boolean {\n if (v == null) return false;\n if (typeof v === 'string') return v !== '';\n if (typeof v === 'number') return Number.isFinite(v);\n return typeof v === 'boolean';\n}\n\n/**\n * Build the collection filter for `$related` from the resolved current item: an equality match on\n * each `matchField`'s value (e.g. same `category`). Feeds a normal `collection` plan — no new plan\n * kind. Fields whose value is not a scalar (or is empty) are omitted, matching\n * `buildDataSourceFilter`'s \"don't over-filter\" rule. Exclude-self is applied to the RESULT via\n * {@link excludeSelf} (the public query controllers are equality-only, so it can't be a `$ne` param).\n */\nexport function buildRelatedFilter(current: any, options: BuildRelatedFilterOptions): Record<string, any> {\n const fields = Array.isArray(options.matchFields) ? options.matchFields : [options.matchFields];\n const filter: Record<string, any> = {};\n for (const field of fields) {\n if (!field) continue;\n const value = getByPath(current, field);\n if (isScalarFilterValue(value)) filter[field] = value;\n }\n return filter;\n}\n\n/**\n * Drop the current item from a list by `idField` (default `_id`). Used to exclude self from a\n * `$related` result after fetch. A nullish/empty `currentId` leaves the list unchanged.\n */\nexport function excludeSelf<T = any>(items: T[] | null | undefined, currentId: string | number | null | undefined, idField = '_id'): T[] {\n if (!Array.isArray(items)) return [];\n if (currentId == null || currentId === '') return items;\n const cid = String(currentId);\n return items.filter(it => String(getByPath(it, idField)) !== cid);\n}\n\n/** The resolved Route-scope context bound values read from (`$route.projectId`, `$current.title`,\n * `$siblings.next`, `$related`). Assembled by each consumer during its dependent second pass. */\nexport interface RouteContext {\n /** Route path params for the current URL (from `matchRouteParams`). */\n $route: Record<string, string>;\n /** The resolved current item (the page's single by-id source). */\n $current: any;\n /** Neighbours of the current item within a chosen ordered set. */\n $siblings?: SiblingsResult;\n /** Items related to the current one (same-attribute), excluding self. */\n $related?: any[];\n}\n\n// ── Relative source declaration + the shared second-pass resolver ────────────────────────────────\n// A relative source is declared like a `derived` one (`type:'relative'`), and resolved AFTER the\n// root/derived sources by a PURE pass over the resolved map — mirroring `resolveDerivedInto`, so the\n// SSR engine and the builder canvas agree with no forked logic. `planDataSource` returns `none` for\n// it (not fetched); each consumer excludes `relative` from its fetched roots and runs this pass.\n\nexport type RelativeSourceKind = 'route' | 'current' | 'siblings' | 'related';\n\nexport interface RelativeSourceSpec {\n kind: RelativeSourceKind;\n /** The source alias this derives from: for `current` the subject single-source; for\n * `siblings`/`related` the COLLECTION alias to locate within / search. Unused for `route`. */\n from?: string;\n /** `siblings`/`related`: the SUBJECT source alias (the current item) whose id / field values drive\n * the computation. Defaults to `from` when omitted. May reference `$current`. */\n subjectFrom?: string;\n /** Field identifying an item. Default `_id`. */\n idField?: string;\n /** `siblings`: sort the set before locating neighbours. */\n sortBy?: string;\n sortDir?: 'asc' | 'desc';\n wrap?: boolean;\n /** `related`: field(s) on the subject the results must match. */\n matchFields?: string | string[];\n /** `related`: drop the subject from its own results. Default `true`. */\n excludeSelf?: boolean;\n}\n\n/** Duck-typed view of a data source carrying an optional relative descriptor (avoids a hard dep on\n * the full editor model / a circular type import). */\ninterface RelativeCapableSource {\n alias?: string;\n type?: string;\n request?: { relative?: RelativeSourceSpec };\n}\n\n/** Resolve kinds in a fixed order so a `siblings`/`related` source may reference `$current` (or any\n * earlier relative alias) via `subjectFrom` and still see it resolved. */\nconst KIND_ORDER: Record<RelativeSourceKind, number> = { route: 0, current: 1, siblings: 2, related: 3 };\n\n/** Does an item satisfy every field in an equality predicate map (string-compared)? */\nfunction matchesFilter(item: any, filter: Record<string, any>): boolean {\n return Object.keys(filter).every(k => String(getByPath(item, k)) === String(filter[k]));\n}\n\n/**\n * Compute every `type:'relative'` source into `resolved` (keyed by alias), IN PLACE. Pure w.r.t. HTTP\n * — it only reads already-resolved roots + the route params, so both consumers run it identically as\n * a second pass. `route` → the route params; `current` → the subject source value; `siblings` →\n * {@link resolveSiblings} over the collection; `related` → the collection filtered client-side by\n * {@link buildRelatedFilter}'s predicate (+ {@link excludeSelf}). Mutates and returns `resolved`.\n */\nexport function resolveRelativeInto(\n dataSources: RelativeCapableSource[],\n resolved: Record<string, any>,\n routeParams: Record<string, any> = {},\n): Record<string, any> {\n const relatives = (dataSources ?? [])\n .filter(d => d?.type === 'relative' && !!d.alias && !!d.request?.relative)\n .sort((a, b) => KIND_ORDER[a.request!.relative!.kind] - KIND_ORDER[b.request!.relative!.kind]);\n\n for (const d of relatives) {\n const alias = d.alias!;\n const spec = d.request!.relative!;\n const idField = spec.idField ?? '_id';\n switch (spec.kind) {\n case 'route':\n resolved[alias] = routeParams;\n break;\n case 'current':\n resolved[alias] = spec.from ? (resolved[spec.from] ?? null) : null;\n break;\n case 'siblings': {\n const collection = resolved[spec.from ?? ''];\n const subject = resolved[spec.subjectFrom ?? spec.from ?? ''];\n const currentId = getByPath(subject, idField);\n resolved[alias] = resolveSiblings(collection, currentId, {\n idField, sortBy: spec.sortBy, sortDir: spec.sortDir, wrap: spec.wrap,\n });\n break;\n }\n case 'related': {\n const collection = resolved[spec.from ?? ''];\n const subject = resolved[spec.subjectFrom ?? spec.from ?? ''];\n const filter = buildRelatedFilter(subject, { matchFields: spec.matchFields ?? [] });\n const pool = Array.isArray(collection) ? collection : [];\n let items = pool.filter(it => matchesFilter(it, filter));\n if (spec.excludeSelf !== false) items = excludeSelf(items, getByPath(subject, idField), idField);\n resolved[alias] = items;\n break;\n }\n }\n }\n return resolved;\n}\n","/**\n * Cinematic page-transition presets — the SINGLE SOURCE OF TRUTH shared by the page builder\n * (preview) and the SSR client engine (production). Pure, transport-agnostic: this module only\n * describes WAAPI keyframe pairs + timing/ordering. It never touches the DOM.\n *\n * A page transition plays TWO synchronized WAAPI animations at once — an `out` animation on a\n * snapshot of the outgoing page and an `in` animation on the incoming page — inside a shared\n * `perspective` container, gated on BOTH finishing (the \"cinematic\" feel, à la Codrops\n * PageTransitions). The consumer supplies the DOM (snapshot layer + live page) and calls\n * `element.animate(frames, options)`; it does NOT redefine the frames.\n *\n * @see architecture/builder/page-transitions.md\n */\n\n/** Perspective (px) applied to the transition container unless a preset overrides it. */\nexport const DEFAULT_PAGE_TRANSITION_PERSPECTIVE = 1200;\n\n/**\n * Default transition duration (ms). Deliberately long — a slow, settled transition is most of what\n * makes a page change read as \"premium\"; the same motion at ~400ms feels like a snap.\n */\nexport const DEFAULT_PAGE_TRANSITION_DURATION = 1500;\n\n/**\n * Default easing: a strong symmetric in-out. Paired with the long duration this is the \"smoothness\"\n * — slow to leave, quick through the middle, gentle to settle.\n */\nexport const DEFAULT_PAGE_TRANSITION_EASING = 'cubic-bezier(0.76, 0, 0.24, 1)';\n\n/** Default preset used when a page has no transition configured at all. */\nexport const DEFAULT_PAGE_TRANSITION = 'parallax-up';\n\nexport type PageTransitionCategory = 'parallax' | 'reveal' | 'curtain' | 'move' | 'fade' | 'scale' | 'rotate';\n\nexport interface PageTransitionPreset {\n category: PageTransitionCategory;\n label: string;\n /** Keyframes for the OUTGOING page (played on a fixed snapshot). */\n outKeyframes: Keyframe[];\n /** Keyframes for the INCOMING page. */\n inKeyframes: Keyframe[];\n /** Which layer is stacked on top during the transition. Default: 'in'. */\n ontop?: 'in' | 'out';\n /** `transform-origin` for the outgoing layer (3D hinge effects). */\n outTransformOrigin?: string;\n /** `transform-origin` for the incoming layer. */\n inTransformOrigin?: string;\n /** Override the container perspective (px) for this preset. */\n perspective?: number;\n /** Delay before the OUT animation starts, as a fraction (0..1) of the duration. */\n outDelayRatio?: number;\n /** Delay before the IN animation starts, as a fraction (0..1) of the duration. */\n inDelayRatio?: number;\n /**\n * Optional full-screen overlay panel (curtain / wipe). When present the transition plays as\n * COVER → swap → UNCOVER instead of the two page layers animating against each other: the panel\n * sweeps in to hide the screen, the outgoing page is dropped behind it, then the panel sweeps\n * out to reveal the incoming page. Each half gets HALF the total duration.\n *\n * Trade-off: the swap is hidden, so you lose the \"both pages visible at once\" depth of the\n * parallax family — this is drama rather than spatial continuity.\n */\n overlay?: {\n coverKeyframes: Keyframe[];\n uncoverKeyframes: Keyframe[];\n };\n}\n\n// ── Keyframe helpers ────────────────────────────────────────────────────────\nconst FADE_OUT: Keyframe[] = [{ opacity: 1 }, { opacity: 0 }];\nconst FADE_IN: Keyframe[] = [{ opacity: 0 }, { opacity: 1 }];\n\nconst move = (from: string, to: string): Keyframe[] => [{ transform: from }, { transform: to }];\n\n/** Gentle recede for the outgoing page under a mask/reveal — it stays put but drops back a little,\n * so the page underneath never looks like a frozen screenshot. */\nconst RECEDE_SOFT: Keyframe[] = [\n { transform: 'scale(1)', opacity: 1 },\n { transform: 'scale(0.94)', opacity: 0.6 },\n];\n\n/** Barely-there settle for the incoming page under a curtain — the panel hides most of it, so this\n * only takes the edge off the reveal. Ends at identity (required: IN frames must not persist). */\nconst SETTLE_IN: Keyframe[] = [{ transform: 'scale(1.04)' }, { transform: 'scale(1)' }];\n\n// ── The preset catalog ──────────────────────────────────────────────────────\n// Keyed by a stable preset id persisted in pageSettings.routeAnimation.transition.\nexport const PAGE_TRANSITION_PRESETS: Record<string, PageTransitionPreset> = {\n // ── Parallax (the default family) ──────────────────────────────────────────\n // The outgoing page travels only HALF the distance while shrinking and dimming, so it recedes\n // *behind* the incoming page rather than sliding away. That travel difference (50% vs 100%) is\n // what reads as depth — there is no 3D here at all. Pair with the long default duration.\n 'parallax-up': {\n category: 'parallax', label: 'Parallax up (recommended)',\n outKeyframes: [\n { transform: 'translateY(0) scale(1)', opacity: 1 },\n { transform: 'translateY(-50%) scale(0.8)', opacity: 0.4 },\n ],\n inKeyframes: move('translateY(100%)', 'translateY(0)'),\n ontop: 'in',\n },\n 'parallax-down': {\n category: 'parallax', label: 'Parallax down',\n outKeyframes: [\n { transform: 'translateY(0) scale(1)', opacity: 1 },\n { transform: 'translateY(50%) scale(0.8)', opacity: 0.4 },\n ],\n inKeyframes: move('translateY(-100%)', 'translateY(0)'),\n ontop: 'in',\n },\n 'parallax-left': {\n category: 'parallax', label: 'Parallax left',\n outKeyframes: [\n { transform: 'translateX(0) scale(1)', opacity: 1 },\n { transform: 'translateX(-50%) scale(0.8)', opacity: 0.4 },\n ],\n inKeyframes: move('translateX(100%)', 'translateX(0)'),\n ontop: 'in',\n },\n 'parallax-right': {\n category: 'parallax', label: 'Parallax right',\n outKeyframes: [\n { transform: 'translateX(0) scale(1)', opacity: 1 },\n { transform: 'translateX(50%) scale(0.8)', opacity: 0.4 },\n ],\n inKeyframes: move('translateX(-100%)', 'translateX(0)'),\n ontop: 'in',\n },\n\n // ── Reveal (clip-path) ─────────────────────────────────────────────────────\n // The incoming page is UNMASKED over the outgoing one, which recedes gently behind. No overlay\n // panel is involved — the mask is animated directly on the incoming layer, so this needs no\n // extra DOM. (WAAPI interpolates clip-path only between the SAME shape function with the same\n // number of points — keep each pair consistent.)\n 'circle-reveal': {\n category: 'reveal', label: 'Circle reveal (iris)',\n outKeyframes: RECEDE_SOFT,\n inKeyframes: [\n { clipPath: 'circle(0% at 50% 50%)' },\n { clipPath: 'circle(75% at 50% 50%)' },\n ],\n ontop: 'in',\n },\n 'wipe-right': {\n category: 'reveal', label: 'Wipe → right',\n outKeyframes: RECEDE_SOFT,\n inKeyframes: [{ clipPath: 'inset(0 100% 0 0)' }, { clipPath: 'inset(0 0 0 0)' }],\n ontop: 'in',\n },\n 'wipe-left': {\n category: 'reveal', label: 'Wipe ← left',\n outKeyframes: RECEDE_SOFT,\n inKeyframes: [{ clipPath: 'inset(0 0 0 100%)' }, { clipPath: 'inset(0 0 0 0)' }],\n ontop: 'in',\n },\n 'wipe-down': {\n category: 'reveal', label: 'Wipe ↓ down',\n outKeyframes: RECEDE_SOFT,\n inKeyframes: [{ clipPath: 'inset(0 0 100% 0)' }, { clipPath: 'inset(0 0 0 0)' }],\n ontop: 'in',\n },\n 'wipe-up': {\n category: 'reveal', label: 'Wipe ↑ up',\n outKeyframes: RECEDE_SOFT,\n inKeyframes: [{ clipPath: 'inset(100% 0 0 0)' }, { clipPath: 'inset(0 0 0 0)' }],\n ontop: 'in',\n },\n 'diagonal-wipe': {\n category: 'reveal', label: 'Diagonal wipe',\n outKeyframes: RECEDE_SOFT,\n // 4-point polygons on both ends so WAAPI can interpolate them.\n inKeyframes: [\n { clipPath: 'polygon(0% 0%, 0% 0%, -40% 100%, -40% 100%)' },\n { clipPath: 'polygon(0% 0%, 140% 0%, 100% 100%, -40% 100%)' },\n ],\n ontop: 'in',\n },\n 'inset-reveal': {\n category: 'reveal', label: 'Box reveal (from centre)',\n outKeyframes: RECEDE_SOFT,\n inKeyframes: [{ clipPath: 'inset(50% 50% 50% 50%)' }, { clipPath: 'inset(0 0 0 0)' }],\n ontop: 'in',\n },\n\n // ── Curtain (overlay panel sweeps across, hiding the swap) ────────────────\n // A solid panel covers the screen, the outgoing page is dropped behind it, then the panel\n // sweeps away revealing the incoming page. Colour comes from routeAnimation.curtainColor, or\n // the incoming page's own background.\n 'curtain-up': {\n category: 'curtain', label: 'Curtain up',\n outKeyframes: RECEDE_SOFT, inKeyframes: SETTLE_IN, ontop: 'in',\n overlay: {\n coverKeyframes: move('translateY(100%)', 'translateY(0)'),\n uncoverKeyframes: move('translateY(0)', 'translateY(-100%)'),\n },\n },\n 'curtain-down': {\n category: 'curtain', label: 'Curtain down',\n outKeyframes: RECEDE_SOFT, inKeyframes: SETTLE_IN, ontop: 'in',\n overlay: {\n coverKeyframes: move('translateY(-100%)', 'translateY(0)'),\n uncoverKeyframes: move('translateY(0)', 'translateY(100%)'),\n },\n },\n 'curtain-left': {\n category: 'curtain', label: 'Curtain left',\n outKeyframes: RECEDE_SOFT, inKeyframes: SETTLE_IN, ontop: 'in',\n overlay: {\n coverKeyframes: move('translateX(100%)', 'translateX(0)'),\n uncoverKeyframes: move('translateX(0)', 'translateX(-100%)'),\n },\n },\n 'curtain-right': {\n category: 'curtain', label: 'Curtain right',\n outKeyframes: RECEDE_SOFT, inKeyframes: SETTLE_IN, ontop: 'in',\n overlay: {\n coverKeyframes: move('translateX(-100%)', 'translateX(0)'),\n uncoverKeyframes: move('translateX(0)', 'translateX(100%)'),\n },\n },\n\n // ── Move / Push (both pages travel the full distance, side by side — no overlap) ─────\n 'move-left': {\n category: 'move', label: 'Push left',\n outKeyframes: move('translateX(0)', 'translateX(-100%)'),\n inKeyframes: move('translateX(100%)', 'translateX(0)'),\n },\n 'move-right': {\n category: 'move', label: 'Push right',\n outKeyframes: move('translateX(0)', 'translateX(100%)'),\n inKeyframes: move('translateX(-100%)', 'translateX(0)'),\n },\n 'move-up': {\n category: 'move', label: 'Push up',\n outKeyframes: move('translateY(0)', 'translateY(-100%)'),\n inKeyframes: move('translateY(100%)', 'translateY(0)'),\n },\n 'move-down': {\n category: 'move', label: 'Push down',\n outKeyframes: move('translateY(0)', 'translateY(100%)'),\n inKeyframes: move('translateY(-100%)', 'translateY(0)'),\n },\n\n // ── Fade (incoming sits on top; outgoing dissolves or holds) ───────────────\n 'fade': {\n category: 'fade', label: 'Fade',\n outKeyframes: FADE_OUT, inKeyframes: FADE_IN, ontop: 'in',\n },\n 'fade-from-right': {\n category: 'fade', label: 'Fade / from right',\n outKeyframes: FADE_OUT,\n inKeyframes: [{ transform: 'translateX(100%)', opacity: 0 }, { transform: 'translateX(0)', opacity: 1 }],\n ontop: 'in',\n },\n 'fade-from-left': {\n category: 'fade', label: 'Fade / from left',\n outKeyframes: FADE_OUT,\n inKeyframes: [{ transform: 'translateX(-100%)', opacity: 0 }, { transform: 'translateX(0)', opacity: 1 }],\n ontop: 'in',\n },\n 'fade-from-bottom': {\n category: 'fade', label: 'Fade / from bottom',\n outKeyframes: FADE_OUT,\n inKeyframes: [{ transform: 'translateY(100%)', opacity: 0 }, { transform: 'translateY(0)', opacity: 1 }],\n ontop: 'in',\n },\n\n // ── Scale ──────────────────────────────────────────────────────────────────\n 'scale-down-up': {\n category: 'scale', label: 'Scale down / scale up',\n outKeyframes: [{ transform: 'scale(1)', opacity: 1 }, { transform: 'scale(0.8)', opacity: 0 }],\n inKeyframes: [{ transform: 'scale(1.2)', opacity: 0 }, { transform: 'scale(1)', opacity: 1 }],\n ontop: 'in',\n },\n 'scale-down': {\n category: 'scale', label: 'Scale down / from right',\n outKeyframes: [{ transform: 'scale(1)', opacity: 1 }, { transform: 'scale(0.8)', opacity: 0 }],\n inKeyframes: move('translateX(100%)', 'translateX(0)'),\n ontop: 'in',\n },\n 'scale-up': {\n category: 'scale', label: 'Move to left / scale up',\n outKeyframes: move('translateX(0)', 'translateX(-100%)'),\n inKeyframes: [{ transform: 'scale(0.8)', opacity: 0 }, { transform: 'scale(1)', opacity: 1 }],\n ontop: 'out',\n },\n\n // ── Rotate / 3D (the cinematic \"wow\" family) ───────────────────────────────\n 'flip': {\n category: 'rotate', label: 'Flip',\n outKeyframes: [{ transform: 'rotateY(0deg)', opacity: 1 }, { transform: 'rotateY(-180deg)', opacity: 0 }],\n inKeyframes: [{ transform: 'rotateY(180deg)', opacity: 0 }, { transform: 'rotateY(0deg)', opacity: 1 }],\n outTransformOrigin: '50% 50%', inTransformOrigin: '50% 50%',\n },\n 'cube-left': {\n category: 'rotate', label: 'Cube / to left',\n outKeyframes: [{ transform: 'translateZ(0) rotateY(0deg)', opacity: 1 }, { transform: 'translateZ(-800px) rotateY(-90deg)', opacity: 0.3 }],\n inKeyframes: [{ transform: 'translateZ(-800px) rotateY(90deg)', opacity: 0.3 }, { transform: 'translateZ(0) rotateY(0deg)', opacity: 1 }],\n outTransformOrigin: '50% 50%', inTransformOrigin: '50% 50%',\n },\n 'cube-right': {\n category: 'rotate', label: 'Cube / to right',\n outKeyframes: [{ transform: 'translateZ(0) rotateY(0deg)', opacity: 1 }, { transform: 'translateZ(-800px) rotateY(90deg)', opacity: 0.3 }],\n inKeyframes: [{ transform: 'translateZ(-800px) rotateY(-90deg)', opacity: 0.3 }, { transform: 'translateZ(0) rotateY(0deg)', opacity: 1 }],\n outTransformOrigin: '50% 50%', inTransformOrigin: '50% 50%',\n },\n 'carousel-left': {\n category: 'rotate', label: 'Carousel / to left',\n outKeyframes: [{ transform: 'translateX(0) scale(1)', opacity: 1 }, { transform: 'translateX(-150%) scale(0.4)', opacity: 0.3 }],\n inKeyframes: [{ transform: 'translateX(200%) scale(0.4)', opacity: 0.3 }, { transform: 'translateX(0) scale(1)', opacity: 1 }],\n ontop: 'in',\n },\n 'carousel-right': {\n category: 'rotate', label: 'Carousel / to right',\n outKeyframes: [{ transform: 'translateX(0) scale(1)', opacity: 1 }, { transform: 'translateX(150%) scale(0.4)', opacity: 0.3 }],\n inKeyframes: [{ transform: 'translateX(-200%) scale(0.4)', opacity: 0.3 }, { transform: 'translateX(0) scale(1)', opacity: 1 }],\n ontop: 'in',\n },\n 'fall': {\n category: 'rotate', label: 'Fall',\n outKeyframes: [{ transform: 'translateZ(0) rotateX(0deg)', opacity: 1 }, { transform: 'translateZ(-500px) rotateX(90deg)', opacity: 0 }],\n inKeyframes: FADE_IN,\n outTransformOrigin: '50% 50%', ontop: 'out', inDelayRatio: 0.3,\n },\n 'newspaper': {\n category: 'rotate', label: 'Newspaper',\n outKeyframes: [{ transform: 'scale(1) rotate(0deg)', opacity: 1 }, { transform: 'scale(0) rotate(720deg)', opacity: 0 }],\n inKeyframes: [{ transform: 'scale(0) rotate(-720deg)', opacity: 0 }, { transform: 'scale(1) rotate(0deg)', opacity: 1 }],\n ontop: 'in', inDelayRatio: 0.5,\n },\n 'fold-left': {\n category: 'rotate', label: 'Fold / unfold',\n outKeyframes: [{ transform: 'translateX(0) rotateY(0deg)', opacity: 1 }, { transform: 'translateX(-100%) rotateY(-90deg)', opacity: 0.6 }],\n inKeyframes: [{ transform: 'translateX(100%) rotateY(90deg)', opacity: 0.6 }, { transform: 'translateX(0) rotateY(0deg)', opacity: 1 }],\n outTransformOrigin: '0% 50%', inTransformOrigin: '100% 50%', ontop: 'in',\n },\n 'room-left': {\n category: 'rotate', label: 'Room / to left',\n outKeyframes: [{ transform: 'translateX(0) rotateY(0deg)', opacity: 1 }, { transform: 'translateX(-100%) rotateY(90deg)', opacity: 0.4 }],\n inKeyframes: [{ transform: 'translateX(100%) rotateY(-90deg)', opacity: 0.4 }, { transform: 'translateX(0) rotateY(0deg)', opacity: 1 }],\n outTransformOrigin: '100% 50%', inTransformOrigin: '0% 50%',\n },\n};\n\n// ── \"Feel\" — duration + easing as a named vibe ───────────────────────────────\n// Most authors want to pick a *feeling*, not a bezier. A feel sets duration + easing together;\n// editing either by hand simply falls back to 'custom' (see feelFor).\nexport interface TransitionFeel {\n value: string;\n label: string;\n duration: number;\n easing: string;\n description: string;\n}\n\nexport const TRANSITION_FEELS: TransitionFeel[] = [\n { value: 'calm', label: 'Calm', duration: 1800, easing: 'cubic-bezier(0.33, 1, 0.68, 1)', description: 'Slow and unhurried — editorial, luxury' },\n { value: 'cinematic', label: 'Cinematic', duration: 1500, easing: DEFAULT_PAGE_TRANSITION_EASING, description: 'Long settle with a strong middle — the default' },\n { value: 'smooth', label: 'Smooth', duration: 1200, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', description: 'Quick out of the gate, glides to a stop' },\n { value: 'snappy', label: 'Snappy', duration: 600, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', description: 'Fast and responsive — app-like' },\n { value: 'crazy', label: 'Crazy', duration: 900, easing: 'cubic-bezier(0.68, -0.6, 0.32, 1.6)', description: 'Overshoots and springs back' },\n];\n\n/** The feel matching this duration+easing exactly, else 'custom'. Drives the panel's selector. */\nexport function feelFor(duration: number | string | undefined, easing: string | undefined): string {\n const d = toFiniteNumber(duration, DEFAULT_PAGE_TRANSITION_DURATION);\n const e = easing || DEFAULT_PAGE_TRANSITION_EASING;\n return TRANSITION_FEELS.find(f => f.duration === d && f.easing === e)?.value ?? 'custom';\n}\n\n/** The duration+easing patch for a feel id (undefined for 'custom' / unknown). */\nexport function applyFeel(feel: string): { duration: number; easing: string } | undefined {\n const f = TRANSITION_FEELS.find(x => x.value === feel);\n return f ? { duration: f.duration, easing: f.easing } : undefined;\n}\n\n// ── Two-select UI metadata (category ▾ → transition ▾) ───────────────────────\nexport interface PageTransitionCategoryMeta {\n value: PageTransitionCategory;\n label: string;\n presets: { value: string; label: string }[];\n}\n\n/** Built from PAGE_TRANSITION_PRESETS so the two lists can never drift apart. */\nexport const PAGE_TRANSITION_CATEGORIES: PageTransitionCategoryMeta[] = (() => {\n const order: { value: PageTransitionCategory; label: string }[] = [\n { value: 'parallax', label: 'Smooth (parallax)' },\n { value: 'reveal', label: 'Reveal (mask)' },\n { value: 'curtain', label: 'Curtain (overlay)' },\n { value: 'move', label: 'Push / slide' },\n { value: 'fade', label: 'Fade' },\n { value: 'scale', label: 'Scale' },\n { value: 'rotate', label: 'Rotate / 3D' },\n ];\n return order.map(cat => ({\n ...cat,\n presets: Object.entries(PAGE_TRANSITION_PRESETS)\n .filter(([, p]) => p.category === cat.value)\n .map(([value, p]) => ({ value, label: p.label })),\n }));\n})();\n\n// ── Resolver: preset → concrete WAAPI frames + options ───────────────────────\nexport interface PageTransitionOptions {\n /** Total transition duration (ms). Accepts a numeric string — builder inputs persist strings. */\n duration?: number | string;\n easing?: string;\n /** Container perspective (px); a preset-specific perspective still wins. */\n perspective?: number | string;\n}\n\n/** Coerce a possibly-string / invalid numeric setting to a usable finite, non-negative number. */\nfunction toFiniteNumber(value: unknown, fallback: number): number {\n const n = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(n) && n >= 0 ? n : fallback;\n}\n\nexport interface ResolvedPageTransition {\n outFrames: Keyframe[];\n inFrames: Keyframe[];\n outOptions: KeyframeAnimationOptions;\n inOptions: KeyframeAnimationOptions;\n ontop: 'in' | 'out';\n perspective: number;\n outTransformOrigin?: string;\n inTransformOrigin?: string;\n /** Present only for curtain presets — each half runs for HALF the total duration. */\n overlay?: {\n coverFrames: Keyframe[];\n uncoverFrames: Keyframe[];\n coverOptions: KeyframeAnimationOptions;\n uncoverOptions: KeyframeAnimationOptions;\n };\n}\n\n/**\n * Resolve a persisted preset id + timing into the two WAAPI animations the consumer runs.\n * Returns `null` for unknown / 'none' presets (caller should skip the transition).\n */\nexport function resolvePageTransition(\n name: string | null | undefined,\n opts: PageTransitionOptions = {},\n): ResolvedPageTransition | null {\n if (!name || name === 'none') return null;\n const preset = PAGE_TRANSITION_PRESETS[name];\n if (!preset) return null;\n\n // Builder numeric inputs persist as STRINGS (e.g. duration:\"413\"), and WAAPI throws on a\n // non-numeric `duration` — which silently kills the whole transition. Coerce defensively here,\n // the single point where these values become animation options, so every consumer is protected\n // and already-saved string data keeps working.\n const duration = toFiniteNumber(opts.duration, DEFAULT_PAGE_TRANSITION_DURATION);\n const easing = opts.easing || DEFAULT_PAGE_TRANSITION_EASING;\n const perspective = toFiniteNumber(\n preset.perspective ?? opts.perspective, DEFAULT_PAGE_TRANSITION_PERSPECTIVE,\n );\n\n const clampRatio = (r?: number) => Math.max(0, Math.min(1, r ?? 0));\n const outDelay = clampRatio(preset.outDelayRatio) * duration;\n const inDelay = clampRatio(preset.inDelayRatio) * duration;\n\n return {\n outFrames: preset.outKeyframes,\n inFrames: preset.inKeyframes,\n // OUT plays on a throwaway snapshot → 'both' (hold keyframe[0] during delay, keyframe[last] after).\n outOptions: { duration, easing, delay: outDelay, fill: 'both' },\n // IN plays on the LIVE page host, so it must NOT persist its end state: a lingering `transform`\n // makes that host a containing block for absolutely-positioned descendants, collapsing a\n // `position:absolute; inset:0` page shell (iox-page-component) to 0 height. Every `in` preset\n // ends at identity (translate 0 / scale 1 / opacity 1), so 'backwards' — which only holds\n // keyframe[0] during the delay — is visually identical and leaves no residue.\n inOptions: { duration, easing, delay: inDelay, fill: 'backwards' },\n ontop: preset.ontop ?? 'in',\n perspective,\n outTransformOrigin: preset.outTransformOrigin,\n inTransformOrigin: preset.inTransformOrigin,\n overlay: preset.overlay && {\n coverFrames: preset.overlay.coverKeyframes,\n uncoverFrames: preset.overlay.uncoverKeyframes,\n // Cover and uncover split the total duration; 'both' holds the panel in place between\n // the two halves so the swap is never visible through a gap.\n coverOptions: { duration: duration / 2, easing, fill: 'both' },\n uncoverOptions: { duration: duration / 2, easing, fill: 'both' },\n },\n };\n}\n\n// ── Orchestration timeline (pure ordering / gating decision) ─────────────────\nexport type TransitionPhase = 'leave' | 'transition' | 'enter';\n\nexport interface TransitionTimelineInput {\n /** At least one element on the outgoing page has a `pageLeave` interaction. */\n hasLeave: boolean;\n /** A page transition preset is configured (and not 'none'). */\n hasTransition: boolean;\n /** At least one element on the incoming page has a `pageEnter` interaction. */\n hasEnter: boolean;\n}\n\n/**\n * The ordered phases a navigation runs, given what is present. The order is INVARIANT:\n * every element `leave` animation finishes before the page `transition` starts, and the page\n * `transition` finishes before any element `enter` animation begins. Phases with nothing to\n * play are omitted. The engine iterates this list and `await`s each phase's completion.\n */\nexport function buildTransitionTimeline(input: TransitionTimelineInput): TransitionPhase[] {\n const phases: TransitionPhase[] = [];\n if (input.hasLeave) phases.push('leave');\n if (input.hasTransition) phases.push('transition');\n if (input.hasEnter) phases.push('enter');\n return phases;\n}\n\n// ── Back-compat migration from the legacy single-page route-animation presets ─\n/**\n * Map a legacy `enter` preset (none/fade/slideUp/slideDown/zoomIn/zoomOut/blurIn/flip) to the\n * nearest cinematic paired `transition` id, so pages saved before this system keep animating.\n * Returns 'fade' for anything unmapped, and 'none' for 'none'.\n */\nexport function legacyEnterToTransition(enter: string | null | undefined): string {\n switch (enter) {\n case 'none': return 'none';\n case 'slideUp': return 'fade-from-bottom';\n case 'slideDown': return 'fade';\n case 'zoomIn': return 'scale-down-up';\n case 'zoomOut': return 'scale-down-up';\n case 'blurIn': return 'fade';\n case 'flip': return 'flip';\n case 'fade': return 'fade';\n // Never configured (or an unrecognised value) → the default parallax transition.\n default: return DEFAULT_PAGE_TRANSITION;\n }\n}\n\n/**\n * Resolve the effective transition id for a page's route-animation settings: the explicit\n * `transition` when present, otherwise migrated from the legacy `enter` preset.\n */\nexport function effectiveTransitionId(anim: { transition?: string | null; enter?: string | null } | null | undefined): string {\n if (!anim) return DEFAULT_PAGE_TRANSITION;\n if (anim.transition) return anim.transition;\n return legacyEnterToTransition(anim.enter);\n}\n","/*\n * Public API Surface of iox-ui\n */\n\nexport * from './lib/view-position/view-position.directive';\nexport * from './lib/view-position/view-position.module';\n\nexport * from './lib/iox-aos/iox-aos.directive';\nexport * from './lib/iox-aos/iox-aos-container.component';\nexport * from './lib/iox-aos/iox-aos.service';\nexport * from './lib/iox-aos/iox-aos.module';\n\nexport * from './lib/iox-ui.module';\nexport * from './lib/iox-page/page-component/page-component.component';\nexport * from './lib/iox-page/iox-page.module';\nexport * from './lib/services/page-scroll.provider';\nexport * from './lib/services/component-instance-registry.service';\n\n// CMS client infra\nexport * from './lib/iox-cms-client-infra/cms-client-infra.module';\nexport * from './lib/iox-cms-client-infra/services/consent.service';\nexport * from './lib/iox-cms-client-infra/services/web-settings.service';\nexport * from './lib/iox-cms-client-infra/services/content.service';\nexport * from './lib/iox-cms-client-infra/services/analytics.service';\nexport * from './lib/iox-cms-client-infra/components/privacy/privacy-modal.component';\nexport * from './lib/iox-cms-client-infra/components/privacy/privacy-modal.service';\n\n// Builder components — extracted from iox-cms-client for shared use in builder + client engine\nexport * from './lib/builder-components/builder-tokens';\nexport * from './lib/builder-components/iox-builder-components.module';\nexport * from './lib/builder-components/iox-component-registry.service';\nexport * from './lib/builder-components/image/image.component';\nexport * from './lib/builder-components/spacer/spacer.component';\nexport * from './lib/builder-components/card/card.component';\nexport * from './lib/builder-components/divider/divider.component';\nexport * from './lib/builder-components/icon/icon.component';\nexport * from './lib/builder-components/link/link.component';\nexport * from './lib/builder-components/button/button.component';\nexport * from './lib/builder-components/button-block/button-block.component';\nexport * from './lib/builder-components/heading/heading.component';\nexport * from './lib/builder-components/text/text.component';\nexport * from './lib/builder-components/section/section.component';\nexport * from './lib/builder-components/container/container.component';\nexport * from './lib/builder-components/linked-container/linked-container.component';\nexport * from './lib/builder-components/repeater/repeater.component';\nexport * from './lib/builder-components/slider-container/slider-container.component';\nexport * from './lib/builder-components/slider-slide/slider-slide.component';\nexport * from './lib/builder-components/list/list.component';\nexport * from './lib/builder-components/list-item/list-item.component';\n\nexport * from './lib/style-compiler/style-compiler';\nexport * from './lib/style-compiler/virtual-traits';\nexport * from './lib/data-source/data-source-resolver';\nexport * from './lib/data-source/relative-sources';\nexport * from './lib/page-transition/page-transition-presets';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AOSService","i1.IoxAnimateContainer","i1.PageScrollProvider","i1.PrivacyModalService","i2.ConsentService","i3","i1"],"mappings":"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"}
|