@rokt/dcui-orchestrator 1.2.1-rc.6 → 1.2.1-rc.61

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 (123) hide show
  1. package/dist/index.cjs +47 -38
  2. package/dist/index.js +59 -50
  3. package/dist/libraries/dcui-components/src/components/index.d.ts +3 -0
  4. package/dist/libraries/dcui-components/src/components/paypal-button/index.d.ts +1 -0
  5. package/dist/libraries/dcui-components/src/components/paypal-button/paypal-button.d.ts +78 -0
  6. package/dist/libraries/dcui-components/src/components/paypal-button/paypal-wordmark.d.ts +10 -0
  7. package/dist/libraries/dcui-components/src/components/progress-control/index.d.ts +1 -0
  8. package/dist/libraries/dcui-components/src/components/progress-control/progress-control.d.ts +49 -0
  9. package/dist/libraries/dcui-components/src/components/progress-indicator/get-progress-indicator-state.d.ts +3 -0
  10. package/dist/libraries/dcui-components/src/components/progress-indicator/index.d.ts +3 -0
  11. package/dist/libraries/dcui-components/src/components/progress-indicator/progress-indicator.d.ts +8 -0
  12. package/dist/libraries/dcui-components/src/components/progress-indicator/types.d.ts +88 -0
  13. package/dist/libraries/dcui-components/src/components/style-mapper/combiners/escape-css-string.d.ts +19 -0
  14. package/dist/libraries/dcui-components/src/components/style-mapper/combiners/index.d.ts +1 -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 +2 -0
  19. package/dist/libraries/dcui-components/src/utils/index.d.ts +1 -0
  20. package/dist/libraries/dcui-components/src/utils/link-schemes.d.ts +35 -0
  21. package/dist/libraries/dcui-components/src/utils/responsive-css.d.ts +9 -0
  22. package/dist/libraries/domain/src/behaviors/continuous-child.d.ts +62 -0
  23. package/dist/libraries/domain/src/behaviors/custom-states.d.ts +8 -1
  24. package/dist/libraries/domain/src/behaviors/index.d.ts +1 -0
  25. package/dist/libraries/domain/src/behaviors/offer-engagement.d.ts +11 -0
  26. package/dist/libraries/domain/src/behaviors/send-partner.d.ts +14 -2
  27. package/dist/libraries/domain/src/behaviors/trigger-action.d.ts +3 -3
  28. package/dist/libraries/domain/src/models/child-layout-response.d.ts +6 -0
  29. package/dist/libraries/domain/src/models/form-state.d.ts +85 -0
  30. package/dist/libraries/domain/src/models/global-state.d.ts +15 -1
  31. package/dist/libraries/domain/src/models/index.d.ts +1 -0
  32. package/dist/libraries/domain/src/models/layout/layout-offer.d.ts +2 -0
  33. package/dist/libraries/domain/src/models/partner-event.d.ts +1 -1
  34. package/dist/libraries/domain/src/models/plugin/plugin-child-layout-model.d.ts +1 -0
  35. package/dist/libraries/domain/src/models/plugin/plugin-offer.d.ts +2 -0
  36. package/dist/libraries/domain/src/models/purchase.d.ts +3 -0
  37. package/dist/libraries/layout-renderer-utils/src/reducers/breakpoint/coerce-breakpoints.d.ts +19 -0
  38. package/dist/libraries/layout-renderer-utils/src/reducers/breakpoint/index.d.ts +1 -0
  39. package/dist/libraries/layout-renderer-utils/src/sagas/error/error-codes.d.ts +3 -0
  40. package/dist/libraries/layout-renderer-utils/src/sagas/plugin/display.d.ts +3 -0
  41. package/dist/libraries/layout-renderer-utils/src/sagas/plugin/sagas.d.ts +4 -1
  42. package/dist/libraries/layout-renderer-utils/src/sagas/utils/index.d.ts +8 -1
  43. package/dist/libraries/layout-renderer-utils/src/sagas/utils/links.d.ts +28 -1
  44. package/dist/libraries/module-connector/src/main.d.ts +1 -1
  45. package/dist/libraries/module-connector/src/models/gateway.d.ts +19 -3
  46. package/dist/libraries/module-connector/src/models/module-attributes.d.ts +3 -0
  47. package/dist/libraries/module-connector/src/models/module-connector-builder.d.ts +1 -0
  48. package/dist/libraries/module-utils/src/sagas/child-layouts/sagas.d.ts +14 -4
  49. package/dist/libraries/orchestrator/src/actions/global-offer-data-state.d.ts +11 -1
  50. package/dist/libraries/orchestrator/src/actions/index.d.ts +2 -0
  51. package/dist/libraries/orchestrator/src/actions/module.d.ts +9 -1
  52. package/dist/libraries/orchestrator/src/cart-listener-gateway.d.ts +7 -0
  53. package/dist/libraries/orchestrator/src/components/progress-control/progress-control.d.ts +2 -45
  54. package/dist/libraries/orchestrator/src/components/progress-indicator/progress-indicator.d.ts +1 -9
  55. package/dist/libraries/orchestrator/src/components/progress-indicator/types.d.ts +1 -87
  56. package/dist/libraries/orchestrator/src/measurement/creative-measurement.d.ts +54 -0
  57. package/dist/libraries/orchestrator/src/models/state/global-offer-data-state.d.ts +6 -0
  58. package/dist/libraries/orchestrator/src/models/state/module.d.ts +1 -0
  59. package/dist/libraries/orchestrator/src/reducers/progression/reducer.d.ts +8 -0
  60. package/dist/libraries/orchestrator/src/sagas/child-layouts/continuous-child-host.d.ts +15 -0
  61. package/dist/libraries/orchestrator/src/sagas/child-layouts/continuous-child.d.ts +52 -0
  62. package/dist/libraries/orchestrator/src/sagas/index.d.ts +1 -1
  63. package/dist/libraries/orchestrator/src/sagas/offer-engagement/sagas.d.ts +3 -3
  64. package/dist/libraries/orchestrator/src/sagas/partner-cart-sync/sagas.d.ts +2 -2
  65. package/dist/libraries/orchestrator/src/sagas/progression/sagas.d.ts +8 -2
  66. package/dist/libraries/orchestrator/src/sagas/utils/distribution.d.ts +21 -0
  67. package/dist/libraries/orchestrator/src/sagas/utils/index.d.ts +3 -0
  68. package/dist/libraries/orchestrator/src/selectors/global-offer-data-state/selectors.d.ts +8 -1
  69. package/dist/libraries/plugin-utils/src/plugin-service/display.d.ts +1 -0
  70. package/dist/libraries/saga-utils/src/utils/index.d.ts +1 -0
  71. package/dist/libraries/saga-utils/src/utils/quantity-rules.d.ts +184 -0
  72. package/dist/modules/add-to-cart/src/actions/cart.d.ts +7 -1
  73. package/dist/modules/add-to-cart/src/actions/catalog-item.d.ts +15 -1
  74. package/dist/modules/add-to-cart/src/components/when-catalog-quantity/when-catalog-quantity.d.ts +2 -1
  75. package/dist/modules/add-to-cart/src/reducers/cart/reducer.d.ts +2 -1
  76. package/dist/modules/add-to-cart/src/sagas/index.d.ts +2 -1
  77. package/dist/modules/add-to-cart/src/sagas/update-cart-item/sagas.d.ts +6 -3
  78. package/dist/modules/add-to-cart/src/selectors/cart/selectors.d.ts +31 -0
  79. package/dist/modules/add-to-cart/src/selectors/catalogItems/selectors.d.ts +8 -0
  80. package/dist/modules/instant-purchase/src/actions/instant-purchase.d.ts +4 -0
  81. package/dist/modules/instant-purchase/src/components/catalog-device-pay-button/catalog-device-pay-button.d.ts +8 -0
  82. package/dist/modules/instant-purchase/src/components/catalog-selectors-stacked/catalog-selectors-stacked.d.ts +30 -0
  83. package/dist/modules/instant-purchase/src/constants/device-pay-error.d.ts +1 -1
  84. package/dist/modules/instant-purchase/src/models/state/device-pay-availability.d.ts +2 -0
  85. package/dist/modules/instant-purchase/src/models/state/instant-purchase.d.ts +4 -0
  86. package/dist/modules/instant-purchase/src/sagas/device-pay/sagas.d.ts +2 -7
  87. package/dist/modules/instant-purchase/src/sagas/instant-purchase/sagas.d.ts +17 -3
  88. package/dist/modules/instant-purchase/src/sagas/paypal/sagas.d.ts +2 -0
  89. package/dist/modules/instant-purchase/src/sagas/tax-and-shipping/sagas.d.ts +10 -20
  90. package/dist/modules/instant-purchase/src/selectors/catalog-selection/index.d.ts +1 -0
  91. package/dist/modules/instant-purchase/src/selectors/catalog-selection/selectors.d.ts +7 -0
  92. package/dist/modules/instant-purchase/src/selectors/device-pay-availability/selectors.d.ts +2 -0
  93. package/dist/modules/instant-purchase/src/selectors/index.d.ts +1 -0
  94. package/dist/modules/instant-purchase/src/selectors/tax-and-shipping/selectors.d.ts +8 -0
  95. package/dist/modules/instant-purchase/src/utils/compute-selections-for-item.d.ts +7 -0
  96. package/dist/modules/instant-purchase/src/utils/create-tax-and-shipping-cache-key.d.ts +4 -0
  97. package/dist/modules/instant-purchase/src/utils/parse-non-negative-monetary-amount.d.ts +1 -0
  98. package/dist/modules/instant-purchase/src/utils/requires-tax-and-shipping-initialization.d.ts +2 -0
  99. package/dist/modules/standard-marketing/src/sagas/offer-engagement/sagas.d.ts +2 -1
  100. package/node_modules/@rokt/dcui-layout-schema/dist/schema.d.ts +583 -21
  101. package/node_modules/@rokt/dcui-layout-schema/dist/tsconfig.tsbuildinfo +1 -1
  102. package/node_modules/@rokt/dcui-layout-schema/package.json +1 -1
  103. package/node_modules/@rokt/dcui-layout-schema/v1.21/index.d.ts +7105 -0
  104. package/node_modules/@rokt/dcui-layout-schema/v1.21/index.js +4 -0
  105. package/node_modules/@rokt/dcui-layout-schema/v1.22/index.d.ts +7121 -0
  106. package/node_modules/@rokt/dcui-layout-schema/v1.22/index.js +4 -0
  107. package/node_modules/@rokt/dcui-layout-schema/v1.23/index.d.ts +7126 -0
  108. package/node_modules/@rokt/dcui-layout-schema/v1.23/index.js +4 -0
  109. package/node_modules/@rokt/dcui-layout-schema/v1.24/index.d.ts +7492 -0
  110. package/node_modules/@rokt/dcui-layout-schema/v1.24/index.js +4 -0
  111. package/node_modules/@rokt/dcui-layout-schema/v1.25/index.d.ts +7510 -0
  112. package/node_modules/@rokt/dcui-layout-schema/v1.25/index.js +4 -0
  113. package/node_modules/@rokt/dcui-layout-schema/v1.26/index.d.ts +7516 -0
  114. package/node_modules/@rokt/dcui-layout-schema/v1.26/index.js +4 -0
  115. package/node_modules/@rokt/dcui-layout-schema/v1.27/index.d.ts +7577 -0
  116. package/node_modules/@rokt/dcui-layout-schema/v1.27/index.js +4 -0
  117. package/node_modules/@rokt/dcui-layout-schema/v1.28/index.d.ts +7628 -0
  118. package/node_modules/@rokt/dcui-layout-schema/v1.28/index.js +4 -0
  119. package/node_modules/@rokt/dcui-layout-schema/v1.29/index.d.ts +7643 -0
  120. package/node_modules/@rokt/dcui-layout-schema/v1.29/index.js +4 -0
  121. package/node_modules/@rokt/dcui-layout-schema/v1.30/index.d.ts +7659 -0
  122. package/node_modules/@rokt/dcui-layout-schema/v1.30/index.js +4 -0
  123. package/package.json +2 -2
@@ -83,3 +83,88 @@ export interface FormFieldRef {
83
83
  * ActionButton (to gate dispatch) so both resolve entries identically.
84
84
  */
85
85
  export declare function resolveFormFieldRefs(formStates: FormStatesState, entries: string[]): FormFieldRef[];
86
+ /**
87
+ * The longest `Pattern` a layout may register. A longer one is refused by
88
+ * {@link scanPattern}: the form-state reducer drops it at registration and
89
+ * {@link matchesPattern} treats it as non-blocking.
90
+ */
91
+ export declare const MAX_PATTERN_LENGTH = 256;
92
+ /**
93
+ * The longest value a `Pattern` validation tests, whatever the pattern. A
94
+ * longer value fails the validation with its message, untested. The rules of
95
+ * {@link scanPattern} bound the engine's work on a value of this length and
96
+ * on no other.
97
+ */
98
+ export declare const MAX_PATTERN_VALUE_LENGTH = 512;
99
+ /** Why {@link scanPattern} refused a pattern: the first rule it broke. */
100
+ export type PatternRefusal = 'too-long' | 'backreference' | 'nested-quantifier' | 'repeated-alternation' | 'quantified-lookaround' | 'too-many-repetitions' | 'count-too-wide' | 'too-many-ways' | 'too-many-steps' | 'invalid';
101
+ /** What {@link scanPattern} read: the verdict, with a refusal's reason. */
102
+ export type PatternScan = {
103
+ safe: true;
104
+ } | {
105
+ safe: false;
106
+ reason: PatternRefusal;
107
+ };
108
+ /**
109
+ * The walk behind {@link isSafePattern}: one pass over the pattern's syntax,
110
+ * with no reading of what the atoms match. Escapes and `[...]` classes are
111
+ * one token each, so a `(`, `|` or `*` inside them is literal. The rules are
112
+ * blunt by design: each refuses a shape that can backtrack past the value
113
+ * cap, and with it the safe patterns of the same shape. The check that reads
114
+ * a pattern's real cost belongs at publish time, in the service that stores
115
+ * the layout. Refused, in the order the rules are read:
116
+ *
117
+ * 1. a pattern longer than {@link MAX_PATTERN_LENGTH};
118
+ * 2. a backreference, `\1` or `\k<name>`;
119
+ * 3. a repeated group that holds a quantifier of its own, at any depth:
120
+ * `(a+)+`, `(\d{3}-?)+`, `(a+){3}`. A `?` or a `{1}` on the group takes
121
+ * it whole or not at all, so `(a+)?` is accepted. A fixed count is copies
122
+ * of the group in sequence, so `(\d{4}[- ]?){3}` is accepted;
123
+ * 4. a repeated group that holds a `|`, at any depth: `(a|ab)+`. A fixed
124
+ * count is copies here too, so `(?:a|ab){3}` is accepted;
125
+ * 5. a quantifier on a lookaround, inside one, or on a group that holds
126
+ * one: `(?=a)+`, `(?=.*\d)`, `(?:(?=a)b){3}`;
127
+ * 6. more than {@link MAX_REPETITIONS} repetitions that can run on in the
128
+ * whole pattern, or more than {@link MAX_ANCHORED_REPETITIONS} in one
129
+ * anchored at `^`: `\w*\w*\w*-`, `^\w*\w*\w*\w*$`, where `^\w*\w*\w*$`
130
+ * and `^[^\s@]+@[^\s@]+\.[^\s@]+$` are accepted;
131
+ * 7. a count past {@link MAX_PATTERN_VALUE_LENGTH}, on its own or multiplied
132
+ * through the counts of the groups that hold it: `\w{513}`, `.{0,1000}`,
133
+ * `(?:\b){999}`, `(?:(?:\b){512}){512}`;
134
+ * 8. {@link MAX_WAYS_STEPS} steps or more from the ways alone: each atom's
135
+ * count, once per way of the atoms before it. Thirty `a?`, eight
136
+ * `\d{1,9}`, `^(?:\d{1,9}){5}\w{467}$` and sixteen `a?` before `\w{495}$`
137
+ * are refused, where a phone, card, IPv4 or optional-scheme URL pattern
138
+ * is accepted;
139
+ * 9. {@link MAX_PATTERN_STEPS} steps or more from the ways and the runs
140
+ * together: the same sum, each run multiplying the paths to the atoms
141
+ * after it by the cap over the run's rank on its own path (its branch
142
+ * and the branches of the groups that hold it, never a sibling `|`
143
+ * alternative, so the branches of a `|` add up), and a pattern with no
144
+ * `^` running from every position. Twelve `a?` before `\w*\w*$`,
145
+ * `\w*\w*-`, `^\w*\w*\w{511}$` and `^\w*!|^` with nine `a?` before
146
+ * `\w*\w*!` are refused, where `^\w*\w*\w*!`, `\S+@\S+` and `^\S+@\S+$`
147
+ * are accepted;
148
+ * 10. a pattern RegExp rejects, as `(`.
149
+ *
150
+ * An accepted pattern is tested on a value of {@link MAX_PATTERN_VALUE_LENGTH}
151
+ * characters at most; {@link matchesPattern} fails a longer value untested.
152
+ */
153
+ export declare function scanPattern(pattern: string): PatternScan;
154
+ /**
155
+ * Whether a layout author's `Pattern` can be tested without hanging the
156
+ * plugin. The regular expression runs synchronously on the UI thread, inside
157
+ * a reducer, on every keystroke, and cannot be interrupted, so the only
158
+ * control is on the pattern's shape before it runs: the rules of
159
+ * {@link scanPattern}. A `pattern` that is no string is not refused, so a
160
+ * layout no schema checked still registers, but {@link matchesPattern}
161
+ * never compiles it.
162
+ */
163
+ export declare function isSafePattern(pattern: string): boolean;
164
+ /**
165
+ * Whether a validation may be registered on a field: every validation but a
166
+ * `Pattern` that {@link isSafePattern} refuses. Shared by the form-state
167
+ * reducer, which drops the refused ones, and the TextInput, which reports
168
+ * them, so the two never disagree on what was dropped.
169
+ */
170
+ export declare function isSafeInputValidation(validation: InputValidation): boolean;
@@ -16,10 +16,24 @@ export interface GlobalState {
16
16
  firedEvents: Partial<Record<LayoutEvent, boolean>>;
17
17
  formStates: FormStatesState;
18
18
  }
19
+ /**
20
+ * The catalog choice a host module has made, synced so a child layout can
21
+ * show it. The child already holds the offer, so only identifiers travel.
22
+ */
23
+ export interface SyncedCatalogSelection {
24
+ /** The selected item, or a stacked selector's preview of one; `null` before any choice. */
25
+ catalogItemId: string | null;
26
+ /** Chosen option label per attribute id, partial while the shopper is choosing. */
27
+ attributeSelections: Record<string, string>;
28
+ }
19
29
  /**
20
30
  * The GlobalState slices a host syncs down to a child layout; `breakpoint`
21
31
  * is absent because the child computes its own from its iframe width.
32
+ * `catalogSelection` is module state, present only when the launching module
33
+ * has a catalog selection to share.
22
34
  */
23
- export type SyncedGlobalState = Pick<GlobalState, 'progression' | 'customStates' | 'domainStates' | 'firedEvents' | 'formStates'>;
35
+ export type SyncedGlobalState = Pick<GlobalState, 'progression' | 'customStates' | 'domainStates' | 'firedEvents' | 'formStates'> & {
36
+ catalogSelection?: SyncedCatalogSelection;
37
+ };
24
38
  export declare function makeSyncedGlobalState(state?: Partial<SyncedGlobalState>): SyncedGlobalState;
25
39
  export declare function makeGlobalState(state?: Partial<GlobalState>): GlobalState;
@@ -14,3 +14,4 @@ export * from './interactivity';
14
14
  export * from './child-plugin';
15
15
  export * from './purchase';
16
16
  export * from './shipping';
17
+ export * from './child-layout-response';
@@ -4,6 +4,8 @@ import { LayoutTransactionData } from './layout-transaction-data';
4
4
  export interface LayoutOffer {
5
5
  campaignId: string;
6
6
  accountId: string;
7
+ /** The rendered ad's id; absent until the transactions API sends it. */
8
+ adId?: string;
7
9
  maxTotalItemsQtyInOffer: number;
8
10
  creative: LayoutCreative;
9
11
  metadata: Record<string, string>;
@@ -1,5 +1,5 @@
1
1
  export type CatalogOutboundPartnerEvent = 'V2_CART_ITEM_UPDATED' | 'UPDATE_CART_ITEM_MESSAGE' | 'CART_ITEM_INSTANT_PURCHASE' | 'UPSELL_ITEM_INSTANT_PURCHASE' | 'DELIVERY_DETAILS_SENT';
2
- export type OfferOutboundPartnerEvent = CatalogOutboundPartnerEvent | 'OFFER_ENGAGEMENT' | 'POSITIVE_ENGAGEMENT' | 'UPSELL_CREATIVE_SENT' | 'REALTIME_OFFER_FULFILLMENT_REFERRAL' | 'REALTIME_OFFER_FULFILLMENT_CONVERSION' | 'REALTIME_OFFER_FULFILLMENT_SUCCESS' | 'INITIATE_INSTANT_PURCHASE_EVENT' | 'INSTANT_PURCHASE_INITIATE_TAX_AND_SHIPPING_EVENT' | 'INITIATE_CART_ITEM_EVENT' | 'PREPARE_DEVICE_PAY_EVENT' | 'INITIATE_DEVICE_PAY_EVENT' | 'ABORT_DEVICE_PAY_EVENT' | 'COMPLETE_DEVICE_PAY_EVENT';
2
+ export type OfferOutboundPartnerEvent = CatalogOutboundPartnerEvent | 'OFFER_ENGAGEMENT' | 'POSITIVE_ENGAGEMENT' | 'UPSELL_CREATIVE_SENT' | 'REALTIME_OFFER_FULFILLMENT_REFERRAL' | 'REALTIME_OFFER_FULFILLMENT_CONVERSION' | 'REALTIME_OFFER_FULFILLMENT_SUCCESS' | 'INITIATE_INSTANT_PURCHASE_EVENT' | 'INSTANT_PURCHASE_INITIATE_TAX_AND_SHIPPING_EVENT' | 'INITIATE_CART_ITEM_EVENT' | 'PREPARE_DEVICE_PAY_EVENT' | 'INITIATE_DEVICE_PAY_EVENT' | 'ABORT_DEVICE_PAY_EVENT' | 'COMPLETE_DEVICE_PAY_EVENT' | 'LEAD_CAPTURE_SUBMITTED';
3
3
  export type OutboundPartnerEvent = OfferOutboundPartnerEvent | 'PLACEMENT_CLOSED' | 'PLACEMENT_COMPLETED' | 'PLACEMENT_INTERACTIVE' | 'PLACEMENT_FAILURE';
4
4
  export declare function isOutboundPartnerEvent(value: unknown): value is OutboundPartnerEvent;
5
5
  export declare function isOfferOutboundPartnerEvent(value: unknown): value is OfferOutboundPartnerEvent;
@@ -3,6 +3,7 @@ import { Fonts } from '@rokt/plugin';
3
3
  import { SyncedGlobalState } from '../global-state';
4
4
  import { PluginOffer } from './plugin-offer';
5
5
  export interface PluginChildLayoutModel<ChildRootLayoutSchema = ChildRootSchemaModel<LayoutSchemaModel, LayoutDisplayPreset, LayoutSettings, WhenPredicate>> {
6
+ continuousPresentation?: import('../../behaviors/continuous-child').ContinuousIdentity;
6
7
  instanceGuid: string;
7
8
  childLayoutId: string;
8
9
  layoutSchemaVersion: string;
@@ -5,6 +5,8 @@ import { TransactionData } from './plugin-transaction-data';
5
5
  export interface PluginOffer {
6
6
  campaignId: string;
7
7
  accountId: string;
8
+ /** The rendered ad's id; absent until the transactions API sends it. */
9
+ adId?: string;
8
10
  maxTotalItemsQtyInOffer: number;
9
11
  creative: PluginCreative;
10
12
  metadata: Record<string, string>;
@@ -62,6 +62,9 @@ export interface ShippingAttributes {
62
62
  postalCode: string;
63
63
  }
64
64
  export interface PrepareDevicePayEventPayload {
65
+ googlePayConfigJson?: string;
66
+ googlePayHandlerId?: string;
67
+ googlePayHandlerVersion?: string;
65
68
  stripeAccountId?: string;
66
69
  merchantName?: string;
67
70
  countryCode?: string;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * A layout's breakpoint widths end up in CSS text: the saga builds a matchMedia
3
+ * query from each one, and the style mapper writes each into a media query or
4
+ * a class name. Only a finite, non-negative number is a width there. Any other
5
+ * value becomes INVALID_BREAKPOINT_WIDTH, which the saga and the style mapper
6
+ * skip, so its styles never apply, as the browser dropped the malformed rule
7
+ * before. A key is never dropped: the style mapper pairs an element's style
8
+ * blocks with the breakpoints by position, so a missing key would move every
9
+ * later block onto the wrong width.
10
+ */
11
+ /**
12
+ * Not a width. No media query is registered for it, no style rule is written
13
+ * for it, and every comparison with it is false, so a breakpoint that carries
14
+ * it is never active and never styles anything.
15
+ */
16
+ export declare const INVALID_BREAKPOINT_WIDTH: number;
17
+ export declare function isBreakpointWidth(value: unknown): value is number;
18
+ export declare function coerceBreakpointWidth(value: unknown): number;
19
+ export declare function coerceBreakpoints(breakpoints: unknown): Record<string, number>;
@@ -1 +1,2 @@
1
1
  export * from './reducer';
2
+ export * from './coerce-breakpoints';
@@ -1,6 +1,8 @@
1
1
  export declare const INVALID_RESPONSE_OBJECT = "INVALID_RESPONSE_OBJECT";
2
2
  export declare const INVALID_MODULE_NAME = "INVALID_MODULE_NAME";
3
3
  export declare const FAILED_TO_OPEN_LINK = "FAILED_TO_OPEN_LINK";
4
+ export declare const REFUSED_LINK_SCHEME = "REFUSED_LINK_SCHEME";
5
+ export declare const LINK_OPEN_RESULT = "LINK_OPEN_RESULT";
4
6
  export declare const FAILED_TO_ISSUE_SIGNAL = "FAILED_TO_ISSUE_SIGNAL";
5
7
  export declare const FAILED_TO_CLOSE_PLUGIN = "FAILED_TO_CLOSE_PLUGIN";
6
8
  export declare const NO_PARENT_GUID = "NO_PARENT_GUID";
@@ -17,3 +19,4 @@ export declare const FAILED_TO_ESTABLISH_PARTNER_VALIDATION = "FAILED_TO_ESTABLI
17
19
  export declare const PARTNER_VALIDATION_UPDATE_FAILED = "PARTNER_VALIDATION_UPDATE_FAILED";
18
20
  export declare const CART_SERVICE_RESPONSE_ERROR = "CART_SERVICE_RESPONSE_ERROR";
19
21
  export declare const UNSUPPORTED_LAYOUT_ACTION = "UNSUPPORTED_LAYOUT_ACTION";
22
+ export declare const INVALID_GROUP_SIZE = "INVALID_GROUP_SIZE";
@@ -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,10 +1,13 @@
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>;
10
+ export declare function handlePartnerSend(partnerInteractionService: PartnerInteractionService, { payload }: SendPartner<OutboundPartnerEvent>): Generator<Promise<void>, void, void>;
8
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<{
@@ -1,3 +1,4 @@
1
+ import * as linkUtils from './links';
1
2
  import * as windowUtils from './window';
2
3
  export * from './links';
3
4
  export * from './errors';
@@ -5,12 +6,18 @@ export * from './window';
5
6
  declare const _default: {
6
7
  isWindow(value: unknown): value is windowUtils.WindowRef;
7
8
  makePluginWarningAction(err: unknown, message: string, originErrorCode: string, additionalInfo?: Record<string, unknown>): import("../../../../orchestrator/src/actions").ReportError;
9
+ isHandleUnavailable(value: unknown): value is linkUtils.HandleUnavailable;
8
10
  openLink({ url, urlBehavior, external }: {
9
11
  url: string;
10
12
  urlBehavior: import("../../../../domain/src/models").PluginUrlBehavior;
11
13
  external: {
12
14
  partner: import("../../../../../index").PartnerInteractionService;
13
15
  };
14
- }, injectedWindow?: Pick<Window, "top" | "open" | "RoktWebViewSDK">): Promise<windowUtils.WindowRef | null>;
16
+ }, injectedWindow?: Pick<Window, "top" | "open" | "RoktWebViewSDK"> & {
17
+ location?: Pick<Location, "href">;
18
+ navigator?: Omit<Navigator, "userActivation"> & {
19
+ userActivation?: UserActivation;
20
+ };
21
+ }): Promise<windowUtils.WindowRef | linkUtils.HandleUnavailable | null>;
15
22
  };
16
23
  export default _default;
@@ -1,6 +1,33 @@
1
1
  import { PluginUrlBehavior } from '../../../../domain/src/models';
2
2
  import { PartnerInteractionService } from '../../../../plugin-utils/src/index';
3
3
  import { WindowRef } from './window';
4
+ /**
5
+ * Neither window.open nor the webview bridge distinguishes "blocked" from
6
+ * "opened, handle withheld" by its return value alone: a blocked popup and an
7
+ * Android WebView with multiple windows disabled both yield nothing, and the
8
+ * latter loads the URL in place. So record which path produced the miss and what
9
+ * the user-activation state was going in, and let the consumer draw conclusions.
10
+ *
11
+ * userActivation is Chromium-only, so both flags are null on WebKit and Gecko —
12
+ * including every iOS webview. isActive false means no transient activation was
13
+ * left to spend; true does NOT rule out a block, since a site-level popup
14
+ * permission or an extension can refuse a gesture-initiated open.
15
+ */
16
+ export type HandleUnavailable = {
17
+ handleUnavailable: {
18
+ source: 'window' | 'webview' | null;
19
+ target: string | null;
20
+ userActivationActive: boolean | null;
21
+ userActivationHasBeenActive: boolean | null;
22
+ };
23
+ };
24
+ export declare function isHandleUnavailable(value: unknown): value is HandleUnavailable;
25
+ type InjectedWindow = Pick<Window, 'top' | 'open' | 'RoktWebViewSDK'> & {
26
+ location?: Pick<Location, 'href'>;
27
+ navigator?: Omit<Navigator, 'userActivation'> & {
28
+ userActivation?: UserActivation;
29
+ };
30
+ };
4
31
  type LinkParams = {
5
32
  url: string;
6
33
  urlBehavior: PluginUrlBehavior;
@@ -8,5 +35,5 @@ type LinkParams = {
8
35
  partner: PartnerInteractionService;
9
36
  };
10
37
  };
11
- export declare function openLink({ url, urlBehavior, external }: LinkParams, injectedWindow?: Pick<Window, 'top' | 'open' | 'RoktWebViewSDK'>): Promise<WindowRef | null>;
38
+ export declare function openLink({ url, urlBehavior, external }: LinkParams, injectedWindow?: InjectedWindow): Promise<WindowRef | HandleUnavailable | null>;
12
39
  export {};
@@ -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,25 +10,41 @@ 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' | '*';
16
21
  callback: (...data: Array<unknown>) => void;
17
22
  };
18
23
  export interface IGateway<State extends object, Action extends object> {
24
+ /** Latest authoritative cart for this offer during the subscription handoff. */
25
+ getOfferCart?: () => Array<{
26
+ cartItemId: string;
27
+ quantity: number;
28
+ }>;
19
29
  onEvent(...moduleEventListeners: Array<ModuleEventListener>): () => void;
20
30
  onGlobalStateChange(callback: (globalState: State) => void): () => void;
21
31
  onInteractivityChange(callback: (interactivity: Interactivity) => void): () => void;
22
32
  globalDispatch(action: Action): void;
23
33
  createChildPlugin: ChildPluginFactory;
34
+ registerContinuousResponseHandler?: (dispatch: (action: GlobalActions) => void) => () => void;
35
+ launchContinuousChild?: (child: PluginLayoutChild) => Promise<boolean>;
36
+ scrollHostToViewportOffset?: (viewportOffsetY: number) => Promise<void>;
24
37
  }
25
38
  export interface IDisposable {
26
39
  dispose(): void;
27
40
  }
28
- export declare function makeGatewayFactory<State extends object, Action extends object>(globalStore: AbstractGlobalStore<State, Action>, createChildPlugin: ChildPluginFactory, onPartnerEvent: PartnerEventReceiver, getFonts?: GetFonts): GatewayFactory<State, Action>;
41
+ 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
42
  export declare class Gateway<State extends object, Action extends object> implements IGateway<State, Action>, IDisposable {
30
43
  #private;
31
- constructor(store: AbstractGlobalStore<State, Action>, createChildPlugin: ChildPluginFactory, context: GlobalStoreOfferContext, interactivityChannel: ISubscribable<Interactivity> & IClearable, onPartnerEvent: PartnerEventReceiver, getFonts?: GetFonts);
44
+ scrollHostToViewportOffset?: (viewportOffsetY: number) => Promise<void>;
45
+ registerContinuousResponseHandler?: (dispatch: (action: GlobalActions) => void) => () => void;
46
+ launchContinuousChild?: (child: PluginLayoutChild) => Promise<boolean>;
47
+ 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
48
  onGlobalStateChange(callback: (globalState: State) => void): () => void;
33
49
  onInteractivityChange(callback: (interactivity: Interactivity) => void): () => void;
34
50
  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;
@@ -1,9 +1,16 @@
1
1
  import { LaunchChildLayout } from '../../../../domain/src/behaviors';
2
- import { CallEffect, CancelledEffect, ChannelTakeEffect, ForkEffect, PutEffect, RaceEffect, SelectEffect } from 'redux-saga/effects';
2
+ import { CallEffect, CancelEffect, CancelledEffect, ChannelTakeEffect, ForkEffect, PutEffect, RaceEffect, SelectEffect } from 'redux-saga/effects';
3
3
  import { GlobalGateway } from '../../../../module-connector/src/main';
4
- import { Log, PluginOffer } from '../../../../domain/src/models';
4
+ import { Log, PluginOffer, SyncedCatalogSelection } from '../../../../domain/src/models';
5
5
  import { BasicObject, ChildPluginInterface } from '@rokt/plugin';
6
- export declare function launchChildLayout(gateway: GlobalGateway, logger: (log: Log) => void, action: LaunchChildLayout): Generator<PutEffect | CallEffect | SelectEffect | ForkEffect, void, never>;
6
+ /**
7
+ * Reads a module's catalog selection from its own store. Re-read after every
8
+ * module action; an unchanged result is not re-sent.
9
+ */
10
+ export type SelectCatalogSelection = {
11
+ bivarianceHack(state: unknown): SyncedCatalogSelection;
12
+ }['bivarianceHack'];
13
+ export declare function launchChildLayout(gateway: GlobalGateway, logger: (log: Log) => void, action: LaunchChildLayout, selectCatalogSelection?: SelectCatalogSelection): Generator<PutEffect | CallEffect | SelectEffect | ForkEffect, void, never>;
7
14
  type BridgeChannelMessage = {
8
15
  kind: 'ready';
9
16
  } | {
@@ -13,5 +20,8 @@ type BridgeChannelMessage = {
13
20
  export declare function childLayoutBridge(gateway: GlobalGateway, logger: (log: Log) => void, childPlugin: ChildPluginInterface<BasicObject>, offerContext: {
14
21
  offer: PluginOffer;
15
22
  offerPositionIndex: number | undefined;
16
- }): Generator<PutEffect | CallEffect | CancelledEffect | RaceEffect<ChannelTakeEffect<BridgeChannelMessage> | CallEffect>, void, never>;
23
+ childInstanceGuid: string;
24
+ advanceOnDismiss?: boolean;
25
+ selectCatalogSelection?: SelectCatalogSelection;
26
+ }): Generator<PutEffect | CallEffect | CancelledEffect | CancelEffect | ForkEffect | SelectEffect | RaceEffect<ChannelTakeEffect<BridgeChannelMessage> | CallEffect>, void, never>;
17
27
  export {};
@@ -1,4 +1,5 @@
1
1
  export declare const SET_GLOBAL_OFFER_DATA_CART = "GLOBAL_OFFER_DATA_STATE/SET_CART";
2
+ export declare const RETAIN_PARTNER_CART_ITEM = "GLOBAL_OFFER_DATA_STATE/RETAIN_PARTNER_CART_ITEM";
2
3
  export interface SetGlobalOfferDataCart {
3
4
  type: typeof SET_GLOBAL_OFFER_DATA_CART;
4
5
  payload: SetGlobalOfferDataCartPayload;
@@ -10,4 +11,13 @@ export interface SetGlobalOfferDataCartPayload {
10
11
  quantity: number;
11
12
  }>;
12
13
  }
13
- export type GlobalOfferDataStateActions = SetGlobalOfferDataCart;
14
+ export interface RetainPartnerCartItem {
15
+ type: typeof RETAIN_PARTNER_CART_ITEM;
16
+ payload: RetainPartnerCartItemPayload;
17
+ }
18
+ export interface RetainPartnerCartItemPayload {
19
+ offerPositionIndex: number;
20
+ cartItemId: string;
21
+ quantity: number;
22
+ }
23
+ export type GlobalOfferDataStateActions = SetGlobalOfferDataCart | RetainPartnerCartItem;
@@ -29,8 +29,10 @@ export declare const stateActionTypes: {
29
29
  readonly UPDATE_GROUP_SIZE: "PROGRESSION/UPDATE_GROUP_SIZE";
30
30
  readonly SET_SLOTS: "SLOTS/SET";
31
31
  readonly ADD_LOADED_MODULE: "MODULE/ADD_LOADED";
32
+ readonly UPDATE_CART_LISTENER_COUNT: "MODULE/UPDATE_CART_LISTENER_COUNT";
32
33
  readonly SET_DOMAIN_STATE: "DOMAIN_STATES/SET";
33
34
  readonly SET_GLOBAL_OFFER_DATA_CART: "GLOBAL_OFFER_DATA_STATE/SET_CART";
35
+ readonly RETAIN_PARTNER_CART_ITEM: "GLOBAL_OFFER_DATA_STATE/RETAIN_PARTNER_CART_ITEM";
34
36
  readonly LAYOUT_UPDATE: "LAYOUT/UPDATE";
35
37
  readonly UPDATE_ACTIVE_BREAKPOINT: "BREAKPOINT/UPDATE_ACTIVE";
36
38
  readonly INITIALISE_BREAKPOINT: "BREAKPOINT/INITIALISE";
@@ -3,7 +3,15 @@ export type AddLoadedModuleAction = {
3
3
  type: typeof ADD_LOADED_MODULE;
4
4
  payload: string;
5
5
  };
6
- export type ModuleActions = AddLoadedModuleAction;
6
+ export declare const UPDATE_CART_LISTENER_COUNT = "MODULE/UPDATE_CART_LISTENER_COUNT";
7
+ export type UpdateCartListenerCount = {
8
+ type: typeof UPDATE_CART_LISTENER_COUNT;
9
+ payload: {
10
+ offerPositionIndex: number;
11
+ delta: 1 | -1;
12
+ };
13
+ };
14
+ export type ModuleActions = AddLoadedModuleAction | UpdateCartListenerCount;
7
15
  export declare const LOAD_MODULES = "MODULE/LOAD";
8
16
  export interface LoadModules {
9
17
  type: typeof LOAD_MODULES;
@@ -0,0 +1,7 @@
1
+ import { GlobalGatewayFactory } from '../../module-connector/src/main';
2
+ import { UpdateCartListenerCount } from './actions';
3
+ /** Track real subscriptions, which outlive DOM collapse, rather than visible slots. */
4
+ export declare function trackCartListeners(factory: GlobalGatewayFactory, dispatch: (action: UpdateCartListenerCount) => void, readCart?: (position: number) => Array<{
5
+ cartItemId: string;
6
+ quantity: number;
7
+ }>): GlobalGatewayFactory;
@@ -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';