brew-js-react 0.2.0 → 0.2.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 +10 -4
- package/dist/brew-js-react.js +257 -92
- 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 +1 -1
- package/hooks.js +113 -84
- package/i18n.d.ts +9 -1
- package/i18n.js +21 -11
- package/include/brew-js/var.js +1 -0
- package/include/zeta-dom/domLock.js +1 -0
- package/mixin.js +6 -2
- package/mixins/ClassNameMixin.js +0 -3
- package/mixins/FlyoutMixin.d.ts +5 -2
- package/mixins/FlyoutMixin.js +17 -3
- package/mixins/FlyoutToggleMixin.d.ts +4 -1
- package/mixins/FlyoutToggleMixin.js +6 -3
- package/mixins/FocusStateMixin.js +2 -2
- package/mixins/Mixin.d.ts +4 -0
- package/mixins/Mixin.js +2 -0
- package/mixins/StatefulMixin.js +10 -3
- package/package.json +3 -2
- package/view.js +78 -25
package/dist/brew-js-react.js
CHANGED
|
@@ -225,6 +225,7 @@ var external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_ = __we
|
|
|
225
225
|
|
|
226
226
|
var _lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.util,
|
|
227
227
|
noop = _lib$util.noop,
|
|
228
|
+
pipe = _lib$util.pipe,
|
|
228
229
|
either = _lib$util.either,
|
|
229
230
|
is = _lib$util.is,
|
|
230
231
|
isUndefinedOrNull = _lib$util.isUndefinedOrNull,
|
|
@@ -260,7 +261,7 @@ var _lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_
|
|
|
260
261
|
setImmediateOnce = _lib$util.setImmediateOnce,
|
|
261
262
|
throwNotFunction = _lib$util.throwNotFunction,
|
|
262
263
|
errorWithCode = _lib$util.errorWithCode,
|
|
263
|
-
|
|
264
|
+
util_keys = _lib$util.keys,
|
|
264
265
|
values = _lib$util.values,
|
|
265
266
|
util_hasOwnProperty = _lib$util.hasOwnProperty,
|
|
266
267
|
getOwnPropertyDescriptors = _lib$util.getOwnPropertyDescriptors,
|
|
@@ -275,6 +276,7 @@ var _lib$util = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_
|
|
|
275
276
|
watchOnce = _lib$util.watchOnce,
|
|
276
277
|
watchable = _lib$util.watchable,
|
|
277
278
|
inherit = _lib$util.inherit,
|
|
279
|
+
freeze = _lib$util.freeze,
|
|
278
280
|
deepFreeze = _lib$util.deepFreeze,
|
|
279
281
|
iequal = _lib$util.iequal,
|
|
280
282
|
randomId = _lib$util.randomId,
|
|
@@ -362,6 +364,17 @@ var _lib$dom = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_z
|
|
|
362
364
|
|
|
363
365
|
|
|
364
366
|
/* harmony default export */ const zeta_dom_dom = (dom);
|
|
367
|
+
;// CONCATENATED MODULE: ./tmp/zeta-dom/domLock.js
|
|
368
|
+
|
|
369
|
+
var domLock_lib$dom = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.dom,
|
|
370
|
+
lock = domLock_lib$dom.lock,
|
|
371
|
+
locked = domLock_lib$dom.locked,
|
|
372
|
+
cancelLock = domLock_lib$dom.cancelLock,
|
|
373
|
+
notifyAsync = domLock_lib$dom.notifyAsync,
|
|
374
|
+
preventLeave = domLock_lib$dom.preventLeave;
|
|
375
|
+
|
|
376
|
+
;// CONCATENATED MODULE: ./src/include/zeta-dom/domLock.js
|
|
377
|
+
|
|
365
378
|
;// CONCATENATED MODULE: ./tmp/brew-js/domAction.js
|
|
366
379
|
|
|
367
380
|
var addAsyncAction = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.addAsyncAction,
|
|
@@ -377,6 +390,7 @@ var addAsyncAction = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_roo
|
|
|
377
390
|
|
|
378
391
|
|
|
379
392
|
|
|
393
|
+
|
|
380
394
|
/**
|
|
381
395
|
* @param {Partial<import("./dialog").DialogOptions<any>>} props
|
|
382
396
|
*/
|
|
@@ -386,7 +400,7 @@ function createDialog(props) {
|
|
|
386
400
|
var closing = false;
|
|
387
401
|
var promise;
|
|
388
402
|
|
|
389
|
-
function
|
|
403
|
+
function _closeDialog(value) {
|
|
390
404
|
if (!closing) {
|
|
391
405
|
closing = true;
|
|
392
406
|
closeFlyout(root, value).then(function () {
|
|
@@ -403,7 +417,7 @@ function createDialog(props) {
|
|
|
403
417
|
|
|
404
418
|
return {
|
|
405
419
|
root: root,
|
|
406
|
-
close:
|
|
420
|
+
close: _closeDialog,
|
|
407
421
|
open: function open() {
|
|
408
422
|
if (promise) {
|
|
409
423
|
return promise;
|
|
@@ -419,16 +433,20 @@ function createDialog(props) {
|
|
|
419
433
|
}
|
|
420
434
|
|
|
421
435
|
if (props.onRender) {
|
|
422
|
-
|
|
423
|
-
closeDialog: closeDialog
|
|
424
|
-
|
|
436
|
+
var dialogProps = extend({}, props, {
|
|
437
|
+
closeDialog: function closeDialog(value) {
|
|
438
|
+
var promise = resolve((props.onCommit || pipe)(value));
|
|
439
|
+
catchAsync(lock(zeta_dom_dom.activeElement, promise));
|
|
440
|
+
promise.then(_closeDialog);
|
|
441
|
+
}
|
|
442
|
+
});
|
|
443
|
+
external_commonjs_react_dom_commonjs2_react_dom_amd_react_dom_root_ReactDOM_.render( /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(props.onRender, dialogProps), root);
|
|
425
444
|
}
|
|
426
445
|
|
|
427
446
|
promise = openFlyout(root);
|
|
428
447
|
always(promise, function () {
|
|
429
448
|
promise = null;
|
|
430
449
|
});
|
|
431
|
-
promise.then(props.onCommit);
|
|
432
450
|
(props.onOpen || noop)(root);
|
|
433
451
|
return promise;
|
|
434
452
|
}
|
|
@@ -462,6 +480,12 @@ function Dialog(props) {
|
|
|
462
480
|
}
|
|
463
481
|
// EXTERNAL MODULE: external "zeta-dom-react"
|
|
464
482
|
var external_zeta_dom_react_ = __webpack_require__(103);
|
|
483
|
+
;// CONCATENATED MODULE: ./tmp/zeta-dom/events.js
|
|
484
|
+
|
|
485
|
+
var ZetaEventContainer = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.EventContainer;
|
|
486
|
+
|
|
487
|
+
;// CONCATENATED MODULE: ./src/include/zeta-dom/events.js
|
|
488
|
+
|
|
465
489
|
;// CONCATENATED MODULE: ./tmp/brew-js/defaults.js
|
|
466
490
|
|
|
467
491
|
var defaults_defaultExport = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_brew_.defaults;
|
|
@@ -497,6 +521,8 @@ var animateIn = external_commonjs_brew_js_commonjs2_brew_js_amd_brew_js_root_bre
|
|
|
497
521
|
|
|
498
522
|
|
|
499
523
|
|
|
524
|
+
|
|
525
|
+
var view_root = zeta_dom_dom.root;
|
|
500
526
|
var routeMap = new Map();
|
|
501
527
|
var usedParams = {};
|
|
502
528
|
var StateContext = /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createContext(Object.freeze({
|
|
@@ -519,6 +545,7 @@ function ViewContainer() {
|
|
|
519
545
|
|
|
520
546
|
self.componentWillUnmount = app_app.on('navigate', function () {
|
|
521
547
|
if (self.mounted && self.getViewComponent()) {
|
|
548
|
+
self.isForceUpdate = true;
|
|
522
549
|
self.forceUpdate();
|
|
523
550
|
}
|
|
524
551
|
});
|
|
@@ -529,24 +556,31 @@ definePrototype(ViewContainer, external_commonjs_react_commonjs2_react_amd_react
|
|
|
529
556
|
this.mounted = true;
|
|
530
557
|
},
|
|
531
558
|
componentDidCatch: function componentDidCatch(error) {
|
|
532
|
-
zeta_dom_dom.emit('error', this.parentElement ||
|
|
559
|
+
zeta_dom_dom.emit('error', this.parentElement || view_root, {
|
|
533
560
|
error: error
|
|
534
561
|
}, true);
|
|
535
562
|
},
|
|
536
563
|
render: function render() {
|
|
537
564
|
/** @type {any} */
|
|
538
565
|
var self = this;
|
|
566
|
+
var resolve;
|
|
567
|
+
var promise = new Promise(function (_resolve) {
|
|
568
|
+
resolve = _resolve;
|
|
569
|
+
});
|
|
539
570
|
var V = self.getViewComponent();
|
|
540
571
|
|
|
541
572
|
if (V && V !== self.currentViewComponent) {
|
|
542
573
|
self.currentViewComponent = V;
|
|
543
574
|
|
|
544
575
|
if (self.currentView && self.currentElement) {
|
|
576
|
+
var prevPath = self.currentPath;
|
|
577
|
+
var prevElement = self.currentElement;
|
|
545
578
|
self.prevView = self.currentView;
|
|
546
|
-
self.prevElement = self.currentElement;
|
|
547
579
|
self.currentElement = undefined;
|
|
548
|
-
|
|
549
|
-
|
|
580
|
+
app_app.emit('pageleave', prevElement, {
|
|
581
|
+
pathname: prevPath
|
|
582
|
+
}, true);
|
|
583
|
+
animateOut(prevElement, 'show').then(function () {
|
|
550
584
|
self.prevView = undefined;
|
|
551
585
|
self.forceUpdate();
|
|
552
586
|
});
|
|
@@ -562,23 +596,87 @@ definePrototype(ViewContainer, external_commonjs_react_commonjs2_react_amd_react
|
|
|
562
596
|
self.currentElement = element;
|
|
563
597
|
self.parentElement = element.parentElement;
|
|
564
598
|
util_setImmediate(function () {
|
|
565
|
-
|
|
599
|
+
resolve();
|
|
600
|
+
animateIn(element, 'show');
|
|
601
|
+
app_app.emit('pageenter', element, {
|
|
602
|
+
pathname: app_app.path
|
|
603
|
+
}, true);
|
|
566
604
|
});
|
|
567
605
|
}
|
|
568
606
|
})));
|
|
569
607
|
defineGetterProperty(providerProps.value, 'active', function () {
|
|
570
608
|
return self.currentView === view;
|
|
571
609
|
});
|
|
610
|
+
self.currentPath = app_app.path;
|
|
572
611
|
self.currentView = view;
|
|
612
|
+
} else {
|
|
613
|
+
if (self.isForceUpdate) {
|
|
614
|
+
self.isForceUpdate = false;
|
|
615
|
+
app_app.emit('pageenter', self.currentElement, {
|
|
616
|
+
pathname: app_app.path
|
|
617
|
+
}, true);
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
resolve();
|
|
573
621
|
}
|
|
574
622
|
|
|
623
|
+
notifyAsync(self.parentElement || view_root, promise);
|
|
575
624
|
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);
|
|
576
625
|
},
|
|
577
626
|
getViewComponent: function getViewComponent() {
|
|
578
627
|
var props = this.props;
|
|
579
|
-
|
|
628
|
+
var matched = any(props.views, isViewMatched) || props.defaultView;
|
|
629
|
+
|
|
630
|
+
if (history.state === stateId) {
|
|
631
|
+
// ensure the current path actually corresponds to the matched view
|
|
632
|
+
// when some views are not included in the list of allowed views
|
|
633
|
+
var targetPath = linkTo(matched, getCurrentParams(matched, true));
|
|
634
|
+
|
|
635
|
+
if (targetPath !== app_app.path) {
|
|
636
|
+
app_app.navigate(targetPath, true);
|
|
637
|
+
return;
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
return matched;
|
|
580
642
|
}
|
|
581
643
|
});
|
|
644
|
+
|
|
645
|
+
function getCurrentParams(view, includeAll) {
|
|
646
|
+
var state = routeMap.get(view);
|
|
647
|
+
|
|
648
|
+
if (!state.maxParams) {
|
|
649
|
+
var matched = map(app_app.routes, function (v) {
|
|
650
|
+
var route = app_app.parseRoute(v);
|
|
651
|
+
var matched = route.length && !any(state.matchers, function (v, i) {
|
|
652
|
+
var pos = route.params[i];
|
|
653
|
+
return (v ? !(pos >= 0) : pos < route.minLength) || !isFunction(v) && !route.match(i, v);
|
|
654
|
+
});
|
|
655
|
+
return matched ? route : null;
|
|
656
|
+
});
|
|
657
|
+
|
|
658
|
+
if (matched[1]) {
|
|
659
|
+
matched = grep(matched, function (v) {
|
|
660
|
+
return !any(v.params, function (v, i) {
|
|
661
|
+
return usedParams[i] && !state.matchers[i];
|
|
662
|
+
});
|
|
663
|
+
});
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
if (matched[0]) {
|
|
667
|
+
var last = matched.slice(-1)[0];
|
|
668
|
+
state.maxParams = util_keys(extend.apply(0, [{}].concat(matched.map(function (v) {
|
|
669
|
+
return v.params;
|
|
670
|
+
}))));
|
|
671
|
+
state.minParams = map(last.params, function (v, i) {
|
|
672
|
+
return state.params[i] || v >= last.minLength ? null : i;
|
|
673
|
+
});
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
return pick(app_app.route, includeAll ? state.maxParams : state.minParams);
|
|
678
|
+
}
|
|
679
|
+
|
|
582
680
|
function useViewContainerState() {
|
|
583
681
|
return external_commonjs_react_commonjs2_react_amd_react_root_React_.useContext(StateContext);
|
|
584
682
|
}
|
|
@@ -591,14 +689,16 @@ function isViewMatched(view) {
|
|
|
591
689
|
}
|
|
592
690
|
function registerView(factory, routeParams) {
|
|
593
691
|
var Component = function Component(props) {
|
|
594
|
-
var
|
|
692
|
+
var state = (0,external_zeta_dom_react_.useAsync)(factory);
|
|
693
|
+
var ref = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useRef)();
|
|
694
|
+
|
|
695
|
+
if (state[0] || state[1].error) {
|
|
696
|
+
(props.onComponentLoaded || noop)(ref.current);
|
|
697
|
+
}
|
|
698
|
+
|
|
595
699
|
return /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement('div', extend({}, props.rootProps, {
|
|
596
|
-
ref:
|
|
597
|
-
|
|
598
|
-
(props.onComponentLoaded || noop)(element);
|
|
599
|
-
}
|
|
600
|
-
},
|
|
601
|
-
children: Component && /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(Component["default"])
|
|
700
|
+
ref: ref,
|
|
701
|
+
children: state[0] && /*#__PURE__*/external_commonjs_react_commonjs2_react_amd_react_root_React_.createElement(state[0]["default"])
|
|
602
702
|
}));
|
|
603
703
|
};
|
|
604
704
|
|
|
@@ -612,7 +712,7 @@ function registerView(factory, routeParams) {
|
|
|
612
712
|
});
|
|
613
713
|
routeMap.set(Component, {
|
|
614
714
|
id: randomId(),
|
|
615
|
-
matchCount:
|
|
715
|
+
matchCount: util_keys(routeParams).length,
|
|
616
716
|
matchers: routeParams,
|
|
617
717
|
params: pick(routeParams, function (v) {
|
|
618
718
|
return typeof v === 'string';
|
|
@@ -634,19 +734,13 @@ function renderView() {
|
|
|
634
734
|
});
|
|
635
735
|
}
|
|
636
736
|
function linkTo(view, params) {
|
|
637
|
-
var
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
if (viewParams && i in viewParams) {
|
|
642
|
-
newParams[i] = viewParams[i];
|
|
643
|
-
} else if (params && i in params) {
|
|
644
|
-
newParams[i] = params[i];
|
|
645
|
-
} else if (!usedParams[i]) {
|
|
646
|
-
newParams[i] = app_app.route[i];
|
|
647
|
-
}
|
|
737
|
+
var state = routeMap.get(view);
|
|
738
|
+
|
|
739
|
+
if (!state) {
|
|
740
|
+
return '/';
|
|
648
741
|
}
|
|
649
742
|
|
|
743
|
+
var newParams = extend(getCurrentParams(view), params, state.params);
|
|
650
744
|
return app_app.route.getPath(newParams);
|
|
651
745
|
}
|
|
652
746
|
function navigateTo(view, params) {
|
|
@@ -661,12 +755,32 @@ function redirectTo(view, params) {
|
|
|
661
755
|
|
|
662
756
|
|
|
663
757
|
|
|
758
|
+
|
|
759
|
+
var emitter = new ZetaEventContainer();
|
|
664
760
|
var states = {};
|
|
665
761
|
|
|
666
762
|
function getCurrentStates() {
|
|
667
763
|
return states[history.state] || (states[history.state] = {});
|
|
668
764
|
}
|
|
669
765
|
|
|
766
|
+
function ViewState(value) {
|
|
767
|
+
this.value = value;
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
definePrototype(ViewState, {
|
|
771
|
+
get: function get() {
|
|
772
|
+
return this.value;
|
|
773
|
+
},
|
|
774
|
+
set: function set(value) {
|
|
775
|
+
this.value = value;
|
|
776
|
+
},
|
|
777
|
+
onPopState: function onPopState(callback) {
|
|
778
|
+
throwNotFunction(callback);
|
|
779
|
+
return emitter.add(this, 'popstate', function (e) {
|
|
780
|
+
callback.call(this, e.newValue);
|
|
781
|
+
});
|
|
782
|
+
}
|
|
783
|
+
});
|
|
670
784
|
function useAppReady() {
|
|
671
785
|
var sReady = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useState)(false);
|
|
672
786
|
var ready = sReady[0],
|
|
@@ -681,32 +795,37 @@ function useAppReady() {
|
|
|
681
795
|
function useRouteParam(name, defaultValue) {
|
|
682
796
|
var container = useViewContainerState();
|
|
683
797
|
var route = app_app.route;
|
|
684
|
-
var
|
|
685
|
-
var
|
|
686
|
-
|
|
798
|
+
var value = route[name] || '';
|
|
799
|
+
var ref = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useRef)(value);
|
|
800
|
+
var forceUpdate = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useState)()[1];
|
|
687
801
|
(0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useEffect)(function () {
|
|
688
|
-
var
|
|
802
|
+
var setValue = function setValue() {
|
|
803
|
+
var current = route[name] || '';
|
|
804
|
+
|
|
805
|
+
if (container.active && current !== ref.current) {
|
|
806
|
+
ref.current = current;
|
|
807
|
+
forceUpdate({});
|
|
808
|
+
}
|
|
809
|
+
}; // route parameter might be changed after state initialization and before useEffect hook is called
|
|
689
810
|
|
|
690
|
-
|
|
811
|
+
|
|
812
|
+
setValue();
|
|
691
813
|
|
|
692
814
|
if (name in route) {
|
|
693
|
-
return route.watch(name, function (
|
|
694
|
-
|
|
695
|
-
if (container.active) {
|
|
696
|
-
setValue(value);
|
|
697
|
-
}
|
|
698
|
-
});
|
|
815
|
+
return route.watch(name, function () {
|
|
816
|
+
setImmediateOnce(setValue);
|
|
699
817
|
});
|
|
700
818
|
}
|
|
701
819
|
|
|
702
820
|
console.error('Route parameter ' + name + ' does not exist');
|
|
703
821
|
}, [name, defaultValue]);
|
|
822
|
+
ref.current = value;
|
|
704
823
|
|
|
705
824
|
if (!value && defaultValue !== undefined) {
|
|
706
825
|
app_app.navigate(route.getPath(extend({}, route, kv(name, defaultValue))), true);
|
|
707
826
|
}
|
|
708
827
|
|
|
709
|
-
return value
|
|
828
|
+
return value;
|
|
710
829
|
}
|
|
711
830
|
function useRouteState(key, defaultValue) {
|
|
712
831
|
var container = useViewContainerState();
|
|
@@ -726,17 +845,23 @@ function ViewStateContainer(props) {
|
|
|
726
845
|
return {
|
|
727
846
|
getState: function getState(uniqueId, key) {
|
|
728
847
|
var cur = getCurrentStates();
|
|
729
|
-
var state = cache[uniqueId] || (cache[uniqueId] =
|
|
730
|
-
value: cur[key] && cur[key].value,
|
|
731
|
-
get: function get() {
|
|
732
|
-
return state.value;
|
|
733
|
-
},
|
|
734
|
-
set: function set(value) {
|
|
735
|
-
state.value = value;
|
|
736
|
-
}
|
|
737
|
-
});
|
|
848
|
+
var state = cache[uniqueId] || (cache[uniqueId] = new ViewState(cur[key] && cur[key].value));
|
|
738
849
|
|
|
739
850
|
if (container.active) {
|
|
851
|
+
var stateId = state.stateId;
|
|
852
|
+
|
|
853
|
+
if (stateId && stateId !== history.state) {
|
|
854
|
+
var newValue = cur[key] && cur[key].value;
|
|
855
|
+
emitter.emit('popstate', state, {
|
|
856
|
+
newValue: newValue
|
|
857
|
+
}); // detach value in previous history state from current one
|
|
858
|
+
|
|
859
|
+
var previous = new ViewState(state.value);
|
|
860
|
+
states[stateId][key] = previous;
|
|
861
|
+
state.value = newValue;
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
state.stateId = history.state;
|
|
740
865
|
cur[key] = state;
|
|
741
866
|
}
|
|
742
867
|
|
|
@@ -770,7 +895,8 @@ if (toPrimitive) {
|
|
|
770
895
|
|
|
771
896
|
function createCallback(translate) {
|
|
772
897
|
var callback = function callback(key, data) {
|
|
773
|
-
|
|
898
|
+
var result = translate(key, data, true);
|
|
899
|
+
return result !== undefined ? result : key;
|
|
774
900
|
};
|
|
775
901
|
|
|
776
902
|
return extend(callback, {
|
|
@@ -792,31 +918,38 @@ function makeTranslation(resources, defaultLang) {
|
|
|
792
918
|
var re = new RegExp('^(' + Object.keys(resources[defaultLang]).join('|') + ')\\.');
|
|
793
919
|
var cache = {};
|
|
794
920
|
|
|
795
|
-
function getTranslation(prefix, name, data, noEncode) {
|
|
796
|
-
var str = ((resources[
|
|
921
|
+
function getTranslation(prefix, name, data, noEncode, lang) {
|
|
922
|
+
var str = ((resources[lang] || empty)[prefix] || empty)[name];
|
|
797
923
|
|
|
798
|
-
if (str
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
924
|
+
if (typeof str === 'string') {
|
|
925
|
+
if (str && (!noEncode || data !== undefined)) {
|
|
926
|
+
return waterpipe(str, data, {
|
|
927
|
+
noEncode: noEncode
|
|
928
|
+
});
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
return str;
|
|
802
932
|
}
|
|
803
933
|
|
|
804
|
-
|
|
934
|
+
if (lang !== defaultLang) {
|
|
935
|
+
return getTranslation(prefix, name, data, noEncode, defaultLang);
|
|
936
|
+
}
|
|
805
937
|
}
|
|
806
938
|
|
|
807
939
|
function translate(key, data, noEncode) {
|
|
808
940
|
var prefix = re.test(key) ? RegExp.$1 : '';
|
|
809
941
|
var name = prefix ? key.slice(RegExp.lastMatch.length) : key;
|
|
810
|
-
return getTranslation(prefix, name, data, noEncode)
|
|
942
|
+
return getTranslation(prefix, name, data, noEncode, app_app.language);
|
|
811
943
|
}
|
|
812
944
|
|
|
813
945
|
function getTranslationCallback() {
|
|
814
946
|
var prefix = makeArray(arguments);
|
|
815
947
|
var key = prefix.join(' ');
|
|
816
948
|
return cache[key] || (cache[key] = createCallback(function (key, data, noEncode) {
|
|
949
|
+
var lang = app_app.language;
|
|
817
950
|
return single(prefix, function (v) {
|
|
818
|
-
return getTranslation(v, key, data, noEncode);
|
|
819
|
-
})
|
|
951
|
+
return getTranslation(v, key, data, noEncode, lang);
|
|
952
|
+
});
|
|
820
953
|
}));
|
|
821
954
|
}
|
|
822
955
|
|
|
@@ -833,7 +966,10 @@ function makeTranslation(resources, defaultLang) {
|
|
|
833
966
|
return {
|
|
834
967
|
translate: cache[''],
|
|
835
968
|
getTranslation: getTranslationCallback,
|
|
836
|
-
useTranslation: useTranslation
|
|
969
|
+
useTranslation: useTranslation,
|
|
970
|
+
keys: function keys(prefix) {
|
|
971
|
+
return util_keys(resources[defaultLang][prefix] || empty);
|
|
972
|
+
}
|
|
837
973
|
};
|
|
838
974
|
}
|
|
839
975
|
;// CONCATENATED MODULE: ./src/mixins/StaticAttributeMixin.js
|
|
@@ -863,7 +999,8 @@ definePrototype(Mixin, {
|
|
|
863
999
|
},
|
|
864
1000
|
getCustomAttributes: function getCustomAttributes() {
|
|
865
1001
|
return {};
|
|
866
|
-
}
|
|
1002
|
+
},
|
|
1003
|
+
dispose: function dispose() {}
|
|
867
1004
|
});
|
|
868
1005
|
watchable(Mixin.prototype);
|
|
869
1006
|
util_define(Mixin, {
|
|
@@ -982,15 +1119,23 @@ definePrototype(StatefulMixin, Mixin, {
|
|
|
982
1119
|
},
|
|
983
1120
|
initElement: function initElement(element, state) {},
|
|
984
1121
|
clone: function clone() {
|
|
985
|
-
var
|
|
1122
|
+
var self = this;
|
|
1123
|
+
var clone = inherit(Object.getPrototypeOf(self), self);
|
|
986
1124
|
|
|
987
1125
|
_(clone, {
|
|
988
|
-
states: _(
|
|
1126
|
+
states: _(self).states,
|
|
989
1127
|
prefix: randomId() + '.',
|
|
990
1128
|
counter: 0
|
|
991
1129
|
});
|
|
992
1130
|
|
|
993
1131
|
return clone;
|
|
1132
|
+
},
|
|
1133
|
+
dispose: function dispose() {
|
|
1134
|
+
var states = _(this).states;
|
|
1135
|
+
|
|
1136
|
+
each(states, function (i, v) {
|
|
1137
|
+
delete states[i];
|
|
1138
|
+
});
|
|
994
1139
|
}
|
|
995
1140
|
});
|
|
996
1141
|
;// CONCATENATED MODULE: ./src/mixins/ClassNameMixin.js
|
|
@@ -1050,11 +1195,6 @@ definePrototype(ClassNameMixin, StatefulMixin, {
|
|
|
1050
1195
|
}
|
|
1051
1196
|
});
|
|
1052
1197
|
},
|
|
1053
|
-
clone: function clone() {
|
|
1054
|
-
return extend(ClassNameMixinSuper.clone.call(this), {
|
|
1055
|
-
classNames: this.classNames
|
|
1056
|
-
});
|
|
1057
|
-
},
|
|
1058
1198
|
onClassNameUpdated: function onClassNameUpdated(element, prevState, state) {}
|
|
1059
1199
|
});
|
|
1060
1200
|
;// CONCATENATED MODULE: ./src/mixins/AnimateMixin.js
|
|
@@ -1130,19 +1270,13 @@ definePrototype(AnimateSequenceMixin, AnimateMixin, {
|
|
|
1130
1270
|
});
|
|
1131
1271
|
}
|
|
1132
1272
|
});
|
|
1133
|
-
;// CONCATENATED MODULE: ./tmp/zeta-dom/events.js
|
|
1134
|
-
|
|
1135
|
-
var ZetaEventContainer = external_commonjs_zeta_dom_commonjs2_zeta_dom_amd_zeta_dom_root_zeta_.EventContainer;
|
|
1136
|
-
|
|
1137
|
-
;// CONCATENATED MODULE: ./src/include/zeta-dom/events.js
|
|
1138
|
-
|
|
1139
1273
|
;// CONCATENATED MODULE: ./src/mixins/ErrorHandlerMixin.js
|
|
1140
1274
|
|
|
1141
1275
|
|
|
1142
1276
|
|
|
1143
1277
|
|
|
1144
1278
|
var ErrorHandlerMixinSuper = StatefulMixin.prototype;
|
|
1145
|
-
var
|
|
1279
|
+
var ErrorHandlerMixin_emitter = new ZetaEventContainer();
|
|
1146
1280
|
|
|
1147
1281
|
function isErrorMatched(filter, error) {
|
|
1148
1282
|
if (isFunction(filter)) {
|
|
@@ -1162,7 +1296,7 @@ definePrototype(ErrorHandlerMixin, StatefulMixin, {
|
|
|
1162
1296
|
filter = null;
|
|
1163
1297
|
}
|
|
1164
1298
|
|
|
1165
|
-
return
|
|
1299
|
+
return ErrorHandlerMixin_emitter.add(this, filter ? 'error' : 'default', function (e) {
|
|
1166
1300
|
if (!filter || isErrorMatched(filter, e.error)) {
|
|
1167
1301
|
return callback(e.error);
|
|
1168
1302
|
}
|
|
@@ -1175,10 +1309,22 @@ definePrototype(ErrorHandlerMixin, StatefulMixin, {
|
|
|
1175
1309
|
var data = {
|
|
1176
1310
|
error: e.error
|
|
1177
1311
|
};
|
|
1178
|
-
return
|
|
1312
|
+
return ErrorHandlerMixin_emitter.emit('error', self, data) || ErrorHandlerMixin_emitter.emit('default', self, data);
|
|
1179
1313
|
});
|
|
1180
1314
|
}
|
|
1181
1315
|
});
|
|
1316
|
+
;// CONCATENATED MODULE: ./tmp/brew-js/var.js
|
|
1317
|
+
|
|
1318
|
+
var getVarScope = undefined.getVarScope,
|
|
1319
|
+
setVar = undefined.setVar,
|
|
1320
|
+
declareVar = undefined.declareVar,
|
|
1321
|
+
resetVar = undefined.resetVar,
|
|
1322
|
+
getVar = undefined.getVar,
|
|
1323
|
+
evaluate = undefined.evaluate,
|
|
1324
|
+
evalAttr = undefined.evalAttr;
|
|
1325
|
+
|
|
1326
|
+
;// CONCATENATED MODULE: ./src/include/brew-js/var.js
|
|
1327
|
+
|
|
1182
1328
|
;// CONCATENATED MODULE: ./src/mixins/FlyoutToggleMixin.js
|
|
1183
1329
|
|
|
1184
1330
|
|
|
@@ -1188,16 +1334,17 @@ function FlyoutToggleMixin(mixin) {
|
|
|
1188
1334
|
this.flyoutMixin = mixin;
|
|
1189
1335
|
}
|
|
1190
1336
|
definePrototype(FlyoutToggleMixin, ClassNameMixin, {
|
|
1337
|
+
open: function open(value) {
|
|
1338
|
+
return this.flyoutMixin.open(value);
|
|
1339
|
+
},
|
|
1340
|
+
close: function close(value) {
|
|
1341
|
+
return this.flyoutMixin.close(value);
|
|
1342
|
+
},
|
|
1191
1343
|
getCustomAttributes: function getCustomAttributes() {
|
|
1192
1344
|
var element = this.flyoutMixin.elements()[0];
|
|
1193
1345
|
return extend({}, FlyoutToggleMixinSuper.getCustomAttributes.call(this), {
|
|
1194
1346
|
'toggle': element && '#' + element.id
|
|
1195
1347
|
});
|
|
1196
|
-
},
|
|
1197
|
-
clone: function clone() {
|
|
1198
|
-
return extend(FlyoutToggleMixinSuper.clone.call(this), {
|
|
1199
|
-
flyoutMixin: this.flyoutMixin
|
|
1200
|
-
});
|
|
1201
1348
|
}
|
|
1202
1349
|
});
|
|
1203
1350
|
;// CONCATENATED MODULE: ./src/mixins/FlyoutMixin.js
|
|
@@ -1205,12 +1352,16 @@ definePrototype(FlyoutToggleMixin, ClassNameMixin, {
|
|
|
1205
1352
|
|
|
1206
1353
|
|
|
1207
1354
|
|
|
1355
|
+
|
|
1356
|
+
|
|
1208
1357
|
var FlyoutMixinSuper = ClassNameMixin.prototype;
|
|
1358
|
+
var varname = '__flyout' + randomId();
|
|
1209
1359
|
var flyoutMixinCounter = 0;
|
|
1210
1360
|
function FlyoutMixin() {
|
|
1211
1361
|
var self = this;
|
|
1212
|
-
ClassNameMixin.call(self, ['open', 'closing', 'tweening-in', 'tweening-out']);
|
|
1362
|
+
ClassNameMixin.call(self, ['open', 'closing', 'visible', 'tweening-in', 'tweening-out']);
|
|
1213
1363
|
self.modal = false;
|
|
1364
|
+
self.tabThrough = false;
|
|
1214
1365
|
self.isFlyoutOpened = false;
|
|
1215
1366
|
self.animating = false;
|
|
1216
1367
|
self.visible = false;
|
|
@@ -1236,16 +1387,25 @@ definePrototype(FlyoutMixin, ClassNameMixin, {
|
|
|
1236
1387
|
'swipe-dismiss': self.swipeToDismiss
|
|
1237
1388
|
}, self.modal && {
|
|
1238
1389
|
'is-modal': ''
|
|
1390
|
+
}, self.tabThrough && {
|
|
1391
|
+
'tab-through': ''
|
|
1239
1392
|
}, self.effects && {
|
|
1240
1393
|
'animate-on': 'open',
|
|
1241
1394
|
'animate-in': self.effects.join(' '),
|
|
1242
1395
|
'animate-out': ''
|
|
1243
1396
|
});
|
|
1244
1397
|
},
|
|
1398
|
+
open: function open(value) {
|
|
1399
|
+
return openFlyout(this.elements()[0], kv(varname, value));
|
|
1400
|
+
},
|
|
1401
|
+
close: function close(value) {
|
|
1402
|
+
return closeFlyout(this.elements()[0], value);
|
|
1403
|
+
},
|
|
1245
1404
|
onOpen: function onOpen(callback) {
|
|
1405
|
+
var element = this.elements()[0];
|
|
1246
1406
|
return this.onToggleState(function (opened) {
|
|
1247
1407
|
if (opened) {
|
|
1248
|
-
return callback();
|
|
1408
|
+
return callback(getVar(element, varname));
|
|
1249
1409
|
}
|
|
1250
1410
|
});
|
|
1251
1411
|
},
|
|
@@ -1261,6 +1421,7 @@ definePrototype(FlyoutMixin, ClassNameMixin, {
|
|
|
1261
1421
|
|
|
1262
1422
|
if (!element.id) {
|
|
1263
1423
|
element.id = 'flyout-' + ++flyoutMixinCounter;
|
|
1424
|
+
declareVar(element, varname, undefined);
|
|
1264
1425
|
}
|
|
1265
1426
|
|
|
1266
1427
|
app_app.on(element, {
|
|
@@ -1305,9 +1466,9 @@ definePrototype(FocusStateMixin, StatefulMixin, {
|
|
|
1305
1466
|
initElement: function initElement(element, state) {
|
|
1306
1467
|
FocusStateMixinSuper.initElement.call(this, element, state);
|
|
1307
1468
|
zeta_dom_dom.on(element, {
|
|
1308
|
-
focusin: function focusin() {
|
|
1469
|
+
focusin: function focusin(e) {
|
|
1309
1470
|
state.focused = true;
|
|
1310
|
-
setClass(element, 'focused',
|
|
1471
|
+
setClass(element, 'focused', e.source);
|
|
1311
1472
|
},
|
|
1312
1473
|
focusout: function focusout() {
|
|
1313
1474
|
state.focused = false;
|
|
@@ -1455,9 +1616,13 @@ var useFocusStateMixin = createUseFunction(FocusStateMixin);
|
|
|
1455
1616
|
var useLoadingStateMixin = createUseFunction(LoadingStateMixin);
|
|
1456
1617
|
var useScrollableMixin = createUseFunction(ScrollableMixin);
|
|
1457
1618
|
function useMixin(ctor) {
|
|
1458
|
-
|
|
1619
|
+
var mixin = (0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useState)(function () {
|
|
1459
1620
|
return new ctor();
|
|
1460
1621
|
})[0].reset();
|
|
1622
|
+
(0,external_commonjs_react_commonjs2_react_amd_react_root_React_.useEffect)(function () {
|
|
1623
|
+
return mixin.dispose.bind(mixin);
|
|
1624
|
+
}, []);
|
|
1625
|
+
return mixin;
|
|
1461
1626
|
}
|
|
1462
1627
|
function useMixinRef(mixin) {
|
|
1463
1628
|
return mixin && mixin.getMixin().reset();
|