brew-js-react 0.3.1 → 0.3.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.js CHANGED
@@ -1,19 +1,18 @@
1
1
  import { createElement, useEffect, useState } from "react";
2
2
  import ReactDOM from "react-dom";
3
+ import ReactDOMClient from "./include/external/react-dom-client.js";
3
4
  import { always, catchAsync, either, extend, makeAsync, noop, pipe } from "./include/zeta-dom/util.js";
4
5
  import { containsOrEquals, removeNode } from "./include/zeta-dom/domUtil.js";
5
6
  import dom from "./include/zeta-dom/dom.js";
6
7
  import { lock, preventLeave } from "./include/zeta-dom/domLock.js";
7
8
  import { closeFlyout, openFlyout } from "./include/brew-js/domAction.js";
8
9
 
9
- const createRoot = ReactDOM.createRoot;
10
-
11
10
  /**
12
11
  * @param {Partial<import("./dialog").DialogOptions<any>>} props
13
12
  */
14
13
  export function createDialog(props) {
15
14
  var root = document.createElement('div');
16
- var reactRoot = createRoot && createRoot(root);
15
+ var reactRoot = ReactDOMClient.createRoot(root);
17
16
  var closeDialog = closeFlyout.bind(0, root);
18
17
  var promise;
19
18
 
@@ -21,11 +20,7 @@ export function createDialog(props) {
21
20
  removeNode(root);
22
21
  (props.onClose || noop)(root);
23
22
  if (props.onRender) {
24
- if (reactRoot) {
25
- reactRoot.unmount();
26
- } else {
27
- ReactDOM.unmountComponentAtNode(root);
28
- }
23
+ reactRoot.unmount();
29
24
  }
30
25
  });
31
26
 
@@ -55,11 +50,7 @@ export function createDialog(props) {
55
50
  if (props.wrapper) {
56
51
  content = createElement(props.wrapper, dialogProps, content);
57
52
  }
58
- if (reactRoot) {
59
- reactRoot.render(content);
60
- } else {
61
- ReactDOM.render(content, root);
62
- }
53
+ reactRoot.render(content);
63
54
  }
64
55
  promise = openFlyout(root);
65
56
  if (props.preventLeave) {
@@ -1,13 +1,13 @@
1
1
  (function webpackUniversalModuleDefinition(root, factory) {
2
2
  if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory(require("brew-js"), require("react"), require("react-dom"), require("zeta-dom"), require("zeta-dom-react"), require("waterpipe"), require("jQuery"));
3
+ module.exports = factory(require("brew-js"), require("react"), require("react-dom"), (function webpackLoadOptionalExternalModule() { try { return require("react-dom/client"); } catch(e) {} }()), require("zeta-dom"), require("zeta-dom-react"), require("waterpipe"), require("jQuery"));
4
4
  else if(typeof define === 'function' && define.amd)
5
- define("brew-js-react", ["brew-js", "react", "react-dom", "zeta-dom", "zeta-dom-react", "waterpipe", "jQuery"], factory);
5
+ define("brew-js-react", ["brew-js", "react", "react-dom", "react-dom/client", "zeta-dom", "zeta-dom-react", "waterpipe", "jQuery"], factory);
6
6
  else if(typeof exports === 'object')
7
- exports["brew-js-react"] = factory(require("brew-js"), require("react"), require("react-dom"), require("zeta-dom"), require("zeta-dom-react"), require("waterpipe"), require("jQuery"));
7
+ exports["brew-js-react"] = factory(require("brew-js"), require("react"), require("react-dom"), (function webpackLoadOptionalExternalModule() { try { return require("react-dom/client"); } catch(e) {} }()), require("zeta-dom"), require("zeta-dom-react"), require("waterpipe"), require("jQuery"));
8
8
  else
9
- root["brew-js-react"] = factory(root["brew"], root["React"], root["ReactDOM"], root["zeta"], root["zeta-dom-react"], root["waterpipe"], root["jQuery"]);
10
- })(self, function(__WEBPACK_EXTERNAL_MODULE__80__, __WEBPACK_EXTERNAL_MODULE__359__, __WEBPACK_EXTERNAL_MODULE__318__, __WEBPACK_EXTERNAL_MODULE__654__, __WEBPACK_EXTERNAL_MODULE__103__, __WEBPACK_EXTERNAL_MODULE__28__, __WEBPACK_EXTERNAL_MODULE__145__) {
9
+ root["brew-js-react"] = factory(root["brew"], root["React"], root["ReactDOM"], root["react-dom/client"], root["zeta"], root["zeta-dom-react"], root["waterpipe"], root["jQuery"]);
10
+ })(self, function(__WEBPACK_EXTERNAL_MODULE__80__, __WEBPACK_EXTERNAL_MODULE__359__, __WEBPACK_EXTERNAL_MODULE__318__, __WEBPACK_EXTERNAL_MODULE__715__, __WEBPACK_EXTERNAL_MODULE__654__, __WEBPACK_EXTERNAL_MODULE__103__, __WEBPACK_EXTERNAL_MODULE__28__, __WEBPACK_EXTERNAL_MODULE__145__) {
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
@@ -19,6 +19,16 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__145__;
19
19
 
20
20
  /***/ }),
21
21
 
22
+ /***/ 715:
23
+ /***/ ((module) => {
24
+
25
+ "use strict";
26
+ if(typeof __WEBPACK_EXTERNAL_MODULE__715__ === 'undefined') { var e = new Error("Cannot find module 'react-dom/client'"); e.code = 'MODULE_NOT_FOUND'; throw e; }
27
+
28
+ module.exports = __WEBPACK_EXTERNAL_MODULE__715__;
29
+
30
+ /***/ }),
31
+
22
32
  /***/ 28:
23
33
  /***/ ((module) => {
24
34
 
@@ -67,28 +77,41 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__654__;
67
77
 
68
78
  /***/ }),
69
79
 
70
- /***/ 346:
71
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
72
-
73
- /// <reference types="jq-scrollable" />
74
- // @ts-nocheck
75
-
76
- /** @type {JQueryStatic} */
77
- var jQuery = window.jQuery || __webpack_require__(145);
78
-
79
- module.exports = jQuery;
80
-
81
- /***/ }),
82
-
83
- /***/ 43:
80
+ /***/ 662:
84
81
  /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
85
82
 
86
- // @ts-nocheck
87
-
88
- /** @type {Waterpipe} */
89
- var waterpipe = window.waterpipe || __webpack_require__(28);
83
+ var React = __webpack_require__(318);
84
+ var ReactDOMClient;
85
+ try {
86
+ ReactDOMClient = __webpack_require__(715);
87
+ } catch (e) {
88
+ ReactDOMClient = {
89
+ createRoot(container, options) {
90
+ return {
91
+ render(children) {
92
+ React.render(children, container);
93
+ },
94
+ unmount() {
95
+ React.unmountComponentAtNode(container);
96
+ }
97
+ };
98
+ },
99
+ hydrateRoot(container, initialChildren, options) {
100
+ React.hydrate(initialChildren, container);
101
+ return {
102
+ render(children) {
103
+ React.render(children, container);
104
+ },
105
+ unmount() {
106
+ React.unmountComponentAtNode(container);
107
+ }
108
+ };
109
+ },
110
+ };
111
+ }
112
+ /** @type {import("react-dom/client")} */
113
+ module.exports = ReactDOMClient;
90
114
 
91
- module.exports = waterpipe;
92
115
 
93
116
  /***/ })
94
117
 
@@ -220,6 +243,14 @@ var install = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_
220
243
  var external_commonjs_react_commonjs2_react_amd_react_root_React_ = __webpack_require__(359);
221
244
  // EXTERNAL MODULE: external {"commonjs":"react-dom","commonjs2":"react-dom","amd":"react-dom","root":"ReactDOM"}
222
245
  var external_commonjs_react_dom_commonjs2_react_dom_amd_react_dom_root_ReactDOM_ = __webpack_require__(318);
246
+ // EXTERNAL MODULE: ./node_modules/@misonou/react-dom-client/index.js
247
+ var react_dom_client = __webpack_require__(662);
248
+ ;// CONCATENATED MODULE: ./src/include/external/react-dom-client.js
249
+ // @ts-nocheck
250
+
251
+ /** @type {import("react-dom/client")} */
252
+
253
+ /* harmony default export */ const external_react_dom_client = (react_dom_client);
223
254
  // EXTERNAL MODULE: external {"commonjs":"zeta-dom","commonjs2":"zeta-dom","amd":"zeta-dom","root":"zeta"}
224
255
  var external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_ = __webpack_require__(654);
225
256
  ;// CONCATENATED MODULE: ./tmp/zeta-dom/util.js
@@ -304,8 +335,6 @@ var _lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_
304
335
  delay = _lib$util.delay,
305
336
  makeAsync = _lib$util.makeAsync;
306
337
 
307
- ;// CONCATENATED MODULE: ./src/include/zeta-dom/util.js
308
-
309
338
  ;// CONCATENATED MODULE: ./tmp/zeta-dom/domUtil.js
310
339
 
311
340
  var domUtil_lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.util,
@@ -348,8 +377,6 @@ var domUtil_lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_do
348
377
  mergeRect = domUtil_lib$util.mergeRect,
349
378
  elementFromPoint = domUtil_lib$util.elementFromPoint;
350
379
 
351
- ;// CONCATENATED MODULE: ./src/include/zeta-dom/domUtil.js
352
-
353
380
  ;// CONCATENATED MODULE: ./tmp/zeta-dom/dom.js
354
381
 
355
382
  var dom_defaultExport = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.dom;
@@ -383,16 +410,12 @@ var domLock_lib$dom = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom
383
410
  notifyAsync = domLock_lib$dom.notifyAsync,
384
411
  preventLeave = domLock_lib$dom.preventLeave;
385
412
 
386
- ;// CONCATENATED MODULE: ./src/include/zeta-dom/domLock.js
387
-
388
413
  ;// CONCATENATED MODULE: ./tmp/brew-js/domAction.js
389
414
 
390
415
  var addAsyncAction = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.addAsyncAction,
391
416
  closeFlyout = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.closeFlyout,
392
417
  openFlyout = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.openFlyout;
393
418
 
394
- ;// CONCATENATED MODULE: ./src/include/brew-js/domAction.js
395
-
396
419
  ;// CONCATENATED MODULE: ./src/dialog.js
397
420
 
398
421
 
@@ -401,14 +424,14 @@ var addAsyncAction = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_roo
401
424
 
402
425
 
403
426
 
404
- var createRoot = external_commonjs_react_dom_commonjs2_react_dom_amd_react_dom_root_ReactDOM_.createRoot;
427
+
405
428
  /**
406
429
  * @param {Partial<import("./dialog").DialogOptions<any>>} props
407
430
  */
408
431
 
409
432
  function createDialog(props) {
410
433
  var root = document.createElement('div');
411
- var reactRoot = createRoot && createRoot(root);
434
+ var reactRoot = external_react_dom_client.createRoot(root);
412
435
 
413
436
  var _closeDialog = closeFlyout.bind(0, root);
414
437
 
@@ -418,11 +441,7 @@ function createDialog(props) {
418
441
  (props.onClose || noop)(root);
419
442
 
420
443
  if (props.onRender) {
421
- if (reactRoot) {
422
- reactRoot.unmount();
423
- } else {
424
- external_commonjs_react_dom_commonjs2_react_dom_amd_react_dom_root_ReactDOM_.unmountComponentAtNode(root);
425
- }
444
+ reactRoot.unmount();
426
445
  }
427
446
  });
428
447
  return {
@@ -456,11 +475,7 @@ function createDialog(props) {
456
475
  content = /*#__PURE__*/(0,external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement)(props.wrapper, dialogProps, content);
457
476
  }
458
477
 
459
- if (reactRoot) {
460
- reactRoot.render(content);
461
- } else {
462
- external_commonjs_react_dom_commonjs2_react_dom_amd_react_dom_root_ReactDOM_.render(content, root);
463
- }
478
+ reactRoot.render(content);
464
479
  }
465
480
 
466
481
  promise = openFlyout(root);
@@ -511,8 +526,6 @@ var external_zeta_dom_react_ = __webpack_require__(103);
511
526
 
512
527
  var ZetaEventContainer = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.EventContainer;
513
528
 
514
- ;// CONCATENATED MODULE: ./src/include/zeta-dom/events.js
515
-
516
529
  ;// CONCATENATED MODULE: ./tmp/brew-js/defaults.js
517
530
 
518
531
  var defaults_defaultExport = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.defaults;
@@ -538,12 +551,11 @@ var animateIn = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_bre
538
551
  addAnimateIn = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.addAnimateIn,
539
552
  addAnimateOut = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.addAnimateOut;
540
553
 
541
- ;// CONCATENATED MODULE: ./src/include/brew-js/anim.js
542
-
543
554
  ;// CONCATENATED MODULE: ./tmp/brew-js/util/path.js
544
555
 
545
556
  var setBaseUrl = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.setBaseUrl,
546
557
  combinePath = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.combinePath,
558
+ parsePath = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.parsePath,
547
559
  normalizePath = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.normalizePath,
548
560
  removeQueryAndHash = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.removeQueryAndHash,
549
561
  withBaseUrl = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.withBaseUrl,
@@ -552,8 +564,6 @@ var setBaseUrl = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_br
552
564
  isSubPathOf = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.isSubPathOf,
553
565
  toSegments = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.toSegments;
554
566
 
555
- ;// CONCATENATED MODULE: ./src/include/brew-js/util/path.js
556
-
557
567
  ;// CONCATENATED MODULE: ./src/view.js
558
568
 
559
569
 
@@ -589,9 +599,13 @@ definePrototype(ErrorBoundary, external_commonjs_react_commonjs2_react_amd_react
589
599
  error: error
590
600
  });
591
601
  } else {
592
- zeta_dom_dom.emit('error', self.context.container, {
593
- error: error
594
- }, true);
602
+ // emit error in next tick as ref callback may yet to be invoked
603
+ // if error is thrown synchronously in first render
604
+ setImmediate(function () {
605
+ zeta_dom_dom.emit('error', self.context.container, {
606
+ error: error
607
+ }, true);
608
+ });
595
609
  }
596
610
  },
597
611
  render: function render() {
@@ -883,6 +897,7 @@ function redirectTo(view, params) {
883
897
 
884
898
 
885
899
 
900
+
886
901
  var emitter = new ZetaEventContainer();
887
902
  var states = {};
888
903
 
@@ -959,15 +974,28 @@ function useRouteParam(name, defaultValue) {
959
974
 
960
975
  return value;
961
976
  }
962
- function useRouteState(key, defaultValue) {
977
+ function useRouteState(key, defaultValue, snapshotOnUpdate) {
963
978
  var container = useViewContainerState();
964
979
  var cur = getCurrentStates();
965
980
  var state = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useState)(key in cur ? cur[key] : defaultValue);
966
981
 
967
- if (container.active) {
982
+ if (container.active && cur[key] !== state[0]) {
983
+ if (snapshotOnUpdate && key in cur) {
984
+ app_app.snapshot();
985
+ cur = getCurrentStates();
986
+ }
987
+
968
988
  cur[key] = state[0];
969
989
  }
970
990
 
991
+ (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useEffect)(function () {
992
+ return bind(window, 'popstate', function () {
993
+ if (snapshotOnUpdate && container.active) {
994
+ var cur = getCurrentStates();
995
+ state[1](key in cur ? cur[key] : defaultValue);
996
+ }
997
+ });
998
+ }, [container, snapshotOnUpdate]);
971
999
  return state;
972
1000
  }
973
1001
  function ViewStateContainer(props) {
@@ -1006,8 +1034,12 @@ function ViewStateContainer(props) {
1006
1034
  value: provider
1007
1035
  }, props.children);
1008
1036
  }
1009
- // EXTERNAL MODULE: ./src/include/external/waterpipe.js
1010
- var waterpipe = __webpack_require__(43);
1037
+ // EXTERNAL MODULE: external "waterpipe"
1038
+ var external_waterpipe_ = __webpack_require__(28);
1039
+ ;// CONCATENATED MODULE: ./src/include/external/waterpipe.js
1040
+ // @ts-nocheck
1041
+
1042
+ /* harmony default export */ const waterpipe = (external_waterpipe_);
1011
1043
  ;// CONCATENATED MODULE: ./src/i18n.js
1012
1044
 
1013
1045
 
@@ -1192,8 +1224,6 @@ var observe_lib$dom = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom
1192
1224
  watchAttributes = observe_lib$dom.watchAttributes,
1193
1225
  watchOwnAttributes = observe_lib$dom.watchOwnAttributes;
1194
1226
 
1195
- ;// CONCATENATED MODULE: ./src/include/zeta-dom/observe.js
1196
-
1197
1227
  ;// CONCATENATED MODULE: ./src/mixins/StatefulMixin.js
1198
1228
 
1199
1229
 
@@ -1213,7 +1243,7 @@ function StatefulMixin() {
1213
1243
  Mixin.call(this);
1214
1244
 
1215
1245
  _(this, {
1216
- elements: new WeakSet(),
1246
+ elements: new Set(),
1217
1247
  flush: watch(this, false),
1218
1248
  dispose: [],
1219
1249
  states: {},
@@ -1288,6 +1318,7 @@ definePrototype(StatefulMixin, Mixin, {
1288
1318
  var states = state.states;
1289
1319
  combineFn(state.dispose.splice(0))();
1290
1320
  state.flush();
1321
+ state.elements.clear();
1291
1322
  each(states, function (i, v) {
1292
1323
  delete states[i];
1293
1324
  });
@@ -1527,14 +1558,14 @@ definePrototype(FlyoutMixin, ClassNameMixin, {
1527
1558
  element.id = 'flyout-' + ++flyoutMixinCounter;
1528
1559
  }
1529
1560
 
1530
- app_app.on(element, {
1561
+ self.onDispose(app_app.on(element, {
1531
1562
  animationstart: function animationstart() {
1532
1563
  self.animating = true;
1533
1564
  },
1534
1565
  animationcomplete: function animationcomplete() {
1535
1566
  self.animating = false;
1536
1567
  }
1537
- }, true);
1568
+ }, true));
1538
1569
  setImmediate(function () {
1539
1570
  each(self.toggle.elements(), function (i, v) {
1540
1571
  v.setAttribute('toggle', '#' + element.id);
@@ -1568,7 +1599,7 @@ function FocusStateMixin() {
1568
1599
  definePrototype(FocusStateMixin, StatefulMixin, {
1569
1600
  initElement: function initElement(element, state) {
1570
1601
  FocusStateMixinSuper.initElement.call(this, element, state);
1571
- zeta_dom_dom.on(element, {
1602
+ this.onDispose(zeta_dom_dom.on(element, {
1572
1603
  focusin: function focusin(e) {
1573
1604
  state.focused = true;
1574
1605
  setClass(element, 'focused', e.source);
@@ -1577,7 +1608,7 @@ definePrototype(FocusStateMixin, StatefulMixin, {
1577
1608
  state.focused = false;
1578
1609
  setClass(element, 'focused', false);
1579
1610
  }
1580
- });
1611
+ }));
1581
1612
  },
1582
1613
  getClassNames: function getClassNames() {
1583
1614
  return [{
@@ -1599,7 +1630,7 @@ definePrototype(LoadingStateMixin, StatefulMixin, {
1599
1630
  initElement: function initElement(element, state) {
1600
1631
  LoadingStateMixinSuper.initElement.call(this, element, state);
1601
1632
  lock(element);
1602
- zeta_dom_dom.on(element, {
1633
+ this.onDispose(zeta_dom_dom.on(element, {
1603
1634
  asyncStart: function asyncStart() {
1604
1635
  state.loading = true;
1605
1636
  setClass(element, 'loading', true);
@@ -1612,7 +1643,7 @@ definePrototype(LoadingStateMixin, StatefulMixin, {
1612
1643
  state.loading = false;
1613
1644
  setClass(element, 'loading', false);
1614
1645
  }
1615
- });
1646
+ }));
1616
1647
  },
1617
1648
  getClassNames: function getClassNames() {
1618
1649
  return [{
@@ -1620,8 +1651,12 @@ definePrototype(LoadingStateMixin, StatefulMixin, {
1620
1651
  }];
1621
1652
  }
1622
1653
  });
1623
- // EXTERNAL MODULE: ./src/include/external/jquery.js
1624
- var jquery = __webpack_require__(346);
1654
+ // EXTERNAL MODULE: external "jQuery"
1655
+ var external_jQuery_ = __webpack_require__(145);
1656
+ ;// CONCATENATED MODULE: ./src/include/external/jquery.js
1657
+ // @ts-nocheck
1658
+
1659
+ /* harmony default export */ const jquery = (external_jQuery_);
1625
1660
  ;// CONCATENATED MODULE: ./src/mixins/ScrollableMixin.js
1626
1661
 
1627
1662
 
@@ -1657,7 +1692,7 @@ definePrototype(ScrollableMixin, ClassNameMixin, {
1657
1692
  },
1658
1693
  initElement: function initElement(element, state) {
1659
1694
  var self = this;
1660
- app_app.on(element, {
1695
+ self.onDispose(app_app.on(element, {
1661
1696
  statechange: function statechange(e) {
1662
1697
  if ('pageIndex' in e.newValues) {
1663
1698
  extend(self, {
@@ -1671,7 +1706,7 @@ definePrototype(ScrollableMixin, ClassNameMixin, {
1671
1706
  scrollStop: function scrollStop() {
1672
1707
  self.scrolling = false;
1673
1708
  }
1674
- }, true);
1709
+ }, true));
1675
1710
  },
1676
1711
  clone: function clone() {
1677
1712
  var mixin = ScrollableMixinSuper.clone.call(this);