@wise/dynamic-flow-client 5.8.1 → 5.9.0-experimental-rendererprops-9c9a4b8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/main.js CHANGED
@@ -836,6 +836,7 @@ var getChildren = (node) => {
836
836
  case "heading":
837
837
  case "hidden":
838
838
  case "image":
839
+ case "loading-state":
839
840
  case "instructions":
840
841
  case "input-integer":
841
842
  case "list":
@@ -2091,7 +2092,7 @@ var debounce = (callback, waitMs) => {
2091
2092
  // src/domain/components/searchComponent/SearchComponent.ts
2092
2093
  var DEBOUNCE_TIME = 400;
2093
2094
  var createSearchComponent = (searchProps, performSearch, onBehavior, onComponentUpdate) => {
2094
- const { uid, analyticsId, control, emptyMessage, hint, margin, tags, title } = searchProps;
2095
+ const { uid, analyticsId, control, emptyMessage, initialState, hint, margin, tags, title } = searchProps;
2095
2096
  const update = getInputUpdateFunction(onComponentUpdate);
2096
2097
  let abortController = new AbortController();
2097
2098
  const search = (component2, query, searchConfig) => {
@@ -2105,7 +2106,7 @@ var createSearchComponent = (searchProps, performSearch, onBehavior, onComponent
2105
2106
  }).then((state) => {
2106
2107
  if (!signal.aborted) {
2107
2108
  update(component2, (draft) => {
2108
- draft.state = state;
2109
+ draft.state = state != null ? state : initialState;
2109
2110
  draft.isLoading = false;
2110
2111
  draft.error = void 0;
2111
2112
  });
@@ -2127,9 +2128,10 @@ var createSearchComponent = (searchProps, performSearch, onBehavior, onComponent
2127
2128
  analyticsId,
2128
2129
  control,
2129
2130
  emptyMessage,
2131
+ initialState,
2130
2132
  hint,
2131
2133
  margin,
2132
- state: null,
2134
+ state: initialState,
2133
2135
  tags,
2134
2136
  title,
2135
2137
  isLoading: false,
@@ -2138,11 +2140,22 @@ var createSearchComponent = (searchProps, performSearch, onBehavior, onComponent
2138
2140
  update(this, updateFn);
2139
2141
  },
2140
2142
  onChange(query) {
2141
- this._update((draft) => {
2142
- draft.query = query;
2143
- draft.isLoading = true;
2144
- });
2145
- debouncedSearch(this, query.trim());
2143
+ if (query.trim()) {
2144
+ this._update((draft) => {
2145
+ draft.query = query;
2146
+ draft.isLoading = true;
2147
+ });
2148
+ debouncedSearch(this, query.trim());
2149
+ } else {
2150
+ abortController.abort();
2151
+ debouncedSearch.cancel();
2152
+ update(component, (draft) => {
2153
+ draft.query = query;
2154
+ draft.state = initialState;
2155
+ draft.isLoading = false;
2156
+ draft.error = void 0;
2157
+ });
2158
+ }
2146
2159
  },
2147
2160
  onSelect({ type, value }) {
2148
2161
  if (type === "action") {
@@ -2238,11 +2251,23 @@ var isValidResponseBody = (body) => {
2238
2251
  var hashRequest = (query, config) => JSON.stringify({ query, config });
2239
2252
 
2240
2253
  // src/domain/mappers/layout/searchLayoutToComponent.ts
2241
- var searchLayoutToComponent = (uid, { analyticsId, control, emptyMessage, hint, method, param, title, url, margin, tags }, mapperProps) => {
2254
+ var searchLayoutToComponent = (uid, {
2255
+ analyticsId,
2256
+ control,
2257
+ emptyMessage = "",
2258
+ initialState,
2259
+ hint,
2260
+ method,
2261
+ param,
2262
+ title,
2263
+ url,
2264
+ margin,
2265
+ tags
2266
+ }, mapperProps) => {
2242
2267
  const { httpClient, onBehavior, onComponentUpdate } = mapperProps;
2243
2268
  const search = getPerformSearchFunction(
2244
2269
  httpClient,
2245
- (layout) => mapLayoutToComponent(`${uid}-search-response`, layout, mapperProps, []),
2270
+ (layout, index) => mapLayoutToComponent(`${uid}-search-response-${index}`, layout, mapperProps, []),
2246
2271
  { method, param, url }
2247
2272
  );
2248
2273
  return createSearchComponent(
@@ -2250,7 +2275,8 @@ var searchLayoutToComponent = (uid, { analyticsId, control, emptyMessage, hint,
2250
2275
  uid,
2251
2276
  analyticsId,
2252
2277
  control,
2253
- emptyMessage: emptyMessage != null ? emptyMessage : "",
2278
+ emptyMessage,
2279
+ initialState: getInitialState(uid, initialState, mapperProps),
2254
2280
  hint,
2255
2281
  margin: margin != null ? margin : "md",
2256
2282
  tags,
@@ -2261,6 +2287,33 @@ var searchLayoutToComponent = (uid, { analyticsId, control, emptyMessage, hint,
2261
2287
  onComponentUpdate
2262
2288
  );
2263
2289
  };
2290
+ var getInitialState = (uid, initialState, mapperProps) => {
2291
+ if (!initialState) {
2292
+ return emptyInitialState;
2293
+ }
2294
+ switch (initialState.type) {
2295
+ case "layout":
2296
+ return {
2297
+ type: "layout",
2298
+ content: initialState.content.map(
2299
+ (layout, index) => mapLayoutToComponent(`${uid}-initial-${index}`, layout, mapperProps, [])
2300
+ )
2301
+ };
2302
+ case "results":
2303
+ return {
2304
+ type: "results",
2305
+ results: initialState.results
2306
+ };
2307
+ default: {
2308
+ const exhaustiveCheck = initialState;
2309
+ return emptyInitialState;
2310
+ }
2311
+ }
2312
+ };
2313
+ var emptyInitialState = {
2314
+ type: "layout",
2315
+ content: []
2316
+ };
2264
2317
 
2265
2318
  // src/domain/components/SectionComponent.ts
2266
2319
  var createSectionComponent = (props) => {
@@ -6999,8 +7052,15 @@ var CoreRootRenderer = {
6999
7052
  }
7000
7053
  };
7001
7054
 
7002
- // src/renderers/getRenderFunction.tsx
7055
+ // src/renderers/EmptyLoadingStateRenderer.tsx
7003
7056
  var import_jsx_runtime5 = require("react/jsx-runtime");
7057
+ var EmptyLoadingStateRenderer = {
7058
+ canRenderType: "loading-state",
7059
+ render: () => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, {})
7060
+ };
7061
+
7062
+ // src/renderers/getRenderFunction.tsx
7063
+ var import_jsx_runtime6 = require("react/jsx-runtime");
7004
7064
  var getRenderFunction = (renderers) => {
7005
7065
  function ComponentRenderer(props) {
7006
7066
  const { type } = props;
@@ -7020,9 +7080,9 @@ var getRenderFunction = (renderers) => {
7020
7080
  }
7021
7081
  const render = (props) => {
7022
7082
  if (!props) {
7023
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, {});
7083
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment, {});
7024
7084
  }
7025
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ComponentRenderer, __spreadValues({}, props), props.uid);
7085
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ComponentRenderer, __spreadValues({}, props), props.uid);
7026
7086
  };
7027
7087
  return render;
7028
7088
  };
@@ -7919,14 +7979,17 @@ var getToolbarProps = (toolbar, rendererMapperProps) => {
7919
7979
 
7920
7980
  // src/renderers/mappers/rootComponentToProps.ts
7921
7981
  var rootComponentToProps = (rootComponent, rendererMapperProps) => {
7922
- const childrenProps = rootComponent.getChildren().map((child) => {
7923
- if (child.type === "step") {
7924
- return stepComponentToProps(child, __spreadProps(__spreadValues({}, rendererMapperProps), {
7925
- showBack: rootComponent.canPerformBack()
7926
- }));
7927
- }
7928
- return componentToRendererProps(child, rendererMapperProps);
7929
- });
7982
+ const childrenProps = [
7983
+ __spreadValues({ type: "loading-state", uid: "loading-state" }, rendererMapperProps),
7984
+ ...rootComponent.getChildren().map((child) => {
7985
+ if (child.type === "step") {
7986
+ return stepComponentToProps(child, __spreadProps(__spreadValues({}, rendererMapperProps), {
7987
+ showBack: rootComponent.canPerformBack()
7988
+ }));
7989
+ }
7990
+ return componentToRendererProps(child, rendererMapperProps);
7991
+ })
7992
+ ];
7930
7993
  const subflow = rootComponent.subflow ? {
7931
7994
  presentation: rootComponent.subflow.presentation,
7932
7995
  children: rendererMapperProps.render(
@@ -7982,7 +8045,7 @@ var getSearchState = ({
7982
8045
  onChange,
7983
8046
  onSelect
7984
8047
  }) => {
7985
- if (!query || isLoading) {
8048
+ if (isLoading) {
7986
8049
  return { type: "pending" };
7987
8050
  }
7988
8051
  if (error) {
@@ -8002,19 +8065,21 @@ var getSearchState = ({
8002
8065
  layoutProps
8003
8066
  };
8004
8067
  }
8005
- if (state.results.length === 0) {
8068
+ if (query && state.results.length === 0) {
8006
8069
  return { type: "noResults", message: emptyMessage };
8007
8070
  }
8008
- const rendererResults = state.results.map((result) => {
8009
- var _a;
8010
- return __spreadProps(__spreadValues({}, result), {
8011
- id: result.type === "action" ? (_a = result.value.id) != null ? _a : result.value.$id : void 0,
8012
- image: mapSpecImage(result.image),
8013
- media: getDomainLayerMedia(result),
8014
- onClick: () => onSelect(result)
8015
- });
8016
- });
8017
- return { type: "results", results: rendererResults };
8071
+ return {
8072
+ type: "results",
8073
+ results: state.results.map((result) => {
8074
+ var _a;
8075
+ return __spreadProps(__spreadValues({}, result), {
8076
+ id: result.type === "action" ? (_a = result.value.id) != null ? _a : result.value.$id : void 0,
8077
+ image: mapSpecImage(result.image),
8078
+ media: getDomainLayerMedia(result),
8079
+ onClick: () => onSelect(result)
8080
+ });
8081
+ })
8082
+ };
8018
8083
  };
8019
8084
 
8020
8085
  // src/renderers/mappers/sectionComponentToProps.ts
@@ -8308,7 +8373,7 @@ function useStableCallback(handler) {
8308
8373
  }
8309
8374
 
8310
8375
  // src/useDynamicFlow.tsx
8311
- var import_jsx_runtime6 = require("react/jsx-runtime");
8376
+ var import_jsx_runtime7 = require("react/jsx-runtime");
8312
8377
  var className = "dynamic-flow";
8313
8378
  var noop3 = () => {
8314
8379
  };
@@ -8359,10 +8424,15 @@ function useDynamicFlow(props) {
8359
8424
  scrollToTop
8360
8425
  }));
8361
8426
  const render = (0, import_react3.useMemo)(
8362
- () => getRenderFunction([CoreRootRenderer, CoreContainerRenderer, ...renderers]),
8427
+ () => getRenderFunction([
8428
+ CoreRootRenderer,
8429
+ CoreContainerRenderer,
8430
+ ...renderers,
8431
+ EmptyLoadingStateRenderer
8432
+ ]),
8363
8433
  [renderers]
8364
8434
  );
8365
- const tree = componentToRendererProps(rootComponent, {
8435
+ const rendererProps = componentToRendererProps(rootComponent, {
8366
8436
  features,
8367
8437
  render,
8368
8438
  httpClient,
@@ -8374,9 +8444,13 @@ function useDynamicFlow(props) {
8374
8444
  controller: {
8375
8445
  getSubmittableValue: async () => rootComponent.getSubmittableValue(),
8376
8446
  validate: () => rootComponent.validate(),
8447
+ /**
8448
+ * @experimental This is not a public API and may be removed in the future without notice
8449
+ */
8450
+ rendererProps,
8377
8451
  cancel
8378
8452
  },
8379
- view: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
8453
+ view: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
8380
8454
  ErrorBoundary_default,
8381
8455
  {
8382
8456
  onError: (error) => {
@@ -8386,7 +8460,7 @@ function useDynamicFlow(props) {
8386
8460
  errorMessage: getErrorMessage(error)
8387
8461
  });
8388
8462
  },
8389
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { id: normalisedFlowId, className, children: render(tree) })
8463
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { id: normalisedFlowId, className, children: render(rendererProps) })
8390
8464
  }
8391
8465
  )
8392
8466
  };
package/build/main.mjs CHANGED
@@ -806,6 +806,7 @@ var getChildren = (node) => {
806
806
  case "heading":
807
807
  case "hidden":
808
808
  case "image":
809
+ case "loading-state":
809
810
  case "instructions":
810
811
  case "input-integer":
811
812
  case "list":
@@ -2061,7 +2062,7 @@ var debounce = (callback, waitMs) => {
2061
2062
  // src/domain/components/searchComponent/SearchComponent.ts
2062
2063
  var DEBOUNCE_TIME = 400;
2063
2064
  var createSearchComponent = (searchProps, performSearch, onBehavior, onComponentUpdate) => {
2064
- const { uid, analyticsId, control, emptyMessage, hint, margin, tags, title } = searchProps;
2065
+ const { uid, analyticsId, control, emptyMessage, initialState, hint, margin, tags, title } = searchProps;
2065
2066
  const update = getInputUpdateFunction(onComponentUpdate);
2066
2067
  let abortController = new AbortController();
2067
2068
  const search = (component2, query, searchConfig) => {
@@ -2075,7 +2076,7 @@ var createSearchComponent = (searchProps, performSearch, onBehavior, onComponent
2075
2076
  }).then((state) => {
2076
2077
  if (!signal.aborted) {
2077
2078
  update(component2, (draft) => {
2078
- draft.state = state;
2079
+ draft.state = state != null ? state : initialState;
2079
2080
  draft.isLoading = false;
2080
2081
  draft.error = void 0;
2081
2082
  });
@@ -2097,9 +2098,10 @@ var createSearchComponent = (searchProps, performSearch, onBehavior, onComponent
2097
2098
  analyticsId,
2098
2099
  control,
2099
2100
  emptyMessage,
2101
+ initialState,
2100
2102
  hint,
2101
2103
  margin,
2102
- state: null,
2104
+ state: initialState,
2103
2105
  tags,
2104
2106
  title,
2105
2107
  isLoading: false,
@@ -2108,11 +2110,22 @@ var createSearchComponent = (searchProps, performSearch, onBehavior, onComponent
2108
2110
  update(this, updateFn);
2109
2111
  },
2110
2112
  onChange(query) {
2111
- this._update((draft) => {
2112
- draft.query = query;
2113
- draft.isLoading = true;
2114
- });
2115
- debouncedSearch(this, query.trim());
2113
+ if (query.trim()) {
2114
+ this._update((draft) => {
2115
+ draft.query = query;
2116
+ draft.isLoading = true;
2117
+ });
2118
+ debouncedSearch(this, query.trim());
2119
+ } else {
2120
+ abortController.abort();
2121
+ debouncedSearch.cancel();
2122
+ update(component, (draft) => {
2123
+ draft.query = query;
2124
+ draft.state = initialState;
2125
+ draft.isLoading = false;
2126
+ draft.error = void 0;
2127
+ });
2128
+ }
2116
2129
  },
2117
2130
  onSelect({ type, value }) {
2118
2131
  if (type === "action") {
@@ -2208,11 +2221,23 @@ var isValidResponseBody = (body) => {
2208
2221
  var hashRequest = (query, config) => JSON.stringify({ query, config });
2209
2222
 
2210
2223
  // src/domain/mappers/layout/searchLayoutToComponent.ts
2211
- var searchLayoutToComponent = (uid, { analyticsId, control, emptyMessage, hint, method, param, title, url, margin, tags }, mapperProps) => {
2224
+ var searchLayoutToComponent = (uid, {
2225
+ analyticsId,
2226
+ control,
2227
+ emptyMessage = "",
2228
+ initialState,
2229
+ hint,
2230
+ method,
2231
+ param,
2232
+ title,
2233
+ url,
2234
+ margin,
2235
+ tags
2236
+ }, mapperProps) => {
2212
2237
  const { httpClient, onBehavior, onComponentUpdate } = mapperProps;
2213
2238
  const search = getPerformSearchFunction(
2214
2239
  httpClient,
2215
- (layout) => mapLayoutToComponent(`${uid}-search-response`, layout, mapperProps, []),
2240
+ (layout, index) => mapLayoutToComponent(`${uid}-search-response-${index}`, layout, mapperProps, []),
2216
2241
  { method, param, url }
2217
2242
  );
2218
2243
  return createSearchComponent(
@@ -2220,7 +2245,8 @@ var searchLayoutToComponent = (uid, { analyticsId, control, emptyMessage, hint,
2220
2245
  uid,
2221
2246
  analyticsId,
2222
2247
  control,
2223
- emptyMessage: emptyMessage != null ? emptyMessage : "",
2248
+ emptyMessage,
2249
+ initialState: getInitialState(uid, initialState, mapperProps),
2224
2250
  hint,
2225
2251
  margin: margin != null ? margin : "md",
2226
2252
  tags,
@@ -2231,6 +2257,33 @@ var searchLayoutToComponent = (uid, { analyticsId, control, emptyMessage, hint,
2231
2257
  onComponentUpdate
2232
2258
  );
2233
2259
  };
2260
+ var getInitialState = (uid, initialState, mapperProps) => {
2261
+ if (!initialState) {
2262
+ return emptyInitialState;
2263
+ }
2264
+ switch (initialState.type) {
2265
+ case "layout":
2266
+ return {
2267
+ type: "layout",
2268
+ content: initialState.content.map(
2269
+ (layout, index) => mapLayoutToComponent(`${uid}-initial-${index}`, layout, mapperProps, [])
2270
+ )
2271
+ };
2272
+ case "results":
2273
+ return {
2274
+ type: "results",
2275
+ results: initialState.results
2276
+ };
2277
+ default: {
2278
+ const exhaustiveCheck = initialState;
2279
+ return emptyInitialState;
2280
+ }
2281
+ }
2282
+ };
2283
+ var emptyInitialState = {
2284
+ type: "layout",
2285
+ content: []
2286
+ };
2234
2287
 
2235
2288
  // src/domain/components/SectionComponent.ts
2236
2289
  var createSectionComponent = (props) => {
@@ -6969,8 +7022,15 @@ var CoreRootRenderer = {
6969
7022
  }
6970
7023
  };
6971
7024
 
6972
- // src/renderers/getRenderFunction.tsx
7025
+ // src/renderers/EmptyLoadingStateRenderer.tsx
6973
7026
  import { Fragment as Fragment4, jsx as jsx5 } from "react/jsx-runtime";
7027
+ var EmptyLoadingStateRenderer = {
7028
+ canRenderType: "loading-state",
7029
+ render: () => /* @__PURE__ */ jsx5(Fragment4, {})
7030
+ };
7031
+
7032
+ // src/renderers/getRenderFunction.tsx
7033
+ import { Fragment as Fragment5, jsx as jsx6 } from "react/jsx-runtime";
6974
7034
  var getRenderFunction = (renderers) => {
6975
7035
  function ComponentRenderer(props) {
6976
7036
  const { type } = props;
@@ -6990,9 +7050,9 @@ var getRenderFunction = (renderers) => {
6990
7050
  }
6991
7051
  const render = (props) => {
6992
7052
  if (!props) {
6993
- return /* @__PURE__ */ jsx5(Fragment4, {});
7053
+ return /* @__PURE__ */ jsx6(Fragment5, {});
6994
7054
  }
6995
- return /* @__PURE__ */ jsx5(ComponentRenderer, __spreadValues({}, props), props.uid);
7055
+ return /* @__PURE__ */ jsx6(ComponentRenderer, __spreadValues({}, props), props.uid);
6996
7056
  };
6997
7057
  return render;
6998
7058
  };
@@ -7889,14 +7949,17 @@ var getToolbarProps = (toolbar, rendererMapperProps) => {
7889
7949
 
7890
7950
  // src/renderers/mappers/rootComponentToProps.ts
7891
7951
  var rootComponentToProps = (rootComponent, rendererMapperProps) => {
7892
- const childrenProps = rootComponent.getChildren().map((child) => {
7893
- if (child.type === "step") {
7894
- return stepComponentToProps(child, __spreadProps(__spreadValues({}, rendererMapperProps), {
7895
- showBack: rootComponent.canPerformBack()
7896
- }));
7897
- }
7898
- return componentToRendererProps(child, rendererMapperProps);
7899
- });
7952
+ const childrenProps = [
7953
+ __spreadValues({ type: "loading-state", uid: "loading-state" }, rendererMapperProps),
7954
+ ...rootComponent.getChildren().map((child) => {
7955
+ if (child.type === "step") {
7956
+ return stepComponentToProps(child, __spreadProps(__spreadValues({}, rendererMapperProps), {
7957
+ showBack: rootComponent.canPerformBack()
7958
+ }));
7959
+ }
7960
+ return componentToRendererProps(child, rendererMapperProps);
7961
+ })
7962
+ ];
7900
7963
  const subflow = rootComponent.subflow ? {
7901
7964
  presentation: rootComponent.subflow.presentation,
7902
7965
  children: rendererMapperProps.render(
@@ -7952,7 +8015,7 @@ var getSearchState = ({
7952
8015
  onChange,
7953
8016
  onSelect
7954
8017
  }) => {
7955
- if (!query || isLoading) {
8018
+ if (isLoading) {
7956
8019
  return { type: "pending" };
7957
8020
  }
7958
8021
  if (error) {
@@ -7972,19 +8035,21 @@ var getSearchState = ({
7972
8035
  layoutProps
7973
8036
  };
7974
8037
  }
7975
- if (state.results.length === 0) {
8038
+ if (query && state.results.length === 0) {
7976
8039
  return { type: "noResults", message: emptyMessage };
7977
8040
  }
7978
- const rendererResults = state.results.map((result) => {
7979
- var _a;
7980
- return __spreadProps(__spreadValues({}, result), {
7981
- id: result.type === "action" ? (_a = result.value.id) != null ? _a : result.value.$id : void 0,
7982
- image: mapSpecImage(result.image),
7983
- media: getDomainLayerMedia(result),
7984
- onClick: () => onSelect(result)
7985
- });
7986
- });
7987
- return { type: "results", results: rendererResults };
8041
+ return {
8042
+ type: "results",
8043
+ results: state.results.map((result) => {
8044
+ var _a;
8045
+ return __spreadProps(__spreadValues({}, result), {
8046
+ id: result.type === "action" ? (_a = result.value.id) != null ? _a : result.value.$id : void 0,
8047
+ image: mapSpecImage(result.image),
8048
+ media: getDomainLayerMedia(result),
8049
+ onClick: () => onSelect(result)
8050
+ });
8051
+ })
8052
+ };
7988
8053
  };
7989
8054
 
7990
8055
  // src/renderers/mappers/sectionComponentToProps.ts
@@ -8278,7 +8343,7 @@ function useStableCallback(handler) {
8278
8343
  }
8279
8344
 
8280
8345
  // src/useDynamicFlow.tsx
8281
- import { jsx as jsx6 } from "react/jsx-runtime";
8346
+ import { jsx as jsx7 } from "react/jsx-runtime";
8282
8347
  var className = "dynamic-flow";
8283
8348
  var noop3 = () => {
8284
8349
  };
@@ -8329,10 +8394,15 @@ function useDynamicFlow(props) {
8329
8394
  scrollToTop
8330
8395
  }));
8331
8396
  const render = useMemo(
8332
- () => getRenderFunction([CoreRootRenderer, CoreContainerRenderer, ...renderers]),
8397
+ () => getRenderFunction([
8398
+ CoreRootRenderer,
8399
+ CoreContainerRenderer,
8400
+ ...renderers,
8401
+ EmptyLoadingStateRenderer
8402
+ ]),
8333
8403
  [renderers]
8334
8404
  );
8335
- const tree = componentToRendererProps(rootComponent, {
8405
+ const rendererProps = componentToRendererProps(rootComponent, {
8336
8406
  features,
8337
8407
  render,
8338
8408
  httpClient,
@@ -8344,9 +8414,13 @@ function useDynamicFlow(props) {
8344
8414
  controller: {
8345
8415
  getSubmittableValue: async () => rootComponent.getSubmittableValue(),
8346
8416
  validate: () => rootComponent.validate(),
8417
+ /**
8418
+ * @experimental This is not a public API and may be removed in the future without notice
8419
+ */
8420
+ rendererProps,
8347
8421
  cancel
8348
8422
  },
8349
- view: /* @__PURE__ */ jsx6(
8423
+ view: /* @__PURE__ */ jsx7(
8350
8424
  ErrorBoundary_default,
8351
8425
  {
8352
8426
  onError: (error) => {
@@ -8356,7 +8430,7 @@ function useDynamicFlow(props) {
8356
8430
  errorMessage: getErrorMessage(error)
8357
8431
  });
8358
8432
  },
8359
- children: /* @__PURE__ */ jsx6("div", { id: normalisedFlowId, className, children: render(tree) })
8433
+ children: /* @__PURE__ */ jsx7("div", { id: normalisedFlowId, className, children: render(rendererProps) })
8360
8434
  }
8361
8435
  )
8362
8436
  };
@@ -10,26 +10,27 @@ export type SearchProps = {
10
10
  query: string;
11
11
  signal: AbortSignal;
12
12
  };
13
- export type SearchResponse = {
13
+ export type SearchResultsState = {
14
14
  type: 'layout';
15
15
  content: LayoutComponent[];
16
16
  } | {
17
17
  type: 'results';
18
18
  results: SearchResult[];
19
19
  };
20
- export type PerformSearch = (props: SearchProps) => Promise<SearchResponse | null>;
20
+ export type PerformSearch = (props: SearchProps) => Promise<SearchResultsState | null>;
21
21
  export type SearchComponent = BaseLayoutComponent & {
22
22
  type: 'search';
23
23
  kind: 'layout';
24
24
  emptyMessage: string;
25
+ initialState: SearchResultsState;
25
26
  hint?: string;
26
27
  isLoading: boolean;
27
28
  query: string;
28
29
  title: string;
29
- state: SearchResponse | null;
30
+ state: SearchResultsState;
30
31
  error?: string;
31
32
  onChange: (query: string) => void;
32
33
  onSelect: (result: SearchResult) => void;
33
34
  };
34
- export declare const createSearchComponent: (searchProps: Pick<SearchComponent, "uid" | "analyticsId" | "control" | "emptyMessage" | "hint" | "margin" | "tags" | "title">, performSearch: PerformSearch, onBehavior: OnBehavior, onComponentUpdate: OnComponentUpdate) => SearchComponent;
35
+ export declare const createSearchComponent: (searchProps: Pick<SearchComponent, "uid" | "analyticsId" | "control" | "emptyMessage" | "initialState" | "hint" | "margin" | "tags" | "title">, performSearch: PerformSearch, onBehavior: OnBehavior, onComponentUpdate: OnComponentUpdate) => SearchComponent;
35
36
  //# sourceMappingURL=SearchComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchComponent.d.ts","sourceRoot":"","sources":["../../../../../src/domain/components/searchComponent/SearchComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,UAAU,EACV,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAKrB,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC;AAEN,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;AAEnF,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG;IAClD,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CAC1C,CAAC;AAIF,eAAO,MAAM,qBAAqB,GAChC,aAAa,IAAI,CACf,eAAe,EACf,KAAK,GAAG,aAAa,GAAG,SAAS,GAAG,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAC1F,EACD,eAAe,aAAa,EAC5B,YAAY,UAAU,EACtB,mBAAmB,iBAAiB,KACnC,eA+EF,CAAC"}
1
+ {"version":3,"file":"SearchComponent.d.ts","sourceRoot":"","sources":["../../../../../src/domain/components/searchComponent/SearchComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,UAAU,EACV,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAKrB,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC;AAEN,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;AAEvF,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG;IAClD,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,kBAAkB,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CAC1C,CAAC;AAIF,eAAO,MAAM,qBAAqB,GAChC,aAAa,IAAI,CACf,eAAe,EACb,KAAK,GACL,aAAa,GACb,SAAS,GACT,cAAc,GACd,cAAc,GACd,MAAM,GACN,QAAQ,GACR,MAAM,GACN,OAAO,CACV,EACD,eAAe,aAAa,EAC5B,YAAY,UAAU,EACtB,mBAAmB,iBAAiB,KACnC,eA6FF,CAAC"}
@@ -2,5 +2,5 @@ import type { SearchConfig, PerformSearch } from '../../components/searchCompone
2
2
  import type { HttpClient } from '../../../types';
3
3
  import type { Layout } from '@wise/dynamic-flow-types/spec';
4
4
  import { LayoutComponent } from '../../types';
5
- export declare const getPerformSearchFunction: (httpClient: HttpClient, mapLayoutToDomainComponent: (layout: Layout) => LayoutComponent, defaultConfig: SearchConfig) => PerformSearch;
5
+ export declare const getPerformSearchFunction: (httpClient: HttpClient, mapLayoutToDomainComponent: (layout: Layout, index: number) => LayoutComponent, defaultConfig: SearchConfig) => PerformSearch;
6
6
  //# sourceMappingURL=getPerformSearchFunction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPerformSearchFunction.d.ts","sourceRoot":"","sources":["../../../../../src/domain/features/search/getPerformSearchFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EAEd,MAAM,kDAAkD,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAwC,MAAM,+BAA+B,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,wBAAwB,GACnC,YAAY,UAAU,EACtB,4BAA4B,CAAC,MAAM,EAAE,MAAM,KAAK,eAAe,EAC/D,eAAe,YAAY,KAC1B,aAyCF,CAAC"}
1
+ {"version":3,"file":"getPerformSearchFunction.d.ts","sourceRoot":"","sources":["../../../../../src/domain/features/search/getPerformSearchFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EAEd,MAAM,kDAAkD,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAwC,MAAM,+BAA+B,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,wBAAwB,GACnC,YAAY,UAAU,EACtB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,eAAe,EAC9E,eAAe,YAAY,KAC1B,aAyCF,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { SearchLayout } from '@wise/dynamic-flow-types/spec';
2
+ import { SearchComponent } from '../../components/searchComponent/SearchComponent';
2
3
  import type { MapperProps } from '../schema/types';
3
- export declare const searchLayoutToComponent: (uid: string, { analyticsId, control, emptyMessage, hint, method, param, title, url, margin, tags }: SearchLayout, mapperProps: MapperProps) => import("../../components/searchComponent/SearchComponent").SearchComponent;
4
+ export declare const searchLayoutToComponent: (uid: string, { analyticsId, control, emptyMessage, initialState, hint, method, param, title, url, margin, tags, }: SearchLayout, mapperProps: MapperProps) => SearchComponent;
4
5
  //# sourceMappingURL=searchLayoutToComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchLayoutToComponent.d.ts","sourceRoot":"","sources":["../../../../../src/domain/mappers/layout/searchLayoutToComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,eAAO,MAAM,uBAAuB,GAClC,KAAK,MAAM,EACX,uFAAuF,YAAY,EACnG,aAAa,WAAW,+EAwBzB,CAAC"}
1
+ {"version":3,"file":"searchLayoutToComponent.d.ts","sourceRoot":"","sources":["../../../../../src/domain/mappers/layout/searchLayoutToComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAEL,eAAe,EAEhB,MAAM,kDAAkD,CAAC;AAG1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,eAAO,MAAM,uBAAuB,GAClC,KAAK,MAAM,EACX,sGAYG,YAAY,EACf,aAAa,WAAW,oBA0BzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LoadingStateRendererProps, Renderer } from '@wise/dynamic-flow-types/renderers';
2
+ export declare const EmptyLoadingStateRenderer: Renderer<LoadingStateRendererProps>;
3
+ //# sourceMappingURL=EmptyLoadingStateRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyLoadingStateRenderer.d.ts","sourceRoot":"","sources":["../../../src/renderers/EmptyLoadingStateRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAE9F,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,yBAAyB,CAGzE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"rootComponentToProps.d.ts","sourceRoot":"","sources":["../../../../src/renderers/mappers/rootComponentToProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAA4B,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAG3F,eAAO,MAAM,oBAAoB,GAC/B,eAAe,mBAAmB,EAClC,qBAAqB,mBAAmB,KACvC,iBA6BF,CAAC"}
1
+ {"version":3,"file":"rootComponentToProps.d.ts","sourceRoot":"","sources":["../../../../src/renderers/mappers/rootComponentToProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAA4B,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAG3F,eAAO,MAAM,oBAAoB,GAC/B,eAAe,mBAAmB,EAClC,qBAAqB,mBAAmB,KACvC,iBA+BF,CAAC"}
@@ -1,5 +1,5 @@
1
- import type { SearchComponent } from '../../domain/components/searchComponent/SearchComponent';
2
1
  import type { SearchRendererProps } from '@wise/dynamic-flow-types/renderers';
2
+ import type { SearchComponent } from '../../domain/components/searchComponent/SearchComponent';
3
3
  import { RendererMapperProps } from './componentToRendererProps';
4
4
  export declare const searchComponentToProps: (component: SearchComponent, rendererMapperProps: RendererMapperProps) => SearchRendererProps;
5
5
  //# sourceMappingURL=searchComponentToProps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchComponentToProps.d.ts","sourceRoot":"","sources":["../../../../src/renderers/mappers/searchComponentToProps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,yDAAyD,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,oCAAoC,CAAC;AAC3F,OAAO,EAA4B,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAI3F,eAAO,MAAM,sBAAsB,GACjC,WAAW,eAAe,EAC1B,qBAAqB,mBAAmB,KACvC,mBAgCF,CAAC"}
1
+ {"version":3,"file":"searchComponentToProps.d.ts","sourceRoot":"","sources":["../../../../src/renderers/mappers/searchComponentToProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,oCAAoC,CAAC;AAE3F,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,yDAAyD,CAAC;AAGjE,OAAO,EAA4B,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAE3F,eAAO,MAAM,sBAAsB,GACjC,WAAW,eAAe,EAC1B,qBAAqB,mBAAmB,KACvC,mBAgCF,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { DynamicFlowWiseProps } from './DynamicFlowWise';
2
- export declare const getMergedTestRenderers: (props: DynamicFlowWiseProps) => (import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").CoreContainerRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").RootRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").StepRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").AlertRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").BoxRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ColumnsRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").DecisionRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").DividerRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ExternalConfirmationRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").FormattedValueRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").FormRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").HeadingRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").InstructionsRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ListRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").LoadingIndicatorRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").MarkdownRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ImageRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").MediaRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ModalLayoutRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ModalRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ParagraphRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ProgressRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ReviewRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").SearchRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").StatusListRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").CheckboxInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ButtonRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").DateInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").HiddenRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").IntegerInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").MoneyInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").NumberInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").RepeatableRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").FormSectionRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").SelectInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").SectionRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").SubflowRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").MultiSelectInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").TabsRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").TextInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").UploadInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").MultiUploadInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").UpsellRendererProps>)[];
2
+ export declare const getMergedTestRenderers: (props: DynamicFlowWiseProps) => (import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").CoreContainerRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").RootRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").LoadingStateRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").StepRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").AlertRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").BoxRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ColumnsRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").DecisionRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").DividerRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ExternalConfirmationRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").FormattedValueRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").FormRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").HeadingRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").InstructionsRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ListRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").LoadingIndicatorRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").MarkdownRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ImageRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").MediaRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ModalLayoutRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ModalRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ParagraphRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ProgressRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ReviewRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").SearchRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").StatusListRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").CheckboxInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").ButtonRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").DateInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").HiddenRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").IntegerInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").MoneyInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").NumberInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").RepeatableRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").FormSectionRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").SelectInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").SectionRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").SubflowRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").MultiSelectInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").TabsRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").TextInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").UploadInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").MultiUploadInputRendererProps> | import("@wise/dynamic-flow-types/renderers").Renderer<import("@wise/dynamic-flow-types/renderers").UpsellRendererProps>)[];
3
3
  //# sourceMappingURL=getMergedTestRenderers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getMergedTestRenderers.d.ts","sourceRoot":"","sources":["../../../src/test-utils/getMergedTestRenderers.tsx"],"names":[],"mappings":"AACA,OAAwB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAM1E,eAAO,MAAM,sBAAsB,GAAI,OAAO,oBAAoB,0vKA8BjE,CAAC"}
1
+ {"version":3,"file":"getMergedTestRenderers.d.ts","sourceRoot":"","sources":["../../../src/test-utils/getMergedTestRenderers.tsx"],"names":[],"mappings":"AAKA,OAAwB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAM1E,eAAO,MAAM,sBAAsB,GAAI,OAAO,oBAAoB,03KAgCjE,CAAC"}
@@ -6,6 +6,10 @@ export declare function useDynamicFlow(props: DynamicFlowCoreProps): {
6
6
  controller: {
7
7
  getSubmittableValue: () => Promise<import("@wise/dynamic-flow-types/spec").JsonElement>;
8
8
  validate: () => boolean;
9
+ /**
10
+ * @experimental This is not a public API and may be removed in the future without notice
11
+ */
12
+ rendererProps: import("@wise/dynamic-flow-types/renderers").RendererProps;
9
13
  cancel: () => void;
10
14
  };
11
15
  view: import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"useDynamicFlow.d.ts","sourceRoot":"","sources":["../../src/useDynamicFlow.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AASpD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,oBAAoB;;;;;;;EAyFzD"}
1
+ {"version":3,"file":"useDynamicFlow.d.ts","sourceRoot":"","sources":["../../src/useDynamicFlow.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AASpD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,oBAAoB;;;;QA6EpD;;WAEG;;;;;EAoBR"}
@@ -10,6 +10,7 @@ export declare const useDynamicFlowModal: (props: DynamicFlowProps) => {
10
10
  controller: {
11
11
  getSubmittableValue: () => Promise<JsonElement>;
12
12
  validate: () => boolean;
13
+ rendererProps: import("@wise/dynamic-flow-types/renderers").RendererProps;
13
14
  cancel: () => void;
14
15
  };
15
16
  view: import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"useDynamicFlowModal.d.ts","sourceRoot":"","sources":["../../src/useDynamicFlowModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAkB,MAAM,GAAG,CAAC;AAuBrD,eAAO,MAAM,mBAAmB,GAAI,OAAO,gBAAgB;;;;;;;;;;;;;CA2D1D,CAAC"}
1
+ {"version":3,"file":"useDynamicFlowModal.d.ts","sourceRoot":"","sources":["../../src/useDynamicFlowModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAkB,MAAM,GAAG,CAAC;AAuBrD,eAAO,MAAM,mBAAmB,GAAI,OAAO,gBAAgB;;;;;;;;;;;;;;CA2D1D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wise/dynamic-flow-client",
3
- "version": "5.8.1",
3
+ "version": "5.9.0-experimental-rendererprops-9c9a4b8",
4
4
  "description": "Dynamic Flow web client",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./build/main.js",
@@ -86,7 +86,7 @@
86
86
  "react-intl": "^6 || ^7"
87
87
  },
88
88
  "dependencies": {
89
- "@wise/dynamic-flow-types": "4.8.1"
89
+ "@wise/dynamic-flow-types": "4.9.0-experimental-rendererprops-9c9a4b8"
90
90
  },
91
91
  "scripts": {
92
92
  "dev": "EXCLUDE_VISUAL_TESTS=true pnpm storybook dev -p 3003",