@rokt/dcui-orchestrator 1.2.1-rc.3 → 1.2.1-rc.31

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.
Files changed (96) hide show
  1. package/dist/index.cjs +43 -37
  2. package/dist/index.js +54 -48
  3. package/dist/libraries/dcui-components/src/components/data-mapper/data-mapper.d.ts +4 -0
  4. package/dist/libraries/dcui-components/src/components/index.d.ts +3 -0
  5. package/dist/libraries/dcui-components/src/components/paypal-button/index.d.ts +1 -0
  6. package/dist/libraries/dcui-components/src/components/paypal-button/paypal-button.d.ts +78 -0
  7. package/dist/libraries/dcui-components/src/components/paypal-button/paypal-wordmark.d.ts +8 -0
  8. package/dist/libraries/dcui-components/src/components/progress-control/index.d.ts +1 -0
  9. package/dist/libraries/dcui-components/src/components/progress-control/progress-control.d.ts +49 -0
  10. package/dist/libraries/dcui-components/src/components/progress-indicator/get-progress-indicator-state.d.ts +3 -0
  11. package/dist/libraries/dcui-components/src/components/progress-indicator/index.d.ts +3 -0
  12. package/dist/libraries/dcui-components/src/components/progress-indicator/progress-indicator.d.ts +8 -0
  13. package/dist/libraries/dcui-components/src/components/progress-indicator/types.d.ts +88 -0
  14. package/dist/libraries/dcui-components/src/contexts/data-mapper-context.d.ts +4 -0
  15. package/dist/libraries/dcui-components/src/contexts/index.d.ts +1 -0
  16. package/dist/libraries/dcui-components/src/contexts/lead-capture-offer-context.d.ts +5 -0
  17. package/dist/libraries/dcui-components/src/contexts/validators/validator-provider.d.ts +5 -3
  18. package/dist/libraries/dcui-components/src/failure-codes.d.ts +1 -0
  19. package/dist/libraries/domain/src/behaviors/continuous-child.d.ts +62 -0
  20. package/dist/libraries/domain/src/behaviors/custom-states.d.ts +1 -1
  21. package/dist/libraries/domain/src/behaviors/index.d.ts +1 -0
  22. package/dist/libraries/domain/src/behaviors/offer-engagement.d.ts +11 -0
  23. package/dist/libraries/domain/src/behaviors/send-partner.d.ts +14 -2
  24. package/dist/libraries/domain/src/behaviors/trigger-action.d.ts +3 -3
  25. package/dist/libraries/domain/src/models/child-layout-response.d.ts +6 -0
  26. package/dist/libraries/domain/src/models/index.d.ts +1 -0
  27. package/dist/libraries/domain/src/models/layout/layout-offer.d.ts +2 -0
  28. package/dist/libraries/domain/src/models/partner-event.d.ts +1 -1
  29. package/dist/libraries/domain/src/models/plugin/plugin-child-layout-model.d.ts +1 -0
  30. package/dist/libraries/domain/src/models/plugin/plugin-offer.d.ts +2 -0
  31. package/dist/libraries/layout-renderer-utils/src/actions/attributes.d.ts +7 -0
  32. package/dist/libraries/layout-renderer-utils/src/actions/index.d.ts +4 -1
  33. package/dist/libraries/layout-renderer-utils/src/models/state/attributes.d.ts +2 -0
  34. package/dist/libraries/layout-renderer-utils/src/models/state/index.d.ts +3 -0
  35. package/dist/libraries/layout-renderer-utils/src/reducers/attributes/index.d.ts +1 -0
  36. package/dist/libraries/layout-renderer-utils/src/reducers/attributes/reducer.d.ts +4 -0
  37. package/dist/libraries/layout-renderer-utils/src/reducers/index.d.ts +3 -0
  38. package/dist/libraries/layout-renderer-utils/src/sagas/plugin/channels.d.ts +3 -3
  39. package/dist/libraries/layout-renderer-utils/src/sagas/plugin/display.d.ts +3 -0
  40. package/dist/libraries/layout-renderer-utils/src/sagas/plugin/sagas.d.ts +5 -2
  41. package/dist/libraries/module-connector/src/main.d.ts +1 -1
  42. package/dist/libraries/module-connector/src/models/gateway.d.ts +14 -3
  43. package/dist/libraries/module-connector/src/models/module-attributes.d.ts +3 -0
  44. package/dist/libraries/module-connector/src/models/module-connector-builder.d.ts +1 -0
  45. package/dist/libraries/module-utils/src/sagas/child-layouts/sagas.d.ts +2 -0
  46. package/dist/libraries/orchestrator/src/actions/index.d.ts +1 -0
  47. package/dist/libraries/orchestrator/src/components/progress-control/progress-control.d.ts +2 -45
  48. package/dist/libraries/orchestrator/src/components/progress-indicator/progress-indicator.d.ts +1 -9
  49. package/dist/libraries/orchestrator/src/components/progress-indicator/types.d.ts +1 -87
  50. package/dist/libraries/orchestrator/src/measurement/creative-measurement.d.ts +54 -0
  51. package/dist/libraries/orchestrator/src/reducers/index.d.ts +1 -0
  52. package/dist/libraries/orchestrator/src/sagas/child-layouts/continuous-child-host.d.ts +15 -0
  53. package/dist/libraries/orchestrator/src/sagas/child-layouts/continuous-child.d.ts +52 -0
  54. package/dist/libraries/orchestrator/src/sagas/index.d.ts +1 -1
  55. package/dist/libraries/plugin-utils/src/plugin-service/attributes.d.ts +7 -0
  56. package/dist/libraries/plugin-utils/src/plugin-service/display.d.ts +1 -0
  57. package/dist/libraries/plugin-utils/src/plugin-service/index.d.ts +3 -1
  58. package/dist/modules/instant-purchase/src/actions/catalog-selection.d.ts +8 -1
  59. package/dist/modules/instant-purchase/src/actions/instant-purchase.d.ts +4 -0
  60. package/dist/modules/instant-purchase/src/components/catalog-device-pay-button/catalog-device-pay-button.d.ts +8 -0
  61. package/dist/modules/instant-purchase/src/components/catalog-selectors-stacked/catalog-selectors-stacked.d.ts +30 -0
  62. package/dist/modules/instant-purchase/src/models/state/device-pay-availability.d.ts +1 -0
  63. package/dist/modules/instant-purchase/src/models/state/instant-purchase.d.ts +4 -0
  64. package/dist/modules/instant-purchase/src/reducers/catalog-selection/reducer.d.ts +2 -0
  65. package/dist/modules/instant-purchase/src/reducers/index.d.ts +3 -0
  66. package/dist/modules/instant-purchase/src/sagas/instant-purchase/sagas.d.ts +17 -3
  67. package/dist/modules/instant-purchase/src/sagas/paypal/sagas.d.ts +2 -0
  68. package/dist/modules/instant-purchase/src/sagas/tax-and-shipping/sagas.d.ts +10 -20
  69. package/dist/modules/instant-purchase/src/selectors/device-pay-availability/selectors.d.ts +1 -0
  70. package/dist/modules/instant-purchase/src/selectors/tax-and-shipping/selectors.d.ts +8 -0
  71. package/dist/modules/instant-purchase/src/utils/create-tax-and-shipping-cache-key.d.ts +4 -0
  72. package/dist/modules/instant-purchase/src/utils/parse-non-negative-monetary-amount.d.ts +1 -0
  73. package/dist/modules/instant-purchase/src/utils/requires-tax-and-shipping-initialization.d.ts +2 -0
  74. package/dist/modules/standard-marketing/src/sagas/offer-engagement/sagas.d.ts +2 -1
  75. package/node_modules/@rokt/dcui-layout-schema/dist/schema.d.ts +575 -21
  76. package/node_modules/@rokt/dcui-layout-schema/dist/tsconfig.tsbuildinfo +1 -1
  77. package/node_modules/@rokt/dcui-layout-schema/package.json +1 -1
  78. package/node_modules/@rokt/dcui-layout-schema/v1.21/index.d.ts +7105 -0
  79. package/node_modules/@rokt/dcui-layout-schema/v1.21/index.js +4 -0
  80. package/node_modules/@rokt/dcui-layout-schema/v1.22/index.d.ts +7121 -0
  81. package/node_modules/@rokt/dcui-layout-schema/v1.22/index.js +4 -0
  82. package/node_modules/@rokt/dcui-layout-schema/v1.23/index.d.ts +7126 -0
  83. package/node_modules/@rokt/dcui-layout-schema/v1.23/index.js +4 -0
  84. package/node_modules/@rokt/dcui-layout-schema/v1.24/index.d.ts +7492 -0
  85. package/node_modules/@rokt/dcui-layout-schema/v1.24/index.js +4 -0
  86. package/node_modules/@rokt/dcui-layout-schema/v1.25/index.d.ts +7510 -0
  87. package/node_modules/@rokt/dcui-layout-schema/v1.25/index.js +4 -0
  88. package/node_modules/@rokt/dcui-layout-schema/v1.26/index.d.ts +7516 -0
  89. package/node_modules/@rokt/dcui-layout-schema/v1.26/index.js +4 -0
  90. package/node_modules/@rokt/dcui-layout-schema/v1.27/index.d.ts +7577 -0
  91. package/node_modules/@rokt/dcui-layout-schema/v1.27/index.js +4 -0
  92. package/node_modules/@rokt/dcui-layout-schema/v1.28/index.d.ts +7628 -0
  93. package/node_modules/@rokt/dcui-layout-schema/v1.28/index.js +4 -0
  94. package/node_modules/@rokt/dcui-layout-schema/v1.29/index.d.ts +7643 -0
  95. package/node_modules/@rokt/dcui-layout-schema/v1.29/index.js +4 -0
  96. package/package.json +2 -2
@@ -0,0 +1,4 @@
1
+ import { AnyAction } from '@reduxjs/toolkit';
2
+ import { AttributesState } from '../../models';
3
+ export declare function makeInitialAttributesState(): AttributesState;
4
+ export declare function attributesReducer(state: AttributesState | undefined, action: AnyAction): AttributesState;
@@ -2,6 +2,7 @@ import { CoreAppState } from '../models';
2
2
  import { breakpointReducer } from './breakpoint';
3
3
  import { layoutReducer } from './layout';
4
4
  import { activeReducer } from './active';
5
+ import { attributesReducer } from './attributes';
5
6
  import { fontsReducer } from './fonts';
6
7
  import { signalReducer } from './signal';
7
8
  import { serializableCacheReducer } from './serializable-cache';
@@ -12,6 +13,7 @@ import { formStatesReducer } from './form-states';
12
13
  export * from './breakpoint';
13
14
  export * from './layout';
14
15
  export * from './active';
16
+ export * from './attributes';
15
17
  export * from './fonts';
16
18
  export * from './signal';
17
19
  export * from './serializable-cache';
@@ -23,6 +25,7 @@ export declare const coreAppReducers: {
23
25
  layout: typeof layoutReducer;
24
26
  breakpoint: typeof breakpointReducer;
25
27
  active: typeof activeReducer;
28
+ attributes: typeof attributesReducer;
26
29
  fonts: typeof fontsReducer;
27
30
  signal: typeof signalReducer;
28
31
  serializableCache: typeof serializableCacheReducer;
@@ -1,5 +1,5 @@
1
1
  import { EventChannel } from 'redux-saga';
2
2
  import { ThemeInterface } from '@rokt/plugin';
3
- import { ConfigService } from '../../../../plugin-utils/src/index';
4
- import { HandleConfigAction, SetFontsAction } from '../../actions';
5
- export declare function makeWsdkChannel<LayoutModelType, PluginModelType>(configService: ConfigService<LayoutModelType>, themeService: ThemeInterface, transformRawConfig: (config: LayoutModelType) => PluginModelType | undefined): EventChannel<HandleConfigAction<PluginModelType> | SetFontsAction>;
3
+ import { AttributesService, ConfigService } from '../../../../plugin-utils/src/index';
4
+ import { HandleConfigAction, SetAttributesAction, SetFontsAction } from '../../actions';
5
+ export declare function makeWsdkChannel<LayoutModelType, PluginModelType>(configService: ConfigService<LayoutModelType>, themeService: ThemeInterface, transformRawConfig: (config: LayoutModelType) => PluginModelType | undefined, attributesService?: AttributesService): EventChannel<HandleConfigAction<PluginModelType> | SetFontsAction | SetAttributesAction>;
@@ -19,6 +19,7 @@ export declare function getDisplaySettings(preset?: LayoutDisplayPreset | null,
19
19
  width: string;
20
20
  };
21
21
  css?: undefined;
22
+ lockHostScroll?: undefined;
22
23
  } | {
23
24
  autoresize: boolean;
24
25
  css: {
@@ -34,9 +35,11 @@ export declare function getDisplaySettings(preset?: LayoutDisplayPreset | null,
34
35
  replaceTargetElement?: undefined;
35
36
  outerCss?: undefined;
36
37
  innerCss?: undefined;
38
+ lockHostScroll?: undefined;
37
39
  } | {
38
40
  autoresize: boolean;
39
41
  applyHighestZIndex: boolean;
42
+ lockHostScroll: boolean;
40
43
  replaceTargetElement: string;
41
44
  css: {
42
45
  zIndex?: number | undefined;
@@ -1,11 +1,14 @@
1
1
  import { CallEffect, PutEffect, SelectEffect } from '@redux-saga/core/effects';
2
+ import { OutboundPartnerEvent } from '../../../../domain/src/models';
3
+ import { SendPartner } from '../../../../domain/src/behaviors';
2
4
  import { FrameControls, LayoutDisplayPreset } from '@rokt/dcui-layout-schema';
3
5
  import { RaceEffect } from 'redux-saga/effects';
4
- import { ContextService, DisplayService, PluginService } from '../../../../plugin-utils/src/index';
6
+ import { ContextService, DisplayService, PartnerInteractionService, PluginService } from '../../../../plugin-utils/src/index';
5
7
  import { HandleConfigAction, ReportError } from '../../actions';
6
8
  import { EventChannel } from 'redux-saga';
7
9
  export declare function closePlugin(contextService: ContextService): Generator<RaceEffect<CallEffect | Generator<SelectEffect | CallEffect, void, boolean>> | SelectEffect | CallEffect | Generator<SelectEffect | CallEffect, void, boolean> | PutEffect<ReportError>, void, boolean>;
8
- export declare function listenToWsdkChannel<LayoutModelType, PluginModelType>(pluginService: PluginService<LayoutModelType>, transformRawConfig: (config: LayoutModelType) => PluginModelType | undefined): Generator<PutEffect<ReportError> | CallEffect<EventChannel<import("../../../../orchestrator/src/actions").SetFontsAction | HandleConfigAction<PluginModelType>>> | import("redux-saga/effects").ChannelTakeEffect<HandleConfigAction<PluginModelType>> | PutEffect<HandleConfigAction<PluginModelType>>, void, EventChannel<HandleConfigAction<PluginModelType>> & HandleConfigAction<PluginModelType>>;
10
+ export declare function handlePartnerSend(partnerInteractionService: PartnerInteractionService, { payload }: SendPartner<OutboundPartnerEvent>): Generator<Promise<void>, void, void>;
11
+ export declare function listenToWsdkChannel<LayoutModelType, PluginModelType>(pluginService: PluginService<LayoutModelType>, transformRawConfig: (config: LayoutModelType) => PluginModelType | undefined): Generator<PutEffect<ReportError> | CallEffect<EventChannel<import("../../../../orchestrator/src/actions").SetAttributesAction | import("../../../../orchestrator/src/actions").SetFontsAction | HandleConfigAction<PluginModelType>>> | import("redux-saga/effects").ChannelTakeEffect<HandleConfigAction<PluginModelType>> | PutEffect<HandleConfigAction<PluginModelType>>, void, EventChannel<HandleConfigAction<PluginModelType>> & HandleConfigAction<PluginModelType>>;
9
12
  export declare function wsdkSagas<LayoutModelType, PluginModelType>(pluginService: PluginService<LayoutModelType>, transformRawConfig: (config: LayoutModelType) => PluginModelType | undefined): Generator<import("redux-saga/effects").AllEffect<import("redux-saga/effects").ForkEffect<void>>, void, unknown>;
10
13
  export declare function displayPlugin(displayService: DisplayService, preset?: LayoutDisplayPreset | null, controls?: FrameControls | null): Generator<CallEffect<void> | import("redux-saga/effects").ForkEffect<void> | PutEffect<{
11
14
  type: "ACTIVE/ADD";
@@ -1,6 +1,6 @@
1
1
  export { ModuleAttributes } from './models/module-attributes';
2
2
  export { ModuleConnectorBuilder, AppSettings, } from './models/module-connector-builder';
3
- export { IGateway, IDisposable, Gateway, GetFonts, GatewayFactory, ActionInterceptor, EmptyGateway, GlobalGateway, GlobalGatewayFactory, makeGatewayFactory, ModuleEventListener, } from './models/gateway';
3
+ export { IGateway, ContinuousGatewayService, IDisposable, Gateway, GetFonts, GatewayFactory, ActionInterceptor, EmptyGateway, GlobalGateway, GlobalGatewayFactory, makeGatewayFactory, ModuleEventListener, } from './models/gateway';
4
4
  export * from './models/module';
5
5
  export { AbstractStore } from './models/abstract-store';
6
6
  export { AbstractGlobalStore, GlobalStoreOfferContext, } from './models/abstract-global-store';
@@ -1,4 +1,4 @@
1
- import { GlobalState, Interactivity } from '../../../domain/src/models';
1
+ import { GlobalState, Interactivity, PluginLayoutChild } from '../../../domain/src/models';
2
2
  import { GlobalActions } from '../../../domain/src/behaviors';
3
3
  import { ChildPluginFactoryInterface, Fonts, PartnerInteractionInterface } from '@rokt/plugin';
4
4
  import { Subscriber } from '@rokt/plugin/interface/subscriber';
@@ -10,6 +10,11 @@ export type ChildPluginFactoryOptions = Parameters<ChildPluginFactory>[0];
10
10
  export type GetFonts = () => Fonts;
11
11
  export type GatewayFactory<State extends object, Action extends object> = (offerContext: GlobalStoreOfferContext, interactivityChannel: ISubscribable<Interactivity> & IClearable) => IGateway<State, Action> & IDisposable;
12
12
  export type ActionInterceptor<Action extends object> = (action: Action) => Action | undefined;
13
+ /** Trusted parent services; the gateway binds the module's served offer identity. */
14
+ export interface ContinuousGatewayService {
15
+ register(context: GlobalStoreOfferContext, dispatch: (action: GlobalActions) => void): () => void;
16
+ launch(context: GlobalStoreOfferContext, child: PluginLayoutChild): Promise<boolean>;
17
+ }
13
18
  export type ModuleEventListener = {
14
19
  name: string;
15
20
  source: 'partner' | '*';
@@ -21,14 +26,20 @@ export interface IGateway<State extends object, Action extends object> {
21
26
  onInteractivityChange(callback: (interactivity: Interactivity) => void): () => void;
22
27
  globalDispatch(action: Action): void;
23
28
  createChildPlugin: ChildPluginFactory;
29
+ registerContinuousResponseHandler?: (dispatch: (action: GlobalActions) => void) => () => void;
30
+ launchContinuousChild?: (child: PluginLayoutChild) => Promise<boolean>;
31
+ scrollHostToViewportOffset?: (viewportOffsetY: number) => Promise<void>;
24
32
  }
25
33
  export interface IDisposable {
26
34
  dispose(): void;
27
35
  }
28
- export declare function makeGatewayFactory<State extends object, Action extends object>(globalStore: AbstractGlobalStore<State, Action>, createChildPlugin: ChildPluginFactory, onPartnerEvent: PartnerEventReceiver, getFonts?: GetFonts): GatewayFactory<State, Action>;
36
+ export declare function makeGatewayFactory<State extends object, Action extends object>(globalStore: AbstractGlobalStore<State, Action>, createChildPlugin: ChildPluginFactory, onPartnerEvent: PartnerEventReceiver, getFonts?: GetFonts, scrollHostToViewportOffset?: (viewportOffsetY: number) => Promise<void>, continuous?: ContinuousGatewayService): GatewayFactory<State, Action>;
29
37
  export declare class Gateway<State extends object, Action extends object> implements IGateway<State, Action>, IDisposable {
30
38
  #private;
31
- constructor(store: AbstractGlobalStore<State, Action>, createChildPlugin: ChildPluginFactory, context: GlobalStoreOfferContext, interactivityChannel: ISubscribable<Interactivity> & IClearable, onPartnerEvent: PartnerEventReceiver, getFonts?: GetFonts);
39
+ scrollHostToViewportOffset?: (viewportOffsetY: number) => Promise<void>;
40
+ registerContinuousResponseHandler?: (dispatch: (action: GlobalActions) => void) => () => void;
41
+ launchContinuousChild?: (child: PluginLayoutChild) => Promise<boolean>;
42
+ constructor(store: AbstractGlobalStore<State, Action>, createChildPlugin: ChildPluginFactory, context: GlobalStoreOfferContext, interactivityChannel: ISubscribable<Interactivity> & IClearable, onPartnerEvent: PartnerEventReceiver, getFonts?: GetFonts, scrollHostToViewportOffset?: (viewportOffsetY: number) => Promise<void>, continuous?: ContinuousGatewayService);
32
43
  onGlobalStateChange(callback: (globalState: State) => void): () => void;
33
44
  onInteractivityChange(callback: (interactivity: Interactivity) => void): () => void;
34
45
  onEvent(...moduleEventListeners: Array<ModuleEventListener>): () => void;
@@ -7,6 +7,9 @@ export interface ModuleAttributes {
7
7
  childLayouts: string;
8
8
  schemaVersion: string;
9
9
  visible: 'true' | 'false';
10
+ 'continuous-measurement'?: string;
11
+ 'expanded-owns-viewability'?: string;
12
+ 'measurement-occluded'?: string;
10
13
  container: 'row' | 'column';
11
14
  interactivity: Interactivity;
12
15
  offerState: string;
@@ -19,6 +19,7 @@ export interface IModuleConnector extends HTMLElement {
19
19
  getOfferPositionAttr(): number;
20
20
  getJSONAttr<Result>(att: string, defaultValue?: string): Result;
21
21
  connectedCallback(): void;
22
+ disconnectedCallback(): void;
22
23
  }
23
24
  export declare class ModuleConnectorBuilder {
24
25
  logger: (log: Log) => void;
@@ -13,5 +13,7 @@ type BridgeChannelMessage = {
13
13
  export declare function childLayoutBridge(gateway: GlobalGateway, logger: (log: Log) => void, childPlugin: ChildPluginInterface<BasicObject>, offerContext: {
14
14
  offer: PluginOffer;
15
15
  offerPositionIndex: number | undefined;
16
+ childInstanceGuid: string;
17
+ advanceOnDismiss?: boolean;
16
18
  }): Generator<PutEffect | CallEffect | CancelledEffect | RaceEffect<ChannelTakeEffect<BridgeChannelMessage> | CallEffect>, void, never>;
17
19
  export {};
@@ -36,6 +36,7 @@ export declare const stateActionTypes: {
36
36
  readonly INITIALISE_BREAKPOINT: "BREAKPOINT/INITIALISE";
37
37
  readonly ACTIVE_ADD: "ACTIVE/ADD";
38
38
  readonly ACTIVE_DELETE: "ACTIVE/DELETE";
39
+ readonly SET_ATTRIBUTES: "ATTRIBUTES/SET";
39
40
  readonly SET_FONTS: "FONTS/SET";
40
41
  readonly QUEUE_SIGNAL: "SIGNAL/QUEUE";
41
42
  readonly SIGNAL_PROCESSED: "SIGNAL/PROCESSED";
@@ -1,47 +1,4 @@
1
1
  import React from 'react';
2
- import { ProgressControlModel, NonInteractableChildren, WhenPredicate } from '@rokt/dcui-layout-schema';
3
- export interface ProgressControlProps {
4
- /**
5
- * - `a11yLabel`: the aria-label for the button
6
- * - `direction`: 'Forward' | 'Backward'.
7
- * - `children`: it can accept below nodes,
8
- * * `Row`
9
- * * `Column`
10
- * * `ZStack`
11
- * * `BasicText`
12
- * * `StaticImage`
13
- * * `When`
14
- * * `InlineContainer`
15
- * - `styles`:
16
- * * `elements`:
17
- * * `own`:
18
- * - `container`
19
- * - `background`
20
- * - `border`
21
- * - `dimension`
22
- * - `flexChild`
23
- * - `spacing`
24
- * * `transitions`:
25
- * - `type`: 'Conditional'
26
- * - `transition`:
27
- * * `predicates`: WhenPredicate[]
28
- * * `duration`: number
29
- * * `value`:
30
- * * `own`:
31
- * - `container`
32
- * - `background`
33
- * - `border`
34
- * - `dimension`
35
- * - `flexChild`
36
- * - `spacing`
37
- */
38
- schema: ProgressControlModel<NonInteractableChildren, WhenPredicate>;
39
- testId?: string;
40
- }
41
- /**The ProgressControl is a progress node that facilitates navigation
42
- * through sequential steps or stages of a process or content.<br>
43
- * It offers users the ability to move both forward and backward
44
- * within a linear progression, allowing them to review and control their journey.<br>
45
- * *Where can we use this: __outer layout__*
46
- * */
2
+ import { ProgressControlProps as SharedProgressControlProps } from '../../../../dcui-components/src/index';
3
+ export type ProgressControlProps = Omit<SharedProgressControlProps, 'onClick' | 'disabled'>;
47
4
  export declare function ProgressControl(props: ProgressControlProps): React.JSX.Element;
@@ -1,9 +1 @@
1
- import * as React from 'react';
2
- import { ProgressIndicatorProps } from './types';
3
- /** The ProgressIndicator is a progress node that provides users with real-time
4
- * feedback on the status of ongoing processes or actions.<br>
5
- * It's a visual representation of progress, often displayed as a bar,
6
- * circle, or numerical percentage.<br>
7
- * *Where can we use this: __outer layout__*
8
- * */
9
- export declare function ProgressIndicator({ activeIndex, startIndex, numOfIndicators, schema, }: ProgressIndicatorProps): React.JSX.Element | null;
1
+ export { ProgressIndicator } from '../../../../dcui-components/src/index';
@@ -1,87 +1 @@
1
- import { ProgressIndicatorModel, WhenPredicate } from '@rokt/dcui-layout-schema';
2
- export interface StateProps {
3
- /** The number of indicators */
4
- numOfIndicators: number;
5
- /** The currently active index. */
6
- activeIndex: number;
7
- /** The index of the indicator to start displaying from **/
8
- startIndex: number;
9
- }
10
- export interface OwnProps {
11
- /**
12
- * - `indicator`: The string content of the indicator.
13
- * - `styles`:
14
- * * `elements`:
15
- * * `own`:
16
- * - `container`
17
- * - `background`
18
- * - `border`
19
- * - `dimension`
20
- * - `flexChild`
21
- * - `spacing`
22
- * * `indicator`:
23
- * - `container`
24
- * - `background`
25
- * - `border`
26
- * - `dimension`
27
- * - `flexChild`
28
- * - `spacing`
29
- * - `text`
30
- * * `activeIndicator`:
31
- * - `container`
32
- * - `background`
33
- * - `border`
34
- * - `dimension`
35
- * - `flexChild`
36
- * - `spacing`
37
- * - `text`
38
- * * `seenIndicator`:
39
- * - `container`
40
- * - `background`
41
- * - `border`
42
- * - `dimension`
43
- * - `flexChild`
44
- * - `spacing`
45
- * - `text`
46
- * * `transitions`:
47
- * - `type`: 'Conditional'
48
- * - `transition`:
49
- * * `predicates`: WhenPredicate[]
50
- * * `duration`: number
51
- * * `value`:
52
- * * `own`:
53
- * - `container`
54
- * - `background`
55
- * - `border`
56
- * - `dimension`
57
- * - `flexChild`
58
- * - `spacing`
59
- * * `indicator`:
60
- * - `container`
61
- * - `background`
62
- * - `border`
63
- * - `dimension`
64
- * - `flexChild`
65
- * - `spacing`
66
- * - `text`
67
- * * `activeIndicator`:
68
- * - `container`
69
- * - `background`
70
- * - `border`
71
- * - `dimension`
72
- * - `flexChild`
73
- * - `spacing`
74
- * - `text`
75
- * * `seenIndicator`:
76
- * - `container`
77
- * - `background`
78
- * - `border`
79
- * - `dimension`
80
- * - `flexChild`
81
- * - `spacing`
82
- * - `text`
83
- */
84
- schema: ProgressIndicatorModel<WhenPredicate>;
85
- }
86
- export interface ProgressIndicatorProps extends OwnProps, StateProps {
87
- }
1
+ export type { ProgressIndicatorProps, ProgressIndicatorStateProps as StateProps, ProgressIndicatorSchemaProps as OwnProps, } from '../../../../dcui-components/src/index';
@@ -0,0 +1,54 @@
1
+ import { RaiseSignal } from '../../../domain/src/behaviors';
2
+ import { Impression, Viewed } from '../../../domain/src/models';
3
+ export interface CreativeIdentity {
4
+ creativeInstanceGuid: string;
5
+ offerPositionIndex: number;
6
+ }
7
+ export interface PresentationIdentity extends CreativeIdentity {
8
+ sessionId: string;
9
+ revision: number;
10
+ }
11
+ export type Qualification = Pick<Viewed, 'supportedByBrowser' | 'inferred'>;
12
+ type MeasurementStore = {
13
+ dispatch(action: RaiseSignal): void;
14
+ };
15
+ /** One registry per parent store/selection, never one per child session. */
16
+ export declare function getContinuousMeasurement(store: MeasurementStore): CreativeMeasurement;
17
+ /**
18
+ * Parent-owned creative signals. Layout/slot signals deliberately bypass this
19
+ * ledger. Registration is explicit: the disabled capability and ordinary layouts
20
+ * must never change their existing measurement just because a child exists.
21
+ */
22
+ export declare class CreativeMeasurement {
23
+ private readonly emit;
24
+ private readonly creatives;
25
+ private readonly presentations;
26
+ private sessionId;
27
+ private highestRevision;
28
+ private occluded;
29
+ private readonly listeners;
30
+ constructor(emit: (action: RaiseSignal) => void);
31
+ /** A new served selection is a new lifetime; reopening the child is not. */
32
+ resetSelection(): void;
33
+ registerCreative(identity: CreativeIdentity, ownsViewability: boolean): void;
34
+ getEmbeddedPolicy(identity: CreativeIdentity): {
35
+ registered: boolean;
36
+ ownsViewability: boolean;
37
+ occluded: boolean;
38
+ };
39
+ subscribe(listener: () => void): () => void;
40
+ setOccluded(occluded: boolean): void;
41
+ /** Consumes only opted-in CREATIVE signals; false means use the legacy path. */
42
+ reportEmbedded(identity: CreativeIdentity, signal: Impression | Viewed): boolean;
43
+ /** Called after the child applied the snapshot, not when it was configured. */
44
+ acknowledge(identity: PresentationIdentity): boolean;
45
+ beginSession(sessionId: string): void;
46
+ endSession(): void;
47
+ reportExpanded(identity: PresentationIdentity, qualification?: Qualification): boolean;
48
+ private getCreative;
49
+ private matchesAcknowledged;
50
+ private render;
51
+ private qualify;
52
+ private notify;
53
+ }
54
+ export {};
@@ -14,6 +14,7 @@ export declare const appReducers: {
14
14
  layout: typeof import("../../../layout-renderer-utils/src/index").layoutReducer;
15
15
  breakpoint: typeof import("../../../layout-renderer-utils/src/index").breakpointReducer;
16
16
  active: typeof import("../../../layout-renderer-utils/src/index").activeReducer;
17
+ attributes: typeof import("../../../layout-renderer-utils/src/index").attributesReducer;
17
18
  fonts: typeof import("../../../layout-renderer-utils/src/index").fontsReducer;
18
19
  signal: typeof import("../../../layout-renderer-utils/src/index").signalReducer;
19
20
  serializableCache: typeof import("../../../layout-renderer-utils/src/index").serializableCacheReducer;
@@ -0,0 +1,15 @@
1
+ import { ContinuousPresentationInput } from '../../../../domain/src/behaviors';
2
+ import { ContinuousGatewayService } from '../../../../module-connector/src/main';
3
+ import type { AppStore } from '../../store';
4
+ import { PluginService } from '../../plugin-service';
5
+ import { ContinuousChildCoordinator } from './continuous-child';
6
+ export declare function isContinuousEngagement(action: unknown): boolean;
7
+ /** Connect the coordinator to trusted selected slots and the existing module response path. */
8
+ export declare function makeContinuousChildHost(store: Pick<AppStore, 'getState' | 'dispatch' | 'subscribe'>, service: PluginService, enabled?: boolean): {
9
+ gateway: ContinuousGatewayService | undefined;
10
+ coordinator: ContinuousChildCoordinator;
11
+ getSequence: (key: string, onRejected?: (reason: string) => void) => ContinuousPresentationInput[] | undefined;
12
+ transformAction(action: unknown): unknown;
13
+ observeAction(action: unknown): void;
14
+ close(): Promise<void>;
15
+ };
@@ -0,0 +1,52 @@
1
+ import { LinkOpenTarget } from '@rokt/dcui-layout-schema';
2
+ import { ContinuousExposure, ContinuousPresentation, ContinuousPresentationInput } from '../../../../domain/src/behaviors';
3
+ export interface ContinuousChildTransport {
4
+ send(name: string, payload: object): Promise<void>;
5
+ onEvent(name: string): {
6
+ subscribe(callback: (value: unknown) => void): {
7
+ unsubscribe(): void;
8
+ };
9
+ };
10
+ close(): Promise<void>;
11
+ onClose(): Promise<void>;
12
+ }
13
+ export interface ContinuousChildDependencies {
14
+ createChild(presentation: ContinuousPresentation): Promise<ContinuousChildTransport>;
15
+ getSequence(key: string): ContinuousPresentationInput[] | undefined;
16
+ getActivePosition(): number;
17
+ navigate(position: number): void;
18
+ respond(position: number, key: 'positive' | 'negative', openLinks?: LinkOpenTarget): Promise<void>;
19
+ dismiss(position: number, dismissalMethod?: string): Promise<void>;
20
+ onApplied?(presentation: ContinuousPresentation): void;
21
+ onExposure?(presentation: ContinuousPresentation, report: ContinuousExposure): void;
22
+ onOcclusion?(occluded: boolean): void;
23
+ onError?(error: Error): void;
24
+ }
25
+ export declare function compatibleContinuousSequence(sequence: ContinuousPresentationInput[]): boolean;
26
+ /** One parent-owned session. Never rebinds the launching module's gateway. */
27
+ export declare class ContinuousChildCoordinator {
28
+ private readonly dependencies;
29
+ private child?;
30
+ private sequence;
31
+ private current?;
32
+ private applied?;
33
+ private acknowledged;
34
+ private subscriptions;
35
+ private actionIds;
36
+ private busy;
37
+ private opening;
38
+ private ready;
39
+ private epoch;
40
+ private acknowledgementTimer?;
41
+ private key;
42
+ constructor(dependencies: ContinuousChildDependencies);
43
+ open(position: number, key: string): Promise<boolean>;
44
+ /** Called on authoritative parent progression changes. */
45
+ sync(): void;
46
+ private makePresentation;
47
+ private push;
48
+ private request;
49
+ private awaitAcknowledgement;
50
+ private reset;
51
+ close(): Promise<void>;
52
+ }
@@ -1,4 +1,4 @@
1
1
  import { GlobalGatewayFactory } from '../../../module-connector/src/main';
2
2
  import { PluginService } from '../plugin-service';
3
3
  export * from './plugin';
4
- export declare function appSagas(pluginService: PluginService, gatewayFactory: GlobalGatewayFactory): Generator<import("redux-saga/effects").AllEffect<import("redux-saga/effects").ForkEffect<void> | Generator<import("redux-saga/effects").CallEffect | import("redux-saga/effects").TakeEffect, void, import("redux-saga").TakeableChannel<unknown> | undefined> | Generator<import("redux-saga/effects").CallEffect | import("redux-saga/effects").ActionChannelEffect | import("redux-saga/effects").ChannelTakeEffect<unknown>, void, import("redux-saga").TakeableChannel<unknown> | undefined>>, void, unknown>;
4
+ export declare function appSagas(pluginService: PluginService, gatewayFactory: GlobalGatewayFactory, closeContinuous?: () => Promise<void>): Generator<import("redux-saga/effects").AllEffect<import("redux-saga/effects").ForkEffect<void> | Generator<import("redux-saga/effects").CallEffect | import("redux-saga/effects").TakeEffect, void, import("redux-saga").TakeableChannel<unknown> | undefined> | Generator<import("redux-saga/effects").CallEffect | import("redux-saga/effects").ActionChannelEffect | import("redux-saga/effects").ChannelTakeEffect<unknown>, void, import("redux-saga").TakeableChannel<unknown> | undefined>>, void, unknown>;
@@ -0,0 +1,7 @@
1
+ import { PluginInterface } from '@rokt/plugin';
2
+ import { NormalizedAttributes } from '@rokt/plugin/interface/attributes';
3
+ import { Callback, Unsubscriber } from '@rokt/plugin/interface/subscriber';
4
+ export type AttributesService = {
5
+ subscribe(value?: Callback<[NormalizedAttributes]>, error?: Callback, complete?: Callback): Unsubscriber;
6
+ };
7
+ export declare const makeAttributesService: (pluginInterface: Pick<PluginInterface, "attributes">) => AttributesService;
@@ -1,6 +1,7 @@
1
1
  import { DisplayInterface, PluginInterface } from '@rokt/plugin';
2
2
  import { EventChannel } from 'redux-saga';
3
3
  export type DisplayService = Pick<DisplayInterface, 'setDisplaySettings'> & {
4
+ scrollHostToViewportOffset?(viewportOffsetY: number): Promise<void>;
4
5
  activeBreakpointEventChannel?(breakpoints: Record<string, number>): EventChannel<string>;
5
6
  };
6
7
  export declare const makeDisplayService: (pluginInterface: Pick<PluginInterface, 'display'>) => DisplayService;
@@ -1,4 +1,5 @@
1
1
  import { ErrorInterface, PluginInterface, RDNInterface, ThemeInterface } from '@rokt/plugin';
2
+ import { AttributesService } from './attributes';
2
3
  import { ContextService } from './context';
3
4
  import { MetricsService } from './metrics';
4
5
  import { DisplayService } from './display';
@@ -6,8 +7,9 @@ import { PartnerInteractionService } from './partner-interaction';
6
7
  import { ParentInteractionService } from './parent-interaction';
7
8
  import { ConfigService } from './config';
8
9
  import { ChildPluginService } from './child-plugin';
9
- export { ContextService, MetricsService, DisplayService, PartnerInteractionService, ParentInteractionService, ConfigService, ChildPluginService, };
10
+ export { AttributesService, ContextService, MetricsService, DisplayService, PartnerInteractionService, ParentInteractionService, ConfigService, ChildPluginService, };
10
11
  export interface PluginService<T> {
12
+ attributesService: AttributesService;
11
13
  contextService: ContextService;
12
14
  configService: ConfigService<T>;
13
15
  partnerInteractionService: PartnerInteractionService;
@@ -6,10 +6,17 @@ export declare const TRIGGER_SELECT_ITEM = "CATALOG/TRIGGER_SELECT_ITEM";
6
6
  export type TriggerSelectItemAction = {
7
7
  type: typeof TRIGGER_SELECT_ITEM;
8
8
  payload: SetSelectedItemPayload;
9
+ preserveAttributeSelections?: boolean;
9
10
  };
10
11
  export declare const SET_SELECTED_ITEM = "CATALOG/SET_SELECTED_ITEM";
11
12
  export type SetSelectedItemAction = {
12
13
  type: typeof SET_SELECTED_ITEM;
13
14
  payload: SetSelectedItemPayload;
15
+ preserveAttributeSelections?: boolean;
14
16
  };
15
- export type CatalogSelectionActions = SetSelectedItemAction | TriggerSelectItemAction;
17
+ export declare const SET_CATALOG_ATTRIBUTE_SELECTIONS = "CATALOG/SET_ATTRIBUTE_SELECTIONS";
18
+ export type SetCatalogAttributeSelectionsAction = {
19
+ type: typeof SET_CATALOG_ATTRIBUTE_SELECTIONS;
20
+ payload: Record<string, string>;
21
+ };
22
+ export type CatalogSelectionActions = SetCatalogAttributeSelectionsAction | SetSelectedItemAction | TriggerSelectItemAction;
@@ -42,6 +42,8 @@ export interface PushTaxAndShippingPayload {
42
42
  }
43
43
  export interface MarkTaxAndShippingPendingPayload {
44
44
  cacheKey: string;
45
+ requestId: string;
46
+ preserveEstimate?: boolean;
45
47
  }
46
48
  export declare const INITIATE_INSTANT_PURCHASE = "INSTANT_PURCHASE/INITIATE";
47
49
  export type InitiateInstantPurchase = {
@@ -92,6 +94,8 @@ export type SetActiveTaxAndShippingKey = {
92
94
  };
93
95
  export type InitiateTaxAndShippingPayload = {
94
96
  catalogItem: PluginCatalogItem;
97
+ force?: boolean;
98
+ requestId?: string;
95
99
  };
96
100
  export declare const INITIATE_TAX_AND_SHIPPING = "INSTANT_PURCHASE/INITIATE_TAX_AND_SHIPPING";
97
101
  export type InitiateTaxAndShipping = {
@@ -112,7 +112,15 @@ export interface CatalogDevicePayButtonProps {
112
112
  testId?: string;
113
113
  }
114
114
  type CatalogDevicePayButtonStyles = NonNullable<CatalogDevicePayButtonProps['schema']['styles']>;
115
+ /**
116
+ * Whether the backend marked this catalog item as purchasable with PayPal. The
117
+ * flag rides in the item's `providerData` JSON and is omitted when false, so
118
+ * anything other than an explicit `true` (absent, malformed, wrong type) means
119
+ * the item is not PayPal-enabled.
120
+ */
121
+ export declare function isPayPalEnabled(providerData: string | undefined): boolean;
115
122
  export declare function getCatalogDevicePayButtonStyles(styles: CatalogDevicePayButtonProps['schema']['styles']): CatalogDevicePayButtonStyles;
123
+ export declare function getPayPalButtonStyles(styles: CatalogDevicePayButtonProps['schema']['styles']): CatalogDevicePayButtonStyles;
116
124
  /**The CatalogDevicePayButton is a button node that generates a Call-to-Action button
117
125
  * for initiating a device payment transaction using the associated payment provider.
118
126
  * *Where can we use this: __layout variant__*
@@ -1,6 +1,36 @@
1
1
  import React from 'react';
2
2
  import { CatalogSelectorsStackedModel, LayoutSchemaModel, WhenPredicate } from '@rokt/dcui-layout-schema';
3
3
  export interface CatalogSelectorsStackedProps<Template extends LayoutSchemaModel> {
4
+ /**
5
+ * - `default`: the template rendered once per variant dimension.
6
+ * `CatalogDropdown` includes its own visible dimension label. Do not add a
7
+ * separate label node. Each render also exposes tokens for custom content:
8
+ * * `%^DATA.variantAttribute.attributeId^%`: the dimension id, e.g.
9
+ * `color`. It comes from the merchant's variant option key and is
10
+ * neither normalised nor guaranteed lowercase or single-word, so
11
+ * `shoe_size` reaches the shopper verbatim. Apply casing with the node's
12
+ * `text.textTransform` rather than transforming the value, so `When`
13
+ * comparisons stay stable.
14
+ * * `%^DATA.variantAttribute.hasMultipleOptions^%`: `"true"` or `"false"`.
15
+ * `CatalogDropdown` renders neither label nor control for a single option,
16
+ * and the whole template for that dimension is hidden, so it takes no
17
+ * space in the stack.
18
+ * Tokens from the enclosing scope stay resolvable alongside these.
19
+ *
20
+ * Keep the dropdown mounted. A `When` that encloses it would stop it mounting, and
21
+ * a dropdown that never mounts never registers its validator field key —
22
+ * a trigger that then resolves zero keys fails closed, blocking the CTA
23
+ * with nothing on screen to explain it.
24
+ *
25
+ * Bind custom text with `BasicText`. `RichText` sends the value through the
26
+ * HTML sanitiser, which throws on markup-shaped input; the node is then
27
+ * dropped by its error boundary.
28
+ * - `dropdown`: accepted by the layout schema, currently ignored — this
29
+ * component only ever renders `default`.
30
+ * - `styles`:
31
+ * * `elements`:
32
+ * - `own`
33
+ */
4
34
  schema: CatalogSelectorsStackedModel<Template, WhenPredicate>;
5
35
  testId?: string;
6
36
  }
@@ -1,5 +1,6 @@
1
1
  export type DevicePayAvailabilityResponse = {
2
2
  applePay?: boolean;
3
3
  afterpay?: boolean;
4
+ paypal?: boolean;
4
5
  };
5
6
  export type DevicePayAvailabilityState = DevicePayAvailabilityResponse | null;
@@ -24,6 +24,8 @@ export interface TaxAndShippingData {
24
24
  }
25
25
  export interface TaxAndShippingEntry {
26
26
  isPending: boolean;
27
+ requestId?: string;
28
+ purchaseId?: string;
27
29
  taxAndShippingData?: TaxAndShippingData;
28
30
  }
29
31
  export interface TaxAndShippingState {
@@ -34,6 +36,7 @@ export declare const INSTANT_PURCHASE_INITIATE_TAX_AND_SHIPPING_EVENT = "INSTANT
34
36
  export declare const INSTANT_PURCHASE_TAX_AND_SHIPPING_RESPONSE = "INSTANT_PURCHASE_TAX_AND_SHIPPING_RESPONSE";
35
37
  export interface InstantPurchaseInitiateTaxAndShippingEventPayload {
36
38
  cacheKey: string;
39
+ requestId?: string;
37
40
  totalUpsellPrice: number;
38
41
  currency: string;
39
42
  upsellItems: UpsellItem[];
@@ -65,6 +68,7 @@ export interface InstantPurchaseTaxAndShippingResponseEnvelope {
65
68
  }
66
69
  export interface InstantPurchaseTaxAndShippingResponsePayload {
67
70
  cacheKey: string;
71
+ requestId?: string;
68
72
  timestamp: string;
69
73
  sessionId: string;
70
74
  response?: InstantPurchaseTaxAndShippingResponseEnvelope;
@@ -1,4 +1,6 @@
1
1
  import { AnyAction } from '@reduxjs/toolkit';
2
2
  import { CatalogSelectionState } from '../../models/state/catalog-selection';
3
+ export type CatalogAttributeSelectionsState = Record<string, string> | null;
4
+ export declare const catalogAttributeSelectionsReducer: (state: CatalogAttributeSelectionsState | undefined, action: AnyAction) => CatalogAttributeSelectionsState;
3
5
  export declare function makeInitialCatalogSelectionState(): CatalogSelectionState;
4
6
  export declare const catalogReducer: (state: CatalogSelectionState | undefined, action: AnyAction) => CatalogSelectionState;