brew-js-react 0.1.8 → 0.1.11

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.
@@ -195,6 +195,7 @@ __webpack_require__.d(src_namespaceObject, {
195
195
  "useMixin": () => (useMixin),
196
196
  "useMixinRef": () => (useMixinRef),
197
197
  "useRouteParam": () => (useRouteParam),
198
+ "useRouteState": () => (useRouteState),
198
199
  "useScrollableMixin": () => (useScrollableMixin)
199
200
  });
200
201
 
@@ -249,10 +250,14 @@ var _lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_
249
250
  combineFn = _lib$util.combineFn,
250
251
  executeOnce = _lib$util.executeOnce,
251
252
  createPrivateStore = _lib$util.createPrivateStore,
253
+ util_setTimeout = _lib$util.setTimeout,
252
254
  setTimeoutOnce = _lib$util.setTimeoutOnce,
255
+ util_setInterval = _lib$util.setInterval,
256
+ setIntervalSafe = _lib$util.setIntervalSafe,
253
257
  util_setImmediate = _lib$util.setImmediate,
254
258
  setImmediateOnce = _lib$util.setImmediateOnce,
255
259
  throwNotFunction = _lib$util.throwNotFunction,
260
+ errorWithCode = _lib$util.errorWithCode,
256
261
  keys = _lib$util.keys,
257
262
  values = _lib$util.values,
258
263
  util_hasOwnProperty = _lib$util.hasOwnProperty,
@@ -293,7 +298,6 @@ var _lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_
293
298
  var domUtil_lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.util,
294
299
  domReady = domUtil_lib$util.domReady,
295
300
  tagName = domUtil_lib$util.tagName,
296
- domUtil_is = domUtil_lib$util.is,
297
301
  isVisible = domUtil_lib$util.isVisible,
298
302
  matchSelector = domUtil_lib$util.matchSelector,
299
303
  comparePosition = domUtil_lib$util.comparePosition,
@@ -320,11 +324,6 @@ var domUtil_lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_do
320
324
  getContentRect = domUtil_lib$util.getContentRect,
321
325
  scrollBy = domUtil_lib$util.scrollBy,
322
326
  scrollIntoView = domUtil_lib$util.scrollIntoView,
323
- createRange = domUtil_lib$util.createRange,
324
- rangeIntersects = domUtil_lib$util.rangeIntersects,
325
- rangeEquals = domUtil_lib$util.rangeEquals,
326
- rangeCovers = domUtil_lib$util.rangeCovers,
327
- compareRangePosition = domUtil_lib$util.compareRangePosition,
328
327
  makeSelection = domUtil_lib$util.makeSelection,
329
328
  getRect = domUtil_lib$util.getRect,
330
329
  getRects = domUtil_lib$util.getRects,
@@ -354,6 +353,7 @@ var _lib$dom = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_z
354
353
  releaseModal = _lib$dom.releaseModal,
355
354
  retainFocus = _lib$dom.retainFocus,
356
355
  releaseFocus = _lib$dom.releaseFocus,
356
+ iterateFocusPath = _lib$dom.iterateFocusPath,
357
357
  dom_focus = _lib$dom.focus;
358
358
 
359
359
  ;// CONCATENATED MODULE: ./src/include/zeta-dom/dom.js
@@ -480,6 +480,7 @@ brew_js_defaults.react = true;
480
480
 
481
481
 
482
482
 
483
+ var states = {};
483
484
  function useAppReady() {
484
485
  var sReady = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useState)(false);
485
486
  var ready = sReady[0],
@@ -492,22 +493,34 @@ function useAppReady() {
492
493
  return ready;
493
494
  }
494
495
  function useRouteParam(name, defaultValue) {
495
- var sValue = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useState)(app_app.route[name]);
496
+ var route = app_app.route;
497
+ var sValue = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useState)(route[name]);
496
498
  var value = sValue[0],
497
499
  setValue = sValue[1];
498
500
  (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useEffect)(function () {
499
- var current = app_app.route[name]; // route parameter might be changed after state initialization and before useEffect hook is called
501
+ var current = route[name]; // route parameter might be changed after state initialization and before useEffect hook is called
500
502
 
501
503
  setValue(current);
502
- return app_app.route.watch(name, setValue);
504
+
505
+ if (name in route) {
506
+ return route.watch(name, setValue);
507
+ }
508
+
509
+ console.error('Route parameter ' + name + ' does not exist');
503
510
  }, [name, defaultValue]);
504
511
 
505
512
  if (!value && defaultValue !== undefined) {
506
- app_app.navigate(app_app.route.getPath(extend({}, app_app.route, kv(name, defaultValue))), true);
513
+ app_app.navigate(route.getPath(extend({}, route, kv(name, defaultValue))), true);
507
514
  }
508
515
 
509
516
  return value || '';
510
517
  }
518
+ function useRouteState(key, defaultValue) {
519
+ var cur = states[history.state] || (states[history.state] = {});
520
+ var state = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useState)(key in cur ? cur[key] : defaultValue);
521
+ cur[key] = state[0];
522
+ return state;
523
+ }
511
524
  // EXTERNAL MODULE: external "zeta-dom-react"
512
525
  var external_zeta_dom_react_ = __webpack_require__(103);
513
526
  // EXTERNAL MODULE: ./src/include/external/waterpipe.js
@@ -572,28 +585,29 @@ function makeTranslation(resources, defaultLang) {
572
585
  return getTranslation(prefix, name, data, noEncode) || key;
573
586
  }
574
587
 
575
- function useTranslation() {
588
+ function getTranslationCallback() {
576
589
  var prefix = makeArray(arguments);
577
- var language = useLanguage();
578
- var t = translate;
579
-
580
- if (prefix[0]) {
581
- var key = prefix.join(' ');
582
- t = cache[key] || (cache[key] = createCallback(function (key, data, noEncode) {
583
- return single(prefix, function (v) {
584
- return getTranslation(v, key, data, noEncode);
585
- }) || key;
586
- }));
587
- }
590
+ var key = prefix.join(' ');
591
+ return cache[key] || (cache[key] = createCallback(function (key, data, noEncode) {
592
+ return single(prefix, function (v) {
593
+ return getTranslation(v, key, data, noEncode);
594
+ }) || key;
595
+ }));
596
+ }
588
597
 
598
+ function useTranslation() {
599
+ var language = useLanguage();
600
+ var t = getTranslationCallback.apply(0, arguments);
589
601
  return {
590
602
  language: language,
591
603
  t: t
592
604
  };
593
605
  }
594
606
 
607
+ cache[''] = createCallback(translate);
595
608
  return {
596
- translate: createCallback(translate),
609
+ translate: cache[''],
610
+ getTranslation: getTranslationCallback,
597
611
  useTranslation: useTranslation
598
612
  };
599
613
  }
@@ -1240,12 +1254,22 @@ var animateIn = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_bre
1240
1254
 
1241
1255
 
1242
1256
  var routeMap = new Map();
1257
+ var usedParams = {};
1258
+ var stateId;
1243
1259
 
1244
1260
  function ViewContainer() {
1245
1261
  /** @type {any} */
1246
1262
  var self = this;
1247
1263
  external_commonjs_react_commonjs2_react_amd_react_root_React_.Component.apply(self, arguments);
1248
1264
  self.mounted = false;
1265
+
1266
+ if (!stateId) {
1267
+ stateId = history.state;
1268
+ app_app.on('navigate', function () {
1269
+ stateId = history.state;
1270
+ });
1271
+ }
1272
+
1249
1273
  self.componentWillUnmount = app_app.on('navigate', function () {
1250
1274
  if (self.mounted && self.getViewComponent()) {
1251
1275
  self.forceUpdate();
@@ -1277,8 +1301,8 @@ definePrototype(ViewContainer, external_commonjs_react_commonjs2_react_amd_react
1277
1301
  }
1278
1302
 
1279
1303
  self.currentView = /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(V, {
1280
- key: app_app.route.view,
1281
- rootProps: exclude(self.props, ['views']),
1304
+ key: routeMap.get(V).id,
1305
+ rootProps: self.props.rootProps,
1282
1306
  onComponentLoaded: function onComponentLoaded(element) {
1283
1307
  self.currentElement = element;
1284
1308
  util_setImmediate(function () {
@@ -1291,17 +1315,19 @@ definePrototype(ViewContainer, external_commonjs_react_commonjs2_react_amd_react
1291
1315
  return /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(external_commonjs_react_commonjs2_react_amd_react_root_React_.Fragment, null, self.prevView, self.currentView);
1292
1316
  },
1293
1317
  getViewComponent: function getViewComponent() {
1294
- var views = this.props.views;
1295
- return any(views, isViewMatched) || void redirectTo(views[0]);
1318
+ var props = this.props;
1319
+ return any(props.views, isViewMatched) || history.state === stateId && void redirectTo(props.defaultView);
1296
1320
  }
1297
1321
  });
1298
1322
  function isViewMatched(view) {
1299
1323
  var params = routeMap.get(view);
1300
- return !!params && equal(params, pick(app_app.route, keys(params)));
1324
+ return !!params && false === any(params.matchers, function (v, i) {
1325
+ var value = app_app.route[i] || '';
1326
+ return isFunction(v) ? !v(value) : (v || '') !== value;
1327
+ });
1301
1328
  }
1302
1329
  function registerView(factory, routeParams) {
1303
1330
  var Component = function Component(props) {
1304
- var childProps = exclude(props, ['rootProps', 'onComponentLoaded']);
1305
1331
  var Component = (0,external_zeta_dom_react_.useAsync)(factory)[0];
1306
1332
  return /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement('div', extend({}, props.rootProps, {
1307
1333
  ref: function ref(element) {
@@ -1309,27 +1335,56 @@ function registerView(factory, routeParams) {
1309
1335
  (props.onComponentLoaded || noop)(element);
1310
1336
  }
1311
1337
  },
1312
- children: Component && /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(Component["default"], childProps)
1338
+ children: Component && /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(Component["default"])
1313
1339
  }));
1314
1340
  };
1315
1341
 
1316
- routeMap.set(Component, routeParams);
1342
+ routeParams = extend({}, routeParams);
1343
+ each(routeParams, function (i, v) {
1344
+ usedParams[i] = true;
1345
+
1346
+ if (v instanceof RegExp) {
1347
+ routeParams[i] = v.test.bind(v);
1348
+ }
1349
+ });
1350
+ routeMap.set(Component, {
1351
+ id: randomId(),
1352
+ matchCount: keys(routeParams).length,
1353
+ matchers: routeParams,
1354
+ params: pick(routeParams, function (v) {
1355
+ return typeof v === 'string';
1356
+ })
1357
+ });
1317
1358
  return Component;
1318
1359
  }
1319
1360
  function renderView() {
1320
1361
  var views = makeArray(arguments);
1321
- var props;
1322
-
1323
- if (views[0] && typeof views[0] !== 'function') {
1324
- props = views.shift();
1325
- }
1326
-
1327
- return /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(ViewContainer, extend({}, props, {
1328
- views: views
1329
- }));
1362
+ var rootProps = isFunction(views[0]) ? {} : views.shift();
1363
+ var defaultView = views[0];
1364
+ views.sort(function (a, b) {
1365
+ return (routeMap.get(b) || {}).matchCount - (routeMap.get(a) || {}).matchCount;
1366
+ });
1367
+ return /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(ViewContainer, {
1368
+ rootProps: rootProps,
1369
+ views: views,
1370
+ defaultView: defaultView
1371
+ });
1330
1372
  }
1331
1373
  function linkTo(view, params) {
1332
- return app_app.route.getPath(extend({}, app_app.route, params, routeMap.get(view)));
1374
+ var viewParams = (routeMap.get(view) || {}).params;
1375
+ var newParams = {};
1376
+
1377
+ for (var i in app_app.route) {
1378
+ if (viewParams && i in viewParams) {
1379
+ newParams[i] = viewParams[i];
1380
+ } else if (params && i in params) {
1381
+ newParams[i] = params[i];
1382
+ } else if (!usedParams[i]) {
1383
+ newParams[i] = app_app.route[i];
1384
+ }
1385
+ }
1386
+
1387
+ return app_app.route.getPath(newParams);
1333
1388
  }
1334
1389
  function navigateTo(view, params) {
1335
1390
  return app_app.navigate(linkTo(view, params));