brew-js-react 0.1.10 → 0.2.1
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/dist/brew-js-react.js +301 -183
- package/dist/brew-js-react.js.map +1 -1
- package/dist/brew-js-react.min.js +1 -1
- package/dist/brew-js-react.min.js.map +1 -1
- package/hooks.d.ts +14 -0
- package/hooks.js +61 -6
- package/i18n.d.ts +15 -1
- package/i18n.js +28 -18
- package/include/zeta-dom/domLock.js +1 -0
- package/package.json +3 -3
- package/view.d.ts +6 -0
- package/view.js +47 -17
package/dist/brew-js-react.js
CHANGED
|
@@ -175,6 +175,7 @@ __webpack_require__.d(src_namespaceObject, {
|
|
|
175
175
|
"Mixin": () => (Mixin),
|
|
176
176
|
"ScrollableMixin": () => (ScrollableMixin),
|
|
177
177
|
"StatefulMixin": () => (StatefulMixin),
|
|
178
|
+
"ViewStateContainer": () => (ViewStateContainer),
|
|
178
179
|
"createDialog": () => (createDialog),
|
|
179
180
|
"default": () => (src),
|
|
180
181
|
"isViewMatched": () => (isViewMatched),
|
|
@@ -195,7 +196,9 @@ __webpack_require__.d(src_namespaceObject, {
|
|
|
195
196
|
"useMixin": () => (useMixin),
|
|
196
197
|
"useMixinRef": () => (useMixinRef),
|
|
197
198
|
"useRouteParam": () => (useRouteParam),
|
|
198
|
-
"
|
|
199
|
+
"useRouteState": () => (useRouteState),
|
|
200
|
+
"useScrollableMixin": () => (useScrollableMixin),
|
|
201
|
+
"useViewContainerState": () => (useViewContainerState)
|
|
199
202
|
});
|
|
200
203
|
|
|
201
204
|
// EXTERNAL MODULE: external {"commonjs":"brew-js","commonjs2":"brew-js","amd":"brew-js","root":"brew"}
|
|
@@ -222,6 +225,7 @@ var external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_ = __we
|
|
|
222
225
|
|
|
223
226
|
var _lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.util,
|
|
224
227
|
noop = _lib$util.noop,
|
|
228
|
+
pipe = _lib$util.pipe,
|
|
225
229
|
either = _lib$util.either,
|
|
226
230
|
is = _lib$util.is,
|
|
227
231
|
isUndefinedOrNull = _lib$util.isUndefinedOrNull,
|
|
@@ -457,6 +461,8 @@ function Dialog(props) {
|
|
|
457
461
|
}, [dialog]);
|
|
458
462
|
return /*#__PURE__*/external_commonjs_react_dom_commonjs2_react_dom_amd_react_dom_root_ReactDOM_.createPortal(props.children, dialog.root);
|
|
459
463
|
}
|
|
464
|
+
// EXTERNAL MODULE: external "zeta-dom-react"
|
|
465
|
+
var external_zeta_dom_react_ = __webpack_require__(103);
|
|
460
466
|
;// CONCATENATED MODULE: ./tmp/brew-js/defaults.js
|
|
461
467
|
|
|
462
468
|
var defaults_defaultExport = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.defaults;
|
|
@@ -475,10 +481,216 @@ install('react', function (app_) {
|
|
|
475
481
|
app_app = app_;
|
|
476
482
|
});
|
|
477
483
|
brew_js_defaults.react = true;
|
|
484
|
+
;// CONCATENATED MODULE: ./tmp/zeta-dom/domLock.js
|
|
485
|
+
|
|
486
|
+
var domLock_lib$dom = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.dom,
|
|
487
|
+
lock = domLock_lib$dom.lock,
|
|
488
|
+
locked = domLock_lib$dom.locked,
|
|
489
|
+
cancelLock = domLock_lib$dom.cancelLock,
|
|
490
|
+
notifyAsync = domLock_lib$dom.notifyAsync,
|
|
491
|
+
preventLeave = domLock_lib$dom.preventLeave;
|
|
492
|
+
|
|
493
|
+
;// CONCATENATED MODULE: ./src/include/zeta-dom/domLock.js
|
|
494
|
+
|
|
495
|
+
;// CONCATENATED MODULE: ./tmp/brew-js/anim.js
|
|
496
|
+
|
|
497
|
+
var animateIn = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.animateIn,
|
|
498
|
+
animateOut = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.animateOut,
|
|
499
|
+
addAnimateIn = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.addAnimateIn,
|
|
500
|
+
addAnimateOut = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.addAnimateOut;
|
|
501
|
+
|
|
502
|
+
;// CONCATENATED MODULE: ./src/include/brew-js/anim.js
|
|
503
|
+
|
|
504
|
+
;// CONCATENATED MODULE: ./src/view.js
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
var view_root = zeta_dom_dom.root;
|
|
514
|
+
var routeMap = new Map();
|
|
515
|
+
var usedParams = {};
|
|
516
|
+
var StateContext = /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createContext(Object.freeze({
|
|
517
|
+
active: true
|
|
518
|
+
}));
|
|
519
|
+
var stateId;
|
|
520
|
+
|
|
521
|
+
function ViewContainer() {
|
|
522
|
+
/** @type {any} */
|
|
523
|
+
var self = this;
|
|
524
|
+
external_commonjs_react_commonjs2_react_amd_react_root_React_.Component.apply(self, arguments);
|
|
525
|
+
self.mounted = false;
|
|
526
|
+
|
|
527
|
+
if (!stateId) {
|
|
528
|
+
stateId = history.state;
|
|
529
|
+
app_app.on('navigate', function () {
|
|
530
|
+
stateId = history.state;
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
self.componentWillUnmount = app_app.on('navigate', function () {
|
|
535
|
+
if (self.mounted && self.getViewComponent()) {
|
|
536
|
+
self.forceUpdate();
|
|
537
|
+
}
|
|
538
|
+
});
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
definePrototype(ViewContainer, external_commonjs_react_commonjs2_react_amd_react_root_React_.Component, {
|
|
542
|
+
componentDidMount: function componentDidMount() {
|
|
543
|
+
this.mounted = true;
|
|
544
|
+
},
|
|
545
|
+
componentDidCatch: function componentDidCatch(error) {
|
|
546
|
+
zeta_dom_dom.emit('error', this.parentElement || view_root, {
|
|
547
|
+
error: error
|
|
548
|
+
}, true);
|
|
549
|
+
},
|
|
550
|
+
render: function render() {
|
|
551
|
+
/** @type {any} */
|
|
552
|
+
var self = this;
|
|
553
|
+
var resolve;
|
|
554
|
+
var promise = new Promise(function (_resolve) {
|
|
555
|
+
resolve = _resolve;
|
|
556
|
+
});
|
|
557
|
+
var V = self.getViewComponent();
|
|
558
|
+
|
|
559
|
+
if (V && V !== self.currentViewComponent) {
|
|
560
|
+
self.currentViewComponent = V;
|
|
561
|
+
|
|
562
|
+
if (self.currentView && self.currentElement) {
|
|
563
|
+
self.prevView = self.currentView;
|
|
564
|
+
self.prevElement = self.currentElement;
|
|
565
|
+
self.currentElement = undefined;
|
|
566
|
+
animateOut(self.prevElement, 'show').then(function () {
|
|
567
|
+
self.prevElement = undefined;
|
|
568
|
+
self.prevView = undefined;
|
|
569
|
+
self.forceUpdate();
|
|
570
|
+
});
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
var providerProps = {
|
|
574
|
+
key: routeMap.get(V).id,
|
|
575
|
+
value: {}
|
|
576
|
+
};
|
|
577
|
+
var view = /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(StateContext.Provider, providerProps, /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(ViewStateContainer, null, /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(V, {
|
|
578
|
+
rootProps: self.props.rootProps,
|
|
579
|
+
onComponentLoaded: function onComponentLoaded(element) {
|
|
580
|
+
self.currentElement = element;
|
|
581
|
+
self.parentElement = element.parentElement;
|
|
582
|
+
util_setImmediate(function () {
|
|
583
|
+
resolve();
|
|
584
|
+
return animateIn(element, 'show');
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
})));
|
|
588
|
+
defineGetterProperty(providerProps.value, 'active', function () {
|
|
589
|
+
return self.currentView === view;
|
|
590
|
+
});
|
|
591
|
+
self.currentView = view;
|
|
592
|
+
} else {
|
|
593
|
+
resolve();
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
notifyAsync(self.parentElement || view_root, promise);
|
|
597
|
+
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);
|
|
598
|
+
},
|
|
599
|
+
getViewComponent: function getViewComponent() {
|
|
600
|
+
var props = this.props;
|
|
601
|
+
return any(props.views, isViewMatched) || history.state === stateId && void redirectTo(props.defaultView);
|
|
602
|
+
}
|
|
603
|
+
});
|
|
604
|
+
function useViewContainerState() {
|
|
605
|
+
return external_commonjs_react_commonjs2_react_amd_react_root_React_.useContext(StateContext);
|
|
606
|
+
}
|
|
607
|
+
function isViewMatched(view) {
|
|
608
|
+
var params = routeMap.get(view);
|
|
609
|
+
return !!params && false === any(params.matchers, function (v, i) {
|
|
610
|
+
var value = app_app.route[i] || '';
|
|
611
|
+
return isFunction(v) ? !v(value) : (v || '') !== value;
|
|
612
|
+
});
|
|
613
|
+
}
|
|
614
|
+
function registerView(factory, routeParams) {
|
|
615
|
+
var Component = function Component(props) {
|
|
616
|
+
var state = (0,external_zeta_dom_react_.useAsync)(factory);
|
|
617
|
+
var ref = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useRef)();
|
|
618
|
+
|
|
619
|
+
if (state[0] || state[1].error) {
|
|
620
|
+
(props.onComponentLoaded || noop)(ref.current);
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
return /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement('div', extend({}, props.rootProps, {
|
|
624
|
+
ref: ref,
|
|
625
|
+
children: state[0] && /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(state[0]["default"])
|
|
626
|
+
}));
|
|
627
|
+
};
|
|
628
|
+
|
|
629
|
+
routeParams = extend({}, routeParams);
|
|
630
|
+
each(routeParams, function (i, v) {
|
|
631
|
+
usedParams[i] = true;
|
|
632
|
+
|
|
633
|
+
if (v instanceof RegExp) {
|
|
634
|
+
routeParams[i] = v.test.bind(v);
|
|
635
|
+
}
|
|
636
|
+
});
|
|
637
|
+
routeMap.set(Component, {
|
|
638
|
+
id: randomId(),
|
|
639
|
+
matchCount: keys(routeParams).length,
|
|
640
|
+
matchers: routeParams,
|
|
641
|
+
params: pick(routeParams, function (v) {
|
|
642
|
+
return typeof v === 'string';
|
|
643
|
+
})
|
|
644
|
+
});
|
|
645
|
+
return Component;
|
|
646
|
+
}
|
|
647
|
+
function renderView() {
|
|
648
|
+
var views = makeArray(arguments);
|
|
649
|
+
var rootProps = isFunction(views[0]) ? {} : views.shift();
|
|
650
|
+
var defaultView = views[0];
|
|
651
|
+
views.sort(function (a, b) {
|
|
652
|
+
return (routeMap.get(b) || {}).matchCount - (routeMap.get(a) || {}).matchCount;
|
|
653
|
+
});
|
|
654
|
+
return /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(ViewContainer, {
|
|
655
|
+
rootProps: rootProps,
|
|
656
|
+
views: views,
|
|
657
|
+
defaultView: defaultView
|
|
658
|
+
});
|
|
659
|
+
}
|
|
660
|
+
function linkTo(view, params) {
|
|
661
|
+
var viewParams = (routeMap.get(view) || {}).params;
|
|
662
|
+
var newParams = {};
|
|
663
|
+
|
|
664
|
+
for (var i in app_app.route) {
|
|
665
|
+
if (viewParams && i in viewParams) {
|
|
666
|
+
newParams[i] = viewParams[i];
|
|
667
|
+
} else if (params && i in params) {
|
|
668
|
+
newParams[i] = params[i];
|
|
669
|
+
} else if (!usedParams[i]) {
|
|
670
|
+
newParams[i] = app_app.route[i];
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
return app_app.route.getPath(newParams);
|
|
675
|
+
}
|
|
676
|
+
function navigateTo(view, params) {
|
|
677
|
+
return app_app.navigate(linkTo(view, params));
|
|
678
|
+
}
|
|
679
|
+
function redirectTo(view, params) {
|
|
680
|
+
return app_app.navigate(linkTo(view, params), true);
|
|
681
|
+
}
|
|
478
682
|
;// CONCATENATED MODULE: ./src/hooks.js
|
|
479
683
|
|
|
480
684
|
|
|
481
685
|
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
var states = {};
|
|
689
|
+
|
|
690
|
+
function getCurrentStates() {
|
|
691
|
+
return states[history.state] || (states[history.state] = {});
|
|
692
|
+
}
|
|
693
|
+
|
|
482
694
|
function useAppReady() {
|
|
483
695
|
var sReady = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useState)(false);
|
|
484
696
|
var ready = sReady[0],
|
|
@@ -491,24 +703,75 @@ function useAppReady() {
|
|
|
491
703
|
return ready;
|
|
492
704
|
}
|
|
493
705
|
function useRouteParam(name, defaultValue) {
|
|
494
|
-
var
|
|
706
|
+
var container = useViewContainerState();
|
|
707
|
+
var route = app_app.route;
|
|
708
|
+
var sValue = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useState)(route[name]);
|
|
495
709
|
var value = sValue[0],
|
|
496
710
|
setValue = sValue[1];
|
|
497
711
|
(0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useEffect)(function () {
|
|
498
|
-
var current =
|
|
712
|
+
var current = route[name]; // route parameter might be changed after state initialization and before useEffect hook is called
|
|
499
713
|
|
|
500
714
|
setValue(current);
|
|
501
|
-
|
|
715
|
+
|
|
716
|
+
if (name in route) {
|
|
717
|
+
return route.watch(name, function (value) {
|
|
718
|
+
util_setImmediate(function () {
|
|
719
|
+
if (container.active) {
|
|
720
|
+
setValue(value);
|
|
721
|
+
}
|
|
722
|
+
});
|
|
723
|
+
});
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
console.error('Route parameter ' + name + ' does not exist');
|
|
502
727
|
}, [name, defaultValue]);
|
|
503
728
|
|
|
504
729
|
if (!value && defaultValue !== undefined) {
|
|
505
|
-
app_app.navigate(
|
|
730
|
+
app_app.navigate(route.getPath(extend({}, route, kv(name, defaultValue))), true);
|
|
506
731
|
}
|
|
507
732
|
|
|
508
733
|
return value || '';
|
|
509
734
|
}
|
|
510
|
-
|
|
511
|
-
var
|
|
735
|
+
function useRouteState(key, defaultValue) {
|
|
736
|
+
var container = useViewContainerState();
|
|
737
|
+
var cur = getCurrentStates();
|
|
738
|
+
var state = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useState)(key in cur ? cur[key] : defaultValue);
|
|
739
|
+
|
|
740
|
+
if (container.active) {
|
|
741
|
+
cur[key] = state[0];
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
return state;
|
|
745
|
+
}
|
|
746
|
+
function ViewStateContainer(props) {
|
|
747
|
+
var container = useViewContainerState();
|
|
748
|
+
var provider = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useState)(function () {
|
|
749
|
+
var cache = {};
|
|
750
|
+
return {
|
|
751
|
+
getState: function getState(uniqueId, key) {
|
|
752
|
+
var cur = getCurrentStates();
|
|
753
|
+
var state = cache[uniqueId] || (cache[uniqueId] = {
|
|
754
|
+
value: cur[key] && cur[key].value,
|
|
755
|
+
get: function get() {
|
|
756
|
+
return state.value;
|
|
757
|
+
},
|
|
758
|
+
set: function set(value) {
|
|
759
|
+
state.value = value;
|
|
760
|
+
}
|
|
761
|
+
});
|
|
762
|
+
|
|
763
|
+
if (container.active) {
|
|
764
|
+
cur[key] = state;
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
return state;
|
|
768
|
+
}
|
|
769
|
+
};
|
|
770
|
+
})[0];
|
|
771
|
+
return /*#__PURE__*/(0,external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement)(external_zeta_dom_react_.ViewStateProvider, {
|
|
772
|
+
value: provider
|
|
773
|
+
}, props.children);
|
|
774
|
+
}
|
|
512
775
|
// EXTERNAL MODULE: ./src/include/external/waterpipe.js
|
|
513
776
|
var waterpipe = __webpack_require__(43);
|
|
514
777
|
;// CONCATENATED MODULE: ./src/i18n.js
|
|
@@ -531,7 +794,8 @@ if (toPrimitive) {
|
|
|
531
794
|
|
|
532
795
|
function createCallback(translate) {
|
|
533
796
|
var callback = function callback(key, data) {
|
|
534
|
-
|
|
797
|
+
var result = translate(key, data, true);
|
|
798
|
+
return result !== undefined ? result : key;
|
|
535
799
|
};
|
|
536
800
|
|
|
537
801
|
return extend(callback, {
|
|
@@ -553,46 +817,54 @@ function makeTranslation(resources, defaultLang) {
|
|
|
553
817
|
var re = new RegExp('^(' + Object.keys(resources[defaultLang]).join('|') + ')\\.');
|
|
554
818
|
var cache = {};
|
|
555
819
|
|
|
556
|
-
function getTranslation(prefix, name, data, noEncode) {
|
|
557
|
-
var str = ((resources[
|
|
820
|
+
function getTranslation(prefix, name, data, noEncode, lang) {
|
|
821
|
+
var str = ((resources[lang] || empty)[prefix] || empty)[name];
|
|
558
822
|
|
|
559
|
-
if (str
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
823
|
+
if (typeof str === 'string') {
|
|
824
|
+
if (str && (!noEncode || data !== undefined)) {
|
|
825
|
+
return waterpipe(str, data, {
|
|
826
|
+
noEncode: noEncode
|
|
827
|
+
});
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
return str;
|
|
563
831
|
}
|
|
564
832
|
|
|
565
|
-
|
|
833
|
+
if (lang !== defaultLang) {
|
|
834
|
+
return getTranslation(prefix, name, data, noEncode, defaultLang);
|
|
835
|
+
}
|
|
566
836
|
}
|
|
567
837
|
|
|
568
838
|
function translate(key, data, noEncode) {
|
|
569
839
|
var prefix = re.test(key) ? RegExp.$1 : '';
|
|
570
840
|
var name = prefix ? key.slice(RegExp.lastMatch.length) : key;
|
|
571
|
-
return getTranslation(prefix, name, data, noEncode)
|
|
841
|
+
return getTranslation(prefix, name, data, noEncode, app_app.language);
|
|
572
842
|
}
|
|
573
843
|
|
|
574
|
-
function
|
|
844
|
+
function getTranslationCallback() {
|
|
575
845
|
var prefix = makeArray(arguments);
|
|
576
|
-
var
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
}) || key;
|
|
585
|
-
}));
|
|
586
|
-
}
|
|
846
|
+
var key = prefix.join(' ');
|
|
847
|
+
return cache[key] || (cache[key] = createCallback(function (key, data, noEncode) {
|
|
848
|
+
var lang = app_app.language;
|
|
849
|
+
return single(prefix, function (v) {
|
|
850
|
+
return getTranslation(v, key, data, noEncode, lang);
|
|
851
|
+
});
|
|
852
|
+
}));
|
|
853
|
+
}
|
|
587
854
|
|
|
855
|
+
function useTranslation() {
|
|
856
|
+
var language = useLanguage();
|
|
857
|
+
var t = getTranslationCallback.apply(0, arguments);
|
|
588
858
|
return {
|
|
589
859
|
language: language,
|
|
590
860
|
t: t
|
|
591
861
|
};
|
|
592
862
|
}
|
|
593
863
|
|
|
864
|
+
cache[''] = createCallback(translate);
|
|
594
865
|
return {
|
|
595
|
-
translate:
|
|
866
|
+
translate: cache[''],
|
|
867
|
+
getTranslation: getTranslationCallback,
|
|
596
868
|
useTranslation: useTranslation
|
|
597
869
|
};
|
|
598
870
|
}
|
|
@@ -1223,160 +1495,6 @@ function useMixinRef(mixin) {
|
|
|
1223
1495
|
return mixin && mixin.getMixin().reset();
|
|
1224
1496
|
}
|
|
1225
1497
|
|
|
1226
|
-
;// CONCATENATED MODULE: ./tmp/brew-js/anim.js
|
|
1227
|
-
|
|
1228
|
-
var animateIn = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.animateIn,
|
|
1229
|
-
animateOut = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.animateOut,
|
|
1230
|
-
addAnimateIn = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.addAnimateIn,
|
|
1231
|
-
addAnimateOut = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.addAnimateOut;
|
|
1232
|
-
|
|
1233
|
-
;// CONCATENATED MODULE: ./src/include/brew-js/anim.js
|
|
1234
|
-
|
|
1235
|
-
;// CONCATENATED MODULE: ./src/view.js
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
var routeMap = new Map();
|
|
1242
|
-
var usedParams = {};
|
|
1243
|
-
var stateId;
|
|
1244
|
-
|
|
1245
|
-
function ViewContainer() {
|
|
1246
|
-
/** @type {any} */
|
|
1247
|
-
var self = this;
|
|
1248
|
-
external_commonjs_react_commonjs2_react_amd_react_root_React_.Component.apply(self, arguments);
|
|
1249
|
-
self.mounted = false;
|
|
1250
|
-
|
|
1251
|
-
if (!stateId) {
|
|
1252
|
-
stateId = history.state;
|
|
1253
|
-
app_app.on('navigate', function () {
|
|
1254
|
-
stateId = history.state;
|
|
1255
|
-
});
|
|
1256
|
-
}
|
|
1257
|
-
|
|
1258
|
-
self.componentWillUnmount = app_app.on('navigate', function () {
|
|
1259
|
-
if (self.mounted && self.getViewComponent()) {
|
|
1260
|
-
self.forceUpdate();
|
|
1261
|
-
}
|
|
1262
|
-
});
|
|
1263
|
-
}
|
|
1264
|
-
|
|
1265
|
-
definePrototype(ViewContainer, external_commonjs_react_commonjs2_react_amd_react_root_React_.Component, {
|
|
1266
|
-
componentDidMount: function componentDidMount() {
|
|
1267
|
-
this.mounted = true;
|
|
1268
|
-
},
|
|
1269
|
-
render: function render() {
|
|
1270
|
-
/** @type {any} */
|
|
1271
|
-
var self = this;
|
|
1272
|
-
var V = self.getViewComponent();
|
|
1273
|
-
|
|
1274
|
-
if (V && V !== self.currentViewComponent) {
|
|
1275
|
-
self.currentViewComponent = V;
|
|
1276
|
-
|
|
1277
|
-
if (self.currentView && self.currentElement) {
|
|
1278
|
-
self.prevView = self.currentView;
|
|
1279
|
-
self.prevElement = self.currentElement;
|
|
1280
|
-
self.currentElement = undefined;
|
|
1281
|
-
animateOut(self.prevElement, 'show').then(function () {
|
|
1282
|
-
self.prevElement = undefined;
|
|
1283
|
-
self.prevView = undefined;
|
|
1284
|
-
self.forceUpdate();
|
|
1285
|
-
});
|
|
1286
|
-
}
|
|
1287
|
-
|
|
1288
|
-
self.currentView = /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(V, {
|
|
1289
|
-
key: routeMap.get(V).id,
|
|
1290
|
-
rootProps: self.props.rootProps,
|
|
1291
|
-
onComponentLoaded: function onComponentLoaded(element) {
|
|
1292
|
-
self.currentElement = element;
|
|
1293
|
-
util_setImmediate(function () {
|
|
1294
|
-
return animateIn(element, 'show');
|
|
1295
|
-
});
|
|
1296
|
-
}
|
|
1297
|
-
});
|
|
1298
|
-
}
|
|
1299
|
-
|
|
1300
|
-
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);
|
|
1301
|
-
},
|
|
1302
|
-
getViewComponent: function getViewComponent() {
|
|
1303
|
-
var props = this.props;
|
|
1304
|
-
return any(props.views, isViewMatched) || history.state === stateId && void redirectTo(props.defaultView);
|
|
1305
|
-
}
|
|
1306
|
-
});
|
|
1307
|
-
function isViewMatched(view) {
|
|
1308
|
-
var params = routeMap.get(view);
|
|
1309
|
-
return !!params && false === any(params.matchers, function (v, i) {
|
|
1310
|
-
var value = app_app.route[i] || '';
|
|
1311
|
-
return isFunction(v) ? !v(value) : (v || '') !== value;
|
|
1312
|
-
});
|
|
1313
|
-
}
|
|
1314
|
-
function registerView(factory, routeParams) {
|
|
1315
|
-
var Component = function Component(props) {
|
|
1316
|
-
var Component = (0,external_zeta_dom_react_.useAsync)(factory)[0];
|
|
1317
|
-
return /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement('div', extend({}, props.rootProps, {
|
|
1318
|
-
ref: function ref(element) {
|
|
1319
|
-
if (element && Component) {
|
|
1320
|
-
(props.onComponentLoaded || noop)(element);
|
|
1321
|
-
}
|
|
1322
|
-
},
|
|
1323
|
-
children: Component && /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(Component["default"])
|
|
1324
|
-
}));
|
|
1325
|
-
};
|
|
1326
|
-
|
|
1327
|
-
routeParams = extend({}, routeParams);
|
|
1328
|
-
each(routeParams, function (i, v) {
|
|
1329
|
-
usedParams[i] = true;
|
|
1330
|
-
|
|
1331
|
-
if (v instanceof RegExp) {
|
|
1332
|
-
routeParams[i] = v.test.bind(v);
|
|
1333
|
-
}
|
|
1334
|
-
});
|
|
1335
|
-
routeMap.set(Component, {
|
|
1336
|
-
id: randomId(),
|
|
1337
|
-
matchCount: keys(routeParams).length,
|
|
1338
|
-
matchers: routeParams,
|
|
1339
|
-
params: pick(routeParams, function (v) {
|
|
1340
|
-
return typeof v === 'string';
|
|
1341
|
-
})
|
|
1342
|
-
});
|
|
1343
|
-
return Component;
|
|
1344
|
-
}
|
|
1345
|
-
function renderView() {
|
|
1346
|
-
var views = makeArray(arguments);
|
|
1347
|
-
var rootProps = isFunction(views[0]) ? {} : views.shift();
|
|
1348
|
-
var defaultView = views[0];
|
|
1349
|
-
views.sort(function (a, b) {
|
|
1350
|
-
return (routeMap.get(b) || {}).matchCount - (routeMap.get(a) || {}).matchCount;
|
|
1351
|
-
});
|
|
1352
|
-
return /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(ViewContainer, {
|
|
1353
|
-
rootProps: rootProps,
|
|
1354
|
-
views: views,
|
|
1355
|
-
defaultView: defaultView
|
|
1356
|
-
});
|
|
1357
|
-
}
|
|
1358
|
-
function linkTo(view, params) {
|
|
1359
|
-
var viewParams = (routeMap.get(view) || {}).params;
|
|
1360
|
-
var newParams = {};
|
|
1361
|
-
|
|
1362
|
-
for (var i in app_app.route) {
|
|
1363
|
-
if (viewParams && i in viewParams) {
|
|
1364
|
-
newParams[i] = viewParams[i];
|
|
1365
|
-
} else if (params && i in params) {
|
|
1366
|
-
newParams[i] = params[i];
|
|
1367
|
-
} else if (!usedParams[i]) {
|
|
1368
|
-
newParams[i] = app_app.route[i];
|
|
1369
|
-
}
|
|
1370
|
-
}
|
|
1371
|
-
|
|
1372
|
-
return app_app.route.getPath(newParams);
|
|
1373
|
-
}
|
|
1374
|
-
function navigateTo(view, params) {
|
|
1375
|
-
return app_app.navigate(linkTo(view, params));
|
|
1376
|
-
}
|
|
1377
|
-
function redirectTo(view, params) {
|
|
1378
|
-
return app_app.navigate(linkTo(view, params), true);
|
|
1379
|
-
}
|
|
1380
1498
|
;// CONCATENATED MODULE: ./src/index.js
|
|
1381
1499
|
|
|
1382
1500
|
/* harmony default export */ const src = (brew_js_app);
|