brew-js-react 0.7.1 → 0.7.3

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/dialog.d.ts CHANGED
@@ -14,7 +14,7 @@ export type DialogBaseProps<T, V = T> = Omit<DialogOptions<T, V | undefined>, 'o
14
14
  /** @deprecated */
15
15
  export type DialogRenderComponentProps<T, V = T> = DialogOptions<T, V | undefined> & DialogContext<V | undefined>;
16
16
 
17
- export type DialogControllerOptions = Omit<DialogOptions<any>, 'onRender' | 'onCommit' | 'onOpen' | 'onClose' | 'controller'>;
17
+ export type DialogControllerOptions = Omit<DialogOptions<any>, 'signal' | 'onRender' | 'onCommit' | 'onOpen' | 'onClose' | 'controller'>;
18
18
 
19
19
  export interface DialogControllerAdvancedOptions extends DialogControllerOptions, Pick<DialogOptions<any>, 'onClose' | 'onOpen' | 'preventLeave' | 'preventNavigation'> {
20
20
  /**
@@ -143,6 +143,16 @@ export interface DialogOptions<T, V = T | undefined> {
143
143
  * which is useful for reusable layout for dialogs.
144
144
  */
145
145
  wrapper?: React.FC<DialogContext<V> & this & React.PropsWithChildren<{}>>;
146
+ /**
147
+ * An optional signal object to dismiss the dialog.
148
+ *
149
+ * When signal is received, the dialog will be closed without invoking {@link DialogOptions.onCommit}.
150
+ * If the signal is already aborted before the dialog is open, the dialog will cease to be opened.
151
+ *
152
+ * In either case, the promise returned from {@link DialogState.open} will always resolve to `undefined`
153
+ * without the abort reason being propagated.
154
+ */
155
+ signal?: AbortSignal;
146
156
  }
147
157
 
148
158
  export interface DialogContext<V> {
@@ -220,4 +230,4 @@ export function openDialog<P extends DialogOptions<any, any>>(props: P): Promise
220
230
  /**
221
231
  * Renders a dialog declaratively.
222
232
  */
223
- export function Dialog<T, V = T>(props: DialogProps<T, V>): JSX.Element;
233
+ export function Dialog<T, V = T>(props: DialogProps<T, V>): React.ReactElement;
package/dialog.js CHANGED
@@ -3,7 +3,7 @@ import ReactDOM from "react-dom";
3
3
  import ReactDOMClient from "@misonou/react-dom-client";
4
4
  import { createAsyncScope } from "zeta-dom-react";
5
5
  import { always, arrRemove, combineFn, createPrivateStore, defineObservableProperty, either, exclude, extend, noop, pick, resolve, setImmediate } from "zeta-dom/util";
6
- import { containsOrEquals, removeNode } from "zeta-dom/domUtil";
6
+ import { bind, containsOrEquals, removeNode } from "zeta-dom/domUtil";
7
7
  import dom from "zeta-dom/dom";
8
8
  import { runAsync, subscribeAsync } from "zeta-dom/domLock";
9
9
  import { closeFlyout, isFlyoutOpen, openFlyout } from "brew-js/domAction";
@@ -70,6 +70,15 @@ export function createDialog(props) {
70
70
  var closeDialog = shared ? noop : closeFlyout.bind(0, root);
71
71
 
72
72
  function render(closeDialog, props, container) {
73
+ var signal = props.signal;
74
+ if (signal) {
75
+ if (signal.aborted) {
76
+ return resolve();
77
+ }
78
+ closeDialog = combineFn(closeDialog, bind(signal, 'abort', function () {
79
+ closeDialog();
80
+ }));
81
+ }
73
82
  var commitDialog = props.onCommit ? function (value) {
74
83
  return runAsync(dom.activeElement, props.onCommit.bind(this, value)).then(closeDialog);
75
84
  } : closeDialog;
@@ -1,4 +1,4 @@
1
- /*! brew-js-react v0.7.1 | (c) misonou | https://misonou.github.io */
1
+ /*! brew-js-react v0.7.3 | (c) misonou | https://misonou.github.io */
2
2
  (function webpackUniversalModuleDefinition(root, factory) {
3
3
  if(typeof exports === 'object' && typeof module === 'object')
4
4
  module.exports = factory(require("zeta-dom"), require("brew-js"), require("react"), require("react-dom"), require("zeta-dom-react"), require("waterpipe"), require("jquery"));
@@ -12,64 +12,64 @@
12
12
  return /******/ (() => { // webpackBootstrap
13
13
  /******/ var __webpack_modules__ = ({
14
14
 
15
- /***/ 87:
16
- /***/ ((module) => {
15
+ /***/ 87
16
+ (module) {
17
17
 
18
18
  "use strict";
19
19
  module.exports = __WEBPACK_EXTERNAL_MODULE__87__;
20
20
 
21
- /***/ }),
21
+ /***/ },
22
22
 
23
- /***/ 760:
24
- /***/ ((module) => {
23
+ /***/ 760
24
+ (module) {
25
25
 
26
26
  "use strict";
27
27
  module.exports = __WEBPACK_EXTERNAL_MODULE__760__;
28
28
 
29
- /***/ }),
29
+ /***/ },
30
30
 
31
- /***/ 914:
32
- /***/ ((module) => {
31
+ /***/ 914
32
+ (module) {
33
33
 
34
34
  "use strict";
35
35
  module.exports = __WEBPACK_EXTERNAL_MODULE__914__;
36
36
 
37
- /***/ }),
37
+ /***/ },
38
38
 
39
- /***/ 12:
40
- /***/ ((module) => {
39
+ /***/ 12
40
+ (module) {
41
41
 
42
42
  "use strict";
43
43
  module.exports = __WEBPACK_EXTERNAL_MODULE__12__;
44
44
 
45
- /***/ }),
45
+ /***/ },
46
46
 
47
- /***/ 33:
48
- /***/ ((module) => {
47
+ /***/ 33
48
+ (module) {
49
49
 
50
50
  "use strict";
51
51
  module.exports = __WEBPACK_EXTERNAL_MODULE__33__;
52
52
 
53
- /***/ }),
53
+ /***/ },
54
54
 
55
- /***/ 231:
56
- /***/ ((module) => {
55
+ /***/ 231
56
+ (module) {
57
57
 
58
58
  "use strict";
59
59
  module.exports = __WEBPACK_EXTERNAL_MODULE__231__;
60
60
 
61
- /***/ }),
61
+ /***/ },
62
62
 
63
- /***/ 402:
64
- /***/ ((module) => {
63
+ /***/ 402
64
+ (module) {
65
65
 
66
66
  "use strict";
67
67
  module.exports = __WEBPACK_EXTERNAL_MODULE__402__;
68
68
 
69
- /***/ }),
69
+ /***/ },
70
70
 
71
- /***/ 621:
72
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
71
+ /***/ 621
72
+ (module, __unused_webpack_exports, __webpack_require__) {
73
73
 
74
74
  var ReactDOM = __webpack_require__(33);
75
75
  var ReactDOMClient;
@@ -99,7 +99,7 @@ if (ReactDOM.createRoot) {
99
99
  module.exports = ReactDOMClient;
100
100
 
101
101
 
102
- /***/ })
102
+ /***/ }
103
103
 
104
104
  /******/ });
105
105
  /************************************************************************/
@@ -158,7 +158,7 @@ module.exports = ReactDOMClient;
158
158
  /******/
159
159
  /************************************************************************/
160
160
  var __webpack_exports__ = {};
161
- // This entry need to be wrapped in an IIFE because it need to be in strict mode.
161
+ // This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
162
162
  (() => {
163
163
  "use strict";
164
164
  // ESM COMPAT FLAG
@@ -197,11 +197,13 @@ __webpack_require__.d(__webpack_exports__, {
197
197
  registerErrorView: () => (/* reexport */ registerErrorView),
198
198
  registerView: () => (/* reexport */ registerView),
199
199
  renderView: () => (/* reexport */ renderView),
200
+ resetAllViews: () => (/* reexport */ resetAllViews),
200
201
  resolvePath: () => (/* reexport */ resolvePath),
201
202
  useAnimateMixin: () => (/* reexport */ useAnimateMixin),
202
203
  useAnimateSequenceMixin: () => (/* reexport */ useAnimateSequenceMixin),
203
204
  useAppReady: () => (/* reexport */ useAppReady),
204
205
  useAppReadyState: () => (/* reexport */ useAppReadyState),
206
+ useAppSessionState: () => (/* reexport */ useAppSessionState),
205
207
  useClassNameToggleMixin: () => (/* reexport */ useClassNameToggleMixin),
206
208
  useFlyoutMixin: () => (/* reexport */ useFlyoutMixin),
207
209
  useFocusStateMixin: () => (/* reexport */ useFocusStateMixin),
@@ -221,7 +223,7 @@ __webpack_require__.d(__webpack_exports__, {
221
223
 
222
224
  // EXTERNAL MODULE: external {"commonjs":"zeta-dom","commonjs2":"zeta-dom","amd":"zeta-dom","root":"zeta"}
223
225
  var external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_ = __webpack_require__(231);
224
- ;// CONCATENATED MODULE: ./|umd|/zeta-dom/util.js
226
+ ;// ./|umd|/zeta-dom/util.js
225
227
 
226
228
  var _lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.util,
227
229
  always = _lib$util.always,
@@ -260,6 +262,7 @@ var _lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_
260
262
  pick = _lib$util.pick,
261
263
  randomId = _lib$util.randomId,
262
264
  resolve = _lib$util.resolve,
265
+ sameValue = _lib$util.sameValue,
263
266
  setImmediate = _lib$util.setImmediate,
264
267
  setImmediateOnce = _lib$util.setImmediateOnce,
265
268
  single = _lib$util.single,
@@ -270,17 +273,18 @@ var _lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_
270
273
 
271
274
  // EXTERNAL MODULE: external {"commonjs":"brew-js","commonjs2":"brew-js","amd":"brew-js","root":"brew"}
272
275
  var external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_ = __webpack_require__(760);
273
- ;// CONCATENATED MODULE: ./|umd|/brew-js/app.js
276
+ ;// ./|umd|/brew-js/app.js
277
+ /* unused harmony import specifier */ var lib;
274
278
 
275
279
  /* harmony default export */ const app = ((/* unused pure expression or super */ null && (lib)));
276
280
  var addExtension = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.addExtension,
277
281
  install = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.install;
278
282
 
279
- ;// CONCATENATED MODULE: ./|umd|/brew-js/defaults.js
283
+ ;// ./|umd|/brew-js/defaults.js
280
284
 
281
285
  var defaults = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.defaults;
282
286
  /* harmony default export */ const brew_js_defaults = (defaults);
283
- ;// CONCATENATED MODULE: ./src/app.js
287
+ ;// ./src/app.js
284
288
 
285
289
 
286
290
 
@@ -303,7 +307,7 @@ install('react', extension);
303
307
  brew_js_defaults.react = true;
304
308
  // EXTERNAL MODULE: external {"commonjs":"react","commonjs2":"react","amd":"react","root":"React"}
305
309
  var external_commonjs_react_commonjs2_react_amd_react_root_React_ = __webpack_require__(12);
306
- ;// CONCATENATED MODULE: ./|umd|/react.js
310
+ ;// ./|umd|/react.js
307
311
 
308
312
  var Component = external_commonjs_react_commonjs2_react_amd_react_root_React_.Component,
309
313
  StrictMode = external_commonjs_react_commonjs2_react_amd_react_root_React_.StrictMode,
@@ -322,47 +326,49 @@ var external_commonjs_react_dom_commonjs2_react_dom_amd_react_dom_root_ReactDOM_
322
326
  var fallback = __webpack_require__(621);
323
327
  // EXTERNAL MODULE: external {"commonjs":"zeta-dom-react","commonjs2":"zeta-dom-react","amd":"zeta-dom-react","root":["zeta","react"]}
324
328
  var external_commonjs_zeta_dom_react_commonjs2_zeta_dom_react_amd_zeta_dom_react_root_zeta_react_ = __webpack_require__(402);
325
- ;// CONCATENATED MODULE: ./|umd|/zeta-dom-react.js
329
+ ;// ./|umd|/zeta-dom-react.js
326
330
 
327
331
  var ViewStateProvider = external_commonjs_zeta_dom_react_commonjs2_zeta_dom_react_amd_zeta_dom_react_root_zeta_react_.ViewStateProvider,
328
332
  classNames = external_commonjs_zeta_dom_react_commonjs2_zeta_dom_react_amd_zeta_dom_react_root_zeta_react_.classNames,
329
333
  createAsyncScope = external_commonjs_zeta_dom_react_commonjs2_zeta_dom_react_amd_zeta_dom_react_root_zeta_react_.createAsyncScope,
330
334
  useAsync = external_commonjs_zeta_dom_react_commonjs2_zeta_dom_react_amd_zeta_dom_react_root_zeta_react_.useAsync,
335
+ useEagerReducer = external_commonjs_zeta_dom_react_commonjs2_zeta_dom_react_amd_zeta_dom_react_root_zeta_react_.useEagerReducer,
331
336
  useEagerState = external_commonjs_zeta_dom_react_commonjs2_zeta_dom_react_amd_zeta_dom_react_root_zeta_react_.useEagerState,
332
337
  useMemoizedFunction = external_commonjs_zeta_dom_react_commonjs2_zeta_dom_react_amd_zeta_dom_react_root_zeta_react_.useMemoizedFunction,
333
338
  useObservableProperty = external_commonjs_zeta_dom_react_commonjs2_zeta_dom_react_amd_zeta_dom_react_root_zeta_react_.useObservableProperty,
334
339
  useSingleton = external_commonjs_zeta_dom_react_commonjs2_zeta_dom_react_amd_zeta_dom_react_root_zeta_react_.useSingleton,
335
340
  useValueTrigger = external_commonjs_zeta_dom_react_commonjs2_zeta_dom_react_amd_zeta_dom_react_root_zeta_react_.useValueTrigger;
336
341
 
337
- ;// CONCATENATED MODULE: ./|umd|/zeta-dom/domUtil.js
342
+ ;// ./|umd|/zeta-dom/domUtil.js
338
343
 
339
344
  var domUtil_lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.util,
345
+ bind = domUtil_lib$util.bind,
340
346
  containsOrEquals = domUtil_lib$util.containsOrEquals,
341
347
  getClass = domUtil_lib$util.getClass,
342
348
  removeNode = domUtil_lib$util.removeNode,
343
349
  scrollIntoView = domUtil_lib$util.scrollIntoView,
344
350
  setClass = domUtil_lib$util.setClass;
345
351
 
346
- ;// CONCATENATED MODULE: ./|umd|/zeta-dom/dom.js
352
+ ;// ./|umd|/zeta-dom/dom.js
347
353
 
348
354
  var dom = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.dom;
349
355
  /* harmony default export */ const zeta_dom_dom = (dom);
350
356
  var reportError = dom.reportError;
351
357
 
352
- ;// CONCATENATED MODULE: ./|umd|/zeta-dom/domLock.js
358
+ ;// ./|umd|/zeta-dom/domLock.js
353
359
 
354
360
  var _lib$dom = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.dom,
355
361
  runAsync = _lib$dom.runAsync,
356
362
  subscribeAsync = _lib$dom.subscribeAsync;
357
363
 
358
- ;// CONCATENATED MODULE: ./|umd|/brew-js/domAction.js
364
+ ;// ./|umd|/brew-js/domAction.js
359
365
 
360
366
  var closeFlyout = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.closeFlyout,
361
367
  isFlyoutOpen = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.isFlyoutOpen,
362
368
  openFlyout = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.openFlyout,
363
369
  toggleFlyout = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.toggleFlyout;
364
370
 
365
- ;// CONCATENATED MODULE: ./src/dialog.js
371
+ ;// ./src/dialog.js
366
372
 
367
373
 
368
374
 
@@ -429,6 +435,15 @@ function createDialog(props) {
429
435
  var scope = state.scope || (state.scope = createAsyncScope(root));
430
436
  var closeDialog = shared ? noop : closeFlyout.bind(0, root);
431
437
  function render(closeDialog, props, container) {
438
+ var signal = props.signal;
439
+ if (signal) {
440
+ if (signal.aborted) {
441
+ return resolve();
442
+ }
443
+ closeDialog = combineFn(closeDialog, bind(signal, 'abort', function () {
444
+ closeDialog();
445
+ }));
446
+ }
432
447
  var commitDialog = props.onCommit ? function (value) {
433
448
  return runAsync(zeta_dom_dom.activeElement, props.onCommit.bind(this, value)).then(closeDialog);
434
449
  } : closeDialog;
@@ -556,27 +571,27 @@ function Dialog(props) {
556
571
  }, []);
557
572
  return /*#__PURE__*/external_commonjs_react_dom_commonjs2_react_dom_amd_react_dom_root_ReactDOM_.createPortal(props.children, element);
558
573
  }
559
- ;// CONCATENATED MODULE: ./|umd|/zeta-dom/events.js
574
+ ;// ./|umd|/zeta-dom/events.js
560
575
 
561
576
  var EventContainer = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.EventContainer;
562
577
 
563
- ;// CONCATENATED MODULE: ./|umd|/brew-js/util/common.js
578
+ ;// ./|umd|/brew-js/util/common.js
564
579
 
565
580
  var getQueryParam = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.getQueryParam,
566
581
  setQueryParam = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.setQueryParam,
567
582
  toQueryString = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.toQueryString;
568
583
 
569
- ;// CONCATENATED MODULE: ./|umd|/brew-js/util/path.js
584
+ ;// ./|umd|/brew-js/util/path.js
570
585
 
571
586
  var parsePath = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.parsePath,
572
587
  removeQueryAndHash = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.removeQueryAndHash;
573
588
 
574
- ;// CONCATENATED MODULE: ./|umd|/brew-js/anim.js
589
+ ;// ./|umd|/brew-js/anim.js
575
590
 
576
591
  var animateIn = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.animateIn,
577
592
  animateOut = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.animateOut;
578
593
 
579
- ;// CONCATENATED MODULE: ./src/view.js
594
+ ;// ./src/view.js
580
595
 
581
596
 
582
597
 
@@ -611,8 +626,7 @@ onAppInit(function () {
611
626
  (function updateViewRecursive(next) {
612
627
  each(next.children, function (i, v) {
613
628
  e.waitFor(new Promise(function (resolve) {
614
- v.onRender = resolve;
615
- v.forceUpdate();
629
+ v.forceUpdate(resolve);
616
630
  }).then(function () {
617
631
  updateViewRecursive(v);
618
632
  }));
@@ -653,6 +667,16 @@ definePrototype(ViewContext, {
653
667
  errorView: errorView
654
668
  });
655
669
  },
670
+ resetView: function resetView() {
671
+ var self = this;
672
+ each(self.parent ? [self] : self.getChildren(), function (i, v) {
673
+ var wrapper = view_(v).wrapper;
674
+ wrapper.setState({
675
+ key: (wrapper.state.key || 0) + 1,
676
+ errorView: null
677
+ });
678
+ });
679
+ },
656
680
  on: function on(event, handler) {
657
681
  return emitter.add(this, event, handler);
658
682
  }
@@ -709,6 +733,7 @@ definePrototype(ErrorBoundary, Component, {
709
733
  }));
710
734
  }
711
735
  var onError = self.componentDidCatch.bind(self);
736
+ var key = self.state.key || 0;
712
737
  var viewProps = {
713
738
  errorHandler: self.errorHandler,
714
739
  navigationType: view_event.navigationType,
@@ -716,6 +741,7 @@ definePrototype(ErrorBoundary, Component, {
716
741
  viewData: context.page.data || {}
717
742
  };
718
743
  return /*#__PURE__*/createElement(self.Provider, null, /*#__PURE__*/createElement(context.view, extend({
744
+ key: key,
719
745
  viewProps: viewProps,
720
746
  onError: onError
721
747
  }, self.props)));
@@ -765,7 +791,6 @@ definePrototype(ViewContainer, Component, {
765
791
  if (self.context.active) {
766
792
  self.updateView();
767
793
  }
768
- self.onRender();
769
794
  return self.views;
770
795
  },
771
796
  updateView: function updateView() {
@@ -816,10 +841,12 @@ definePrototype(ViewContainer, Component, {
816
841
  }, true);
817
842
  return animateOut(element, 'show').then(function () {
818
843
  self.views[0] = null;
819
- self.forceUpdate();
844
+ return new Promise(function (resolve) {
845
+ self.forceUpdate(resolve);
846
+ });
820
847
  });
821
848
  });
822
- always(promise, delay).then(function () {
849
+ always(promise || delay(), function () {
823
850
  app_app.emit('pageenter', element, {
824
851
  pathname: context.page.path,
825
852
  view: V
@@ -857,7 +884,7 @@ definePrototype(ViewContainer, Component, {
857
884
  }) || props.defaultView;
858
885
  }
859
886
  });
860
- fill(ViewContainer.prototype, 'abort onRender setActive setPage unmountView', noop);
887
+ fill(ViewContainer.prototype, 'abort setActive setPage unmountView', noop);
861
888
  function normalizePart(value, part) {
862
889
  return isUndefinedOrNull(value) || value === '' || value === part ? '' : value[0] === part ? value : part + value;
863
890
  }
@@ -993,6 +1020,9 @@ function renderView() {
993
1020
  defaultView: defaultView
994
1021
  });
995
1022
  }
1023
+ function resetAllViews() {
1024
+ rootContext.resetView();
1025
+ }
996
1026
  function resolvePath(view, params) {
997
1027
  var suffix = '';
998
1028
  if (isArray(params)) {
@@ -1011,7 +1041,7 @@ function redirectTo(view, params, data) {
1011
1041
  return navigateTo(view, params, data, true);
1012
1042
  }
1013
1043
 
1014
- ;// CONCATENATED MODULE: ./src/hooks.js
1044
+ ;// ./src/hooks.js
1015
1045
 
1016
1046
 
1017
1047
 
@@ -1076,6 +1106,19 @@ function useViewContextWithEffect(callback, deps) {
1076
1106
  }, deps);
1077
1107
  return container;
1078
1108
  }
1109
+ function usePersistedState(storage, key, defaultValue) {
1110
+ var state = useEagerReducer(function (prevState, value) {
1111
+ value = isFunction(value) ? value(prevState[1]) : value;
1112
+ return sameValue(value, prevState[1]) ? prevState : [prevState[0], value];
1113
+ }, []);
1114
+ var cur = state[0];
1115
+ useMemo(function () {
1116
+ if (cur[0] !== key) {
1117
+ cur.splice(0, 2, key, storage && storage.has(key) ? storage.get(key) : isFunction(defaultValue) ? defaultValue() : defaultValue);
1118
+ }
1119
+ }, [storage, key]);
1120
+ return [cur[1], state[1]];
1121
+ }
1079
1122
  function useAppReady() {
1080
1123
  return useAppReadyState().ready;
1081
1124
  }
@@ -1106,7 +1149,7 @@ function useRouteParam(name, defaultValue) {
1106
1149
  }
1107
1150
  function useRouteState(key, defaultValue, snapshotOnUpdate) {
1108
1151
  var cur = getCurrentStates();
1109
- var state = useEagerState(cur && cur.has(key) ? cur.get(key) : defaultValue);
1152
+ var state = usePersistedState(cur, key, defaultValue);
1110
1153
  var container = useViewContextWithEffect(function (cur) {
1111
1154
  state[1](function (oldValue) {
1112
1155
  return cur.has(key) ? cur.get(key) : (cur.set(key, oldValue), oldValue);
@@ -1120,6 +1163,12 @@ function useRouteState(key, defaultValue, snapshotOnUpdate) {
1120
1163
  }
1121
1164
  return state;
1122
1165
  }
1166
+ function useAppSessionState(key, defaultValue) {
1167
+ var cur = app_app.sessionStorage;
1168
+ var state = usePersistedState(cur, key, defaultValue);
1169
+ updatePersistedValue(cur, key, state[0]);
1170
+ return state;
1171
+ }
1123
1172
  function useQueryParam(key, value, snapshotOnUpdate) {
1124
1173
  if (isPlainObject(key)) {
1125
1174
  snapshotOnUpdate = value;
@@ -1196,7 +1245,7 @@ function ViewStateContainer(props) {
1196
1245
  }
1197
1246
  // EXTERNAL MODULE: external "waterpipe"
1198
1247
  var external_waterpipe_ = __webpack_require__(87);
1199
- ;// CONCATENATED MODULE: ./src/i18n.js
1248
+ ;// ./src/i18n.js
1200
1249
 
1201
1250
 
1202
1251
 
@@ -1282,7 +1331,7 @@ function makeTranslation(resources, defaultLang) {
1282
1331
  }
1283
1332
  };
1284
1333
  }
1285
- ;// CONCATENATED MODULE: ./src/mixins/StaticAttributeMixin.js
1334
+ ;// ./src/mixins/StaticAttributeMixin.js
1286
1335
 
1287
1336
 
1288
1337
  function StaticAttributeMixin(name, value) {
@@ -1294,7 +1343,7 @@ definePrototype(StaticAttributeMixin, Mixin, {
1294
1343
  return extend({}, this.attributes);
1295
1344
  }
1296
1345
  });
1297
- ;// CONCATENATED MODULE: ./src/mixins/Mixin.js
1346
+ ;// ./src/mixins/Mixin.js
1298
1347
 
1299
1348
 
1300
1349
 
@@ -1352,13 +1401,13 @@ util_define(Mixin, {
1352
1401
  });
1353
1402
  }
1354
1403
  });
1355
- ;// CONCATENATED MODULE: ./|umd|/zeta-dom/observe.js
1404
+ ;// ./|umd|/zeta-dom/observe.js
1356
1405
 
1357
1406
  var observe_lib$dom = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.dom,
1358
1407
  watchElements = observe_lib$dom.watchElements,
1359
1408
  watchOwnAttributes = observe_lib$dom.watchOwnAttributes;
1360
1409
 
1361
- ;// CONCATENATED MODULE: ./src/mixins/StatefulMixin.js
1410
+ ;// ./src/mixins/StatefulMixin.js
1362
1411
 
1363
1412
 
1364
1413
  var StatefulMixin_ = createPrivateStore();
@@ -1468,7 +1517,7 @@ definePrototype(StatefulMixin, Mixin, {
1468
1517
  state.pending = {};
1469
1518
  }
1470
1519
  });
1471
- ;// CONCATENATED MODULE: ./src/mixins/ClassNameMixin.js
1520
+ ;// ./src/mixins/ClassNameMixin.js
1472
1521
 
1473
1522
 
1474
1523
 
@@ -1505,7 +1554,7 @@ definePrototype(ClassNameMixin, StatefulMixin, {
1505
1554
  },
1506
1555
  onClassNameUpdated: function onClassNameUpdated(element, prevState, state) {}
1507
1556
  });
1508
- ;// CONCATENATED MODULE: ./src/mixins/AnimateMixin.js
1557
+ ;// ./src/mixins/AnimateMixin.js
1509
1558
 
1510
1559
 
1511
1560
  var AnimateMixinSuper = ClassNameMixin.prototype;
@@ -1537,7 +1586,7 @@ definePrototype(AnimateMixin, ClassNameMixin, {
1537
1586
  });
1538
1587
  }
1539
1588
  });
1540
- ;// CONCATENATED MODULE: ./src/mixins/AnimateSequenceItemMixin.js
1589
+ ;// ./src/mixins/AnimateSequenceItemMixin.js
1541
1590
 
1542
1591
 
1543
1592
  var AnimateSequenceItemMixinSuper = ClassNameMixin.prototype;
@@ -1557,7 +1606,7 @@ definePrototype(AnimateSequenceItemMixin, ClassNameMixin, {
1557
1606
  });
1558
1607
  // EXTERNAL MODULE: external {"commonjs":"jquery","commonjs2":"jquery","amd":"jquery","root":"jQuery"}
1559
1608
  var external_commonjs_jquery_commonjs2_jquery_amd_jquery_root_jQuery_ = __webpack_require__(914);
1560
- ;// CONCATENATED MODULE: ./src/mixins/AnimateSequenceMixin.js
1609
+ ;// ./src/mixins/AnimateSequenceMixin.js
1561
1610
 
1562
1611
 
1563
1612
 
@@ -1594,7 +1643,7 @@ definePrototype(AnimateSequenceMixin, AnimateMixin, {
1594
1643
  }
1595
1644
  }
1596
1645
  });
1597
- ;// CONCATENATED MODULE: ./src/mixins/ClassNameToggleMixin.js
1646
+ ;// ./src/mixins/ClassNameToggleMixin.js
1598
1647
 
1599
1648
 
1600
1649
 
@@ -1616,7 +1665,7 @@ definePrototype(ClassNameToggleMixin, StatefulMixin, {
1616
1665
  extend(this.classes, value);
1617
1666
  }
1618
1667
  });
1619
- ;// CONCATENATED MODULE: ./src/mixins/FlyoutToggleMixin.js
1668
+ ;// ./src/mixins/FlyoutToggleMixin.js
1620
1669
 
1621
1670
 
1622
1671
 
@@ -1660,7 +1709,7 @@ definePrototype(FlyoutToggleMixin, ClassNameMixin, {
1660
1709
  }));
1661
1710
  }
1662
1711
  });
1663
- ;// CONCATENATED MODULE: ./src/mixins/FlyoutMixin.js
1712
+ ;// ./src/mixins/FlyoutMixin.js
1664
1713
 
1665
1714
 
1666
1715
 
@@ -1786,7 +1835,7 @@ definePrototype(FlyoutMixin, ClassNameMixin, {
1786
1835
  }, true));
1787
1836
  }
1788
1837
  });
1789
- ;// CONCATENATED MODULE: ./src/mixins/FocusStateMixin.js
1838
+ ;// ./src/mixins/FocusStateMixin.js
1790
1839
 
1791
1840
 
1792
1841
 
@@ -1828,11 +1877,11 @@ definePrototype(FocusStateMixin, StatefulMixin, {
1828
1877
  setClass(element, 'focused', state.focused);
1829
1878
  }
1830
1879
  });
1831
- ;// CONCATENATED MODULE: ./|umd|/brew-js/directive.js
1880
+ ;// ./|umd|/brew-js/directive.js
1832
1881
 
1833
1882
  var getDirectiveComponent = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.getDirectiveComponent;
1834
1883
 
1835
- ;// CONCATENATED MODULE: ./src/mixins/LoadingStateMixin.js
1884
+ ;// ./src/mixins/LoadingStateMixin.js
1836
1885
 
1837
1886
 
1838
1887
 
@@ -1855,7 +1904,7 @@ definePrototype(LoadingStateMixin, ClassNameMixin, {
1855
1904
  }));
1856
1905
  }
1857
1906
  });
1858
- ;// CONCATENATED MODULE: ./src/mixins/ScrollableMixin.js
1907
+ ;// ./src/mixins/ScrollableMixin.js
1859
1908
 
1860
1909
 
1861
1910
 
@@ -1920,7 +1969,7 @@ each('destroy enable disable setOptions setStickyPosition refresh scrollPadding
1920
1969
  return obj.scrollable[v].apply(null, arguments);
1921
1970
  });
1922
1971
  });
1923
- ;// CONCATENATED MODULE: ./src/mixins/ScrollIntoViewMixin.js
1972
+ ;// ./src/mixins/ScrollIntoViewMixin.js
1924
1973
 
1925
1974
 
1926
1975
 
@@ -1944,7 +1993,7 @@ definePrototype(ScrollIntoViewMixin, StatefulMixin, {
1944
1993
  extend(state, newState);
1945
1994
  }
1946
1995
  });
1947
- ;// CONCATENATED MODULE: ./src/mixins/UnmanagedClassNameMixin.js
1996
+ ;// ./src/mixins/UnmanagedClassNameMixin.js
1948
1997
 
1949
1998
 
1950
1999
  function UnmanagedClassNameMixin() {
@@ -1956,7 +2005,7 @@ definePrototype(UnmanagedClassNameMixin, ClassNameMixin, {
1956
2005
  return this;
1957
2006
  }
1958
2007
  });
1959
- ;// CONCATENATED MODULE: ./src/mixin.js
2008
+ ;// ./src/mixin.js
1960
2009
 
1961
2010
 
1962
2011
 
@@ -2000,16 +2049,17 @@ function useMixinRef(mixin) {
2000
2049
  return mixin && mixin.getMixin().reset();
2001
2050
  }
2002
2051
 
2003
- ;// CONCATENATED MODULE: ./src/index.js
2052
+ ;// ./src/index.js
2053
+ /* unused harmony import specifier */ var src_brew;
2004
2054
 
2005
2055
 
2006
- /* harmony default export */ const src = ((/* unused pure expression or super */ null && (brew)));
2056
+ /* harmony default export */ const src = ((/* unused pure expression or super */ null && (src_brew)));
2007
2057
 
2008
2058
 
2009
2059
 
2010
2060
 
2011
2061
 
2012
- ;// CONCATENATED MODULE: ./src/entry.js
2062
+ ;// ./src/entry.js
2013
2063
 
2014
2064
  defineGetterProperty(window, 'brew-js-react', function () {
2015
2065
  console.warn('window["brew-js-react"] is deprecated, access brew.react instead.');