react-onsenui
Version:
Onsen UI - React Components for Hybrid Cordova/PhoneGap Apps with Material Design and iOS UI components
1 lines • 52 kB
JavaScript
(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports,require("onsenui"),require("prop-types"),require("onsenui/esm/elements/ons-action-sheet"),require("react"),require("react-dom"),require("onsenui/esm/elements/ons-action-sheet-button"),require("onsenui/esm/elements/ons-alert-dialog"),require("onsenui/esm/elements/ons-alert-dialog-button"),require("onsenui/esm/elements/ons-back-button"),require("onsenui/esm/elements/ons-bottom-toolbar"),require("onsenui/esm/elements/ons-button"),require("onsenui/esm/elements/ons-card"),require("onsenui/esm/elements/ons-carousel"),require("onsenui/esm/elements/ons-carousel-item"),require("onsenui/esm/elements/ons-checkbox"),require("onsenui/esm/elements/ons-col"),require("onsenui/esm/elements/ons-dialog"),require("onsenui/esm/elements/ons-fab"),require("onsenui/esm/elements/ons-gesture-detector"),require("onsenui/esm/elements/ons-icon"),require("onsenui/esm/elements/ons-input"),require("onsenui/esm/elements/ons-lazy-repeat"),require("onsenui/esm/elements/ons-list"),require("onsenui/esm/elements/ons-list-header"),require("onsenui/esm/elements/ons-list-item"),require("onsenui/esm/elements/ons-list-title"),require("onsenui/esm/elements/ons-navigator"),require("onsenui/esm/elements/ons-modal"),require("onsenui/esm/elements/ons-page"),require("onsenui/esm/elements/ons-popover"),require("onsenui/esm/elements/ons-progress-bar"),require("onsenui/esm/elements/ons-progress-circular"),require("onsenui/esm/elements/ons-pull-hook"),require("onsenui/esm/elements/ons-radio"),require("onsenui/esm/elements/ons-range"),require("onsenui/esm/elements/ons-ripple"),require("onsenui/esm/elements/ons-row"),require("onsenui/esm/elements/ons-search-input"),require("onsenui/esm/elements/ons-segment"),require("onsenui/esm/elements/ons-select"),require("onsenui/esm/elements/ons-speed-dial"),require("onsenui/esm/elements/ons-speed-dial-item"),require("onsenui/esm/elements/ons-splitter"),require("onsenui/esm/elements/ons-splitter-content"),require("onsenui/esm/elements/ons-splitter-mask"),require("onsenui/esm/elements/ons-splitter-side"),require("onsenui/esm/elements/ons-switch"),require("onsenui/esm/elements/ons-tab"),require("onsenui/esm/elements/ons-tabbar"),require("onsenui/esm/elements/ons-toast"),require("onsenui/esm/elements/ons-toolbar"),require("onsenui/esm/elements/ons-toolbar-button")):typeof define==="function"&&define.amd?define(["exports","onsenui","prop-types","onsenui/esm/elements/ons-action-sheet","react","react-dom","onsenui/esm/elements/ons-action-sheet-button","onsenui/esm/elements/ons-alert-dialog","onsenui/esm/elements/ons-alert-dialog-button","onsenui/esm/elements/ons-back-button","onsenui/esm/elements/ons-bottom-toolbar","onsenui/esm/elements/ons-button","onsenui/esm/elements/ons-card","onsenui/esm/elements/ons-carousel","onsenui/esm/elements/ons-carousel-item","onsenui/esm/elements/ons-checkbox","onsenui/esm/elements/ons-col","onsenui/esm/elements/ons-dialog","onsenui/esm/elements/ons-fab","onsenui/esm/elements/ons-gesture-detector","onsenui/esm/elements/ons-icon","onsenui/esm/elements/ons-input","onsenui/esm/elements/ons-lazy-repeat","onsenui/esm/elements/ons-list","onsenui/esm/elements/ons-list-header","onsenui/esm/elements/ons-list-item","onsenui/esm/elements/ons-list-title","onsenui/esm/elements/ons-navigator","onsenui/esm/elements/ons-modal","onsenui/esm/elements/ons-page","onsenui/esm/elements/ons-popover","onsenui/esm/elements/ons-progress-bar","onsenui/esm/elements/ons-progress-circular","onsenui/esm/elements/ons-pull-hook","onsenui/esm/elements/ons-radio","onsenui/esm/elements/ons-range","onsenui/esm/elements/ons-ripple","onsenui/esm/elements/ons-row","onsenui/esm/elements/ons-search-input","onsenui/esm/elements/ons-segment","onsenui/esm/elements/ons-select","onsenui/esm/elements/ons-speed-dial","onsenui/esm/elements/ons-speed-dial-item","onsenui/esm/elements/ons-splitter","onsenui/esm/elements/ons-splitter-content","onsenui/esm/elements/ons-splitter-mask","onsenui/esm/elements/ons-splitter-side","onsenui/esm/elements/ons-switch","onsenui/esm/elements/ons-tab","onsenui/esm/elements/ons-tabbar","onsenui/esm/elements/ons-toast","onsenui/esm/elements/ons-toolbar","onsenui/esm/elements/ons-toolbar-button"],factory):(global=typeof globalThis!=="undefined"?globalThis:global||self,factory(global.Ons={},global.ons,global.PropTypes,global.ons.elements.ActionSheet,global.React,global.ReactDOM))})(this,function(exports,onsenui,PropTypes,onsActionSheet,React,ReactDOM){"use strict";function _interopDefaultLegacy(e){return e&&typeof e==="object"&&"default"in e?e:{default:e}}var PropTypes__default=_interopDefaultLegacy(PropTypes);var React__default=_interopDefaultLegacy(React);var ReactDOM__default=_interopDefaultLegacy(ReactDOM);function _extends(){_extends=Object.assign?Object.assign.bind():function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}const kebabize=camelString=>camelString.replace(/([a-zA-Z])([A-Z])/g,"$1-$2").toLowerCase();const addDeprecated=(props,deprecated)=>{const propsCopy={...props};const nameMap={className:"class",...deprecated};for(const[oldName,newName]of Object.entries(nameMap)){if(propsCopy[newName]===undefined&&propsCopy[oldName]!==undefined){propsCopy[newName]=propsCopy[oldName];delete propsCopy[oldName]}}return propsCopy};function useCustomElementListener(ref,prop,handler){const event=prop.slice(2).toLowerCase();React.useEffect(()=>{const current=ref.current;current.addEventListener(event,handler);return function cleanup(){current.removeEventListener(event,handler)}},[ref,handler])}function useCustomElement(props){let options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};let ref=arguments.length>2?arguments[2]:undefined;const notAttributes=options.notAttributes||[];const deprecated=options.deprecated||{};const properties={};for(const[prop,value]of Object.entries(addDeprecated(props,deprecated))){const jsName=kebabize(prop);if(notAttributes.includes(prop)){React.useEffect(()=>{ref.current[prop]=value})}else if(/^on[A-Z]/.test(prop)){useCustomElementListener(ref,prop,value)}else if(typeof value==="boolean"){properties[jsName]=value?"":null}else if(typeof value==="object"&&value!==null){properties[jsName]=JSON.stringify(value)}else{properties[jsName]=value}}return{properties:properties}}function onsCustomElement(WrappedComponent,options){return React__default["default"].forwardRef((props,_ref)=>{const ref=_ref||React.useRef();const{style,children,...rest}=props;const{properties}=useCustomElement(rest,options,ref);return React__default["default"].createElement(WrappedComponent,_extends({ref:ref,style:style},properties),children)})}class Portal extends React__default["default"].Component{constructor(props){super(props);this.container=document.createElement("div")}componentDidMount(){document.body.appendChild(this.container)}componentWillUnmount(){document.body.removeChild(this.container)}render(){return ReactDOM__default["default"].createPortal(this.props.children,this.container)}}const baseDialog=DialogComponent=>React__default["default"].forwardRef((props,ref)=>{const{visible,...rest}=props;return React__default["default"].createElement(Portal,null,React__default["default"].createElement(DialogComponent,_extends({},rest,{visible:visible,ref:ref}),props.children))});const propTypes$7={title:PropTypes__default["default"].string,onDialogCancel:PropTypes__default["default"].func,visible:PropTypes__default["default"].bool,cancelable:PropTypes__default["default"].bool,disabled:PropTypes__default["default"].bool,onCancel:PropTypes__default["default"].func,isOpen:PropTypes__default["default"].bool,isCancelable:PropTypes__default["default"].bool,isDisabled:PropTypes__default["default"].bool,animation:PropTypes__default["default"].string,modifier:PropTypes__default["default"].string,maskColor:PropTypes__default["default"].string,animationOptions:PropTypes__default["default"].object,onPreShow:PropTypes__default["default"].func,onPostShow:PropTypes__default["default"].func,onPreHide:PropTypes__default["default"].func,onPostHide:PropTypes__default["default"].func,onDeviceBackButton:PropTypes__default["default"].func};const deprecated$a={onCancel:"onDialogCancel",isOpen:"visible",isDisabled:"disabled",isCancelable:"cancelable"};const notAttributes$d=["onDeviceBackButton"];const ActionSheet=onsCustomElement(baseDialog("ons-action-sheet"),{propTypes:propTypes$7,deprecated:deprecated$a,notAttributes:notAttributes$d});ActionSheet.propTypes=propTypes$7;const propTypes$6={modifier:PropTypes__default["default"].string,icon:PropTypes__default["default"].string,onClick:PropTypes__default["default"].func};const ActionSheetButton=onsCustomElement("ons-action-sheet-button",{propTypes:propTypes$6});ActionSheetButton.propTypes=propTypes$6;const deprecated$9={onCancel:"onDialogCancel",isOpen:"visible",isDisabled:"disabled",isCancelable:"cancelable"};const notAttributes$c=["onDeviceBackButton"];const AlertDialog=onsCustomElement(baseDialog("ons-alert-dialog"),{deprecated:deprecated$9,notAttributes:notAttributes$c});AlertDialog.propTypes={visible:PropTypes__default["default"].bool,disabled:PropTypes__default["default"].bool,cancelable:PropTypes__default["default"].bool,onDialogCancel:PropTypes__default["default"].func,onCancel:PropTypes__default["default"].func,isOpen:PropTypes__default["default"].bool,isCancelable:PropTypes__default["default"].bool,isDisabled:PropTypes__default["default"].bool,animation:PropTypes__default["default"].string,modifier:PropTypes__default["default"].string,maskColor:PropTypes__default["default"].string,animationOptions:PropTypes__default["default"].object,onPreShow:PropTypes__default["default"].func,onPostShow:PropTypes__default["default"].func,onPreHide:PropTypes__default["default"].func,onPostHide:PropTypes__default["default"].func,onDeviceBackButton:PropTypes__default["default"].func};const AlertDialogButton=onsCustomElement("ons-alert-dialog-button");AlertDialogButton.propTypes={modifier:PropTypes__default["default"].string,disabled:PropTypes__default["default"].bool,onClick:PropTypes__default["default"].func};const notAttributes$b=["options"];const BackButton=onsCustomElement("ons-back-button",{notAttributes:notAttributes$b});BackButton.propTypes={modifier:PropTypes__default["default"].string,onClick:PropTypes__default["default"].func,options:PropTypes__default["default"].shape({animation:PropTypes__default["default"].string,animationOptions:PropTypes__default["default"].object,callback:PropTypes__default["default"].func})};const propTypes$5={modifier:PropTypes__default["default"].string};const BottomToolbar=onsCustomElement("ons-bottom-toolbar",{propTypes:propTypes$5});BottomToolbar.propTypes=propTypes$5;const propTypes$4={modifier:PropTypes__default["default"].string,disabled:PropTypes__default["default"].bool,ripple:PropTypes__default["default"].bool,onClick:PropTypes__default["default"].func};const Button=onsCustomElement("ons-button",{propTypes:propTypes$4});Button.propTypes=propTypes$4;const Card=onsCustomElement("ons-card");Card.propTypes={modifier:PropTypes__default["default"].string};const deprecated$8={index:"activeIndex"};const Element$9=onsCustomElement("ons-carousel",{deprecated:deprecated$8});const Carousel=React__default["default"].forwardRef((props,ref)=>{const{itemWidth,itemHeight,...rest}=props;const stringify=x=>typeof x==="number"?`${x}px`:x;const realItemWidth=stringify(itemWidth);const realItemHeight=stringify(itemHeight);return React__default["default"].createElement(Element$9,_extends({itemWidth:realItemWidth,itemHeight:realItemHeight,ref:ref},rest),props.children)});Carousel.propTypes={direction:PropTypes__default["default"].oneOf(["horizontal","vertical"]),fullscreen:PropTypes__default["default"].bool,overscrollable:PropTypes__default["default"].bool,centered:PropTypes__default["default"].bool,itemWidth:PropTypes__default["default"].string,itemHeight:PropTypes__default["default"].string,autoScroll:PropTypes__default["default"].bool,autoScrollRatio:PropTypes__default["default"].number,swipeable:PropTypes__default["default"].bool,disabled:PropTypes__default["default"].bool,activeIndex:PropTypes__default["default"].number,index:PropTypes__default["default"].number,autoRefresh:PropTypes__default["default"].bool,onPreChange:PropTypes__default["default"].func,onPostChange:PropTypes__default["default"].func,onRefresh:PropTypes__default["default"].func,onOverscroll:PropTypes__default["default"].func,animation:PropTypes__default["default"].string,animationOptions:PropTypes__default["default"].object,onSwipe:PropTypes__default["default"].func};const CarouselItem=onsCustomElement("ons-carousel-item");CarouselItem.propTypes={modifier:PropTypes__default["default"].string};const oneTimeProp=(WrappedComponent,defaultProp,prop)=>{class OneTimeProp extends React__default["default"].Component{constructor(props){super(props);this.ref=React__default["default"].createRef()}componentDidMount(){const value=this.props[defaultProp];if(value){this.ref.current[prop]=value}}render(){const{innerRef,...rest}=this.props;delete rest[defaultProp];if(innerRef&&innerRef!==this.ref){this.ref=innerRef}return React__default["default"].createElement(WrappedComponent,_extends({ref:this.ref},rest),this.props.children)}}return React__default["default"].forwardRef((props,ref)=>React__default["default"].createElement(OneTimeProp,_extends({innerRef:ref},props),props.children))};const INPUT_PROPS={autoCapitalize:"autocapitalize",autoComplete:"autocomplete",autoCorrect:"autocorrect",autoFocus:"autofocus",inputMode:"inputmode",maxLength:"maxlength",minLength:"minlength",readOnly:"readonly",spellCheck:"spellcheck"};const nameMap$6={...INPUT_PROPS};const withDefaultChecked$2=component=>oneTimeProp(component,"defaultChecked","checked");const Checkbox=withDefaultChecked$2(onsCustomElement("ons-checkbox",{deprecated:nameMap$6}));Checkbox.propTypes={modifier:PropTypes__default["default"].string,disabled:PropTypes__default["default"].bool,onChange:PropTypes__default["default"].func,onInput:PropTypes__default["default"].func,value:PropTypes__default["default"].oneOfType([PropTypes__default["default"].string,PropTypes__default["default"].instanceOf(Date)]),checked:PropTypes__default["default"].bool,defaultChecked:PropTypes__default["default"].bool,inputId:PropTypes__default["default"].string};const Col=onsCustomElement("ons-col");Col.propTypes={verticalAlign:PropTypes__default["default"].oneOf(["top","bottom","center"]),width:PropTypes__default["default"].oneOfType([PropTypes__default["default"].number,PropTypes__default["default"].string])};const deprecated$7={onCancel:"onDialogCancel",isOpen:"visible",isDisabled:"disabled",isCancelable:"cancelable"};const notAttributes$a=["onDeviceBackButton"];const Dialog=onsCustomElement(baseDialog("ons-dialog"),{deprecated:deprecated$7,notAttributes:notAttributes$a});Dialog.propTypes={visible:PropTypes__default["default"].bool,disabled:PropTypes__default["default"].bool,cancelable:PropTypes__default["default"].bool,onDialogCancel:PropTypes__default["default"].func,onCancel:PropTypes__default["default"].func,isOpen:PropTypes__default["default"].bool,isCancelable:PropTypes__default["default"].bool,isDisabled:PropTypes__default["default"].bool,animation:PropTypes__default["default"].string,modifier:PropTypes__default["default"].string,maskColor:PropTypes__default["default"].string,animationOptions:PropTypes__default["default"].object,onPreShow:PropTypes__default["default"].func,onPostShow:PropTypes__default["default"].func,onPreHide:PropTypes__default["default"].func,onPostHide:PropTypes__default["default"].func,onDeviceBackButton:PropTypes__default["default"].func};const Fab=onsCustomElement("ons-fab");Fab.propTypes={modifier:PropTypes__default["default"].string,ripple:PropTypes__default["default"].bool,position:PropTypes__default["default"].string,disabled:PropTypes__default["default"].bool,onClick:PropTypes__default["default"].func};const propTypes$3={onDrag:PropTypes__default["default"].func,onDragLeft:PropTypes__default["default"].func,onDragRight:PropTypes__default["default"].func,onDragUp:PropTypes__default["default"].func,onDragDown:PropTypes__default["default"].func,onHold:PropTypes__default["default"].func,onRelease:PropTypes__default["default"].func,onSwipe:PropTypes__default["default"].func,onSwipeLeft:PropTypes__default["default"].func,onSwipeRight:PropTypes__default["default"].func,onSwipeUp:PropTypes__default["default"].func,onSwipeDown:PropTypes__default["default"].func,onTap:PropTypes__default["default"].func,onDoubleTap:PropTypes__default["default"].func,onPinch:PropTypes__default["default"].func,onPinchIn:PropTypes__default["default"].func,onPinchOut:PropTypes__default["default"].func,onTouch:PropTypes__default["default"].func,onTransform:PropTypes__default["default"].func,onRotate:PropTypes__default["default"].func};const GestureDetector=onsCustomElement("ons-gesture-detector",{propTypes:propTypes$3});GestureDetector.propTypes=propTypes$3;const parseIcon=icon=>{if(icon){if(typeof icon==="string"){return icon}else{const keys=Object.keys(icon).filter(a=>a!=="default");const innerString=keys.map(key=>key+":"+icon[key]+"");return icon.default+", "+innerString.join(",")}}};const parseSize=size=>{if(size){if(typeof size==="number"){return`${size}px`}else{const keys=Object.keys(size).filter(a=>a!=="default");const innerString=keys.map(key=>key+":"+size[key]+"px");return size.default+"px, "+innerString.join(",")}}};const Element$8=onsCustomElement("ons-icon");const Icon=React__default["default"].forwardRef((props,ref)=>{const{icon,size,...rest}=props;return React__default["default"].createElement(Element$8,_extends({icon:parseIcon(icon),size:parseSize(size)},rest,{ref:ref}),props.children)});Icon.propTypes={modifier:PropTypes__default["default"].string,icon:PropTypes__default["default"].oneOfType([PropTypes__default["default"].string,PropTypes__default["default"].objectOf(PropTypes__default["default"].string)]),size:PropTypes__default["default"].oneOfType([PropTypes__default["default"].number,PropTypes__default["default"].objectOf(PropTypes__default["default"].number)]),rotate:PropTypes__default["default"].oneOf([0,90,180,270]),fixedWidth:PropTypes__default["default"].bool,spin:PropTypes__default["default"].bool};const nameMap$5={...INPUT_PROPS};const withDefaultValue$3=component=>oneTimeProp(component,"defaultValue","value");const notAttributes$9=["value"];const Input=withDefaultValue$3(onsCustomElement("ons-input",{deprecated:nameMap$5,notAttributes:notAttributes$9}));Input.propTypes={modifier:PropTypes__default["default"].string,disabled:PropTypes__default["default"].bool,readOnly:PropTypes__default["default"].bool,onChange:PropTypes__default["default"].func,onInput:PropTypes__default["default"].func,value:PropTypes__default["default"].oneOfType([PropTypes__default["default"].string,PropTypes__default["default"].instanceOf(Date)]),defaultValue:PropTypes__default["default"].oneOfType([PropTypes__default["default"].string,PropTypes__default["default"].instanceOf(Date)]),placeholder:PropTypes__default["default"].string,type:PropTypes__default["default"].string,inputId:PropTypes__default["default"].string,float:PropTypes__default["default"].bool};const Element$7=onsCustomElement("ons-list");const List=React__default["default"].forwardRef((props,ref)=>{const{renderHeader,renderFooter,renderRow,dataSource,...rest}=props;const rows=dataSource.map((data,index)=>renderRow(data,index));return React__default["default"].createElement(Element$7,_extends({},rest,{ref:ref}),renderHeader(),rows,props.children,renderFooter())});List.propTypes={modifier:PropTypes__default["default"].string,dataSource:PropTypes__default["default"].array,renderRow:PropTypes__default["default"].func,renderHeader:PropTypes__default["default"].func,renderFooter:PropTypes__default["default"].func};List.defaultProps={dataSource:[],renderRow:()=>null,renderHeader:()=>null,renderFooter:()=>null};const LazyList=React__default["default"].forwardRef((props,forwardedRef)=>{const ref=forwardedRef||React.useRef();const[children,setChildren]=React.useState([]);const[,setUpdateTop]=React.useState();const{calculateItemHeight,renderRow,length,...rest}=props;React.useEffect(()=>{ref.current.delegate={calculateItemHeight:function(index){return calculateItemHeight(index)},_render:function(start,limit,updateTop){const el=[];for(let i=start;i<limit;i++){el.push(renderRow(i))}setChildren(el);setUpdateTop(updateTop)},countItems:function(){return length}}},[calculateItemHeight,renderRow,length]);return React__default["default"].createElement(List,_extends({},rest,{style:{position:"relative"}}),React__default["default"].createElement("ons-lazy-repeat",{ref:ref}),children)});LazyList.propTypes={modifier:PropTypes__default["default"].string,length:PropTypes__default["default"].number.isRequired,renderRow:PropTypes__default["default"].func.isRequired,calculateItemHeight:PropTypes__default["default"].func.isRequired};const ListHeader=onsCustomElement("ons-list-header");ListHeader.propTypes={modifier:PropTypes__default["default"].string};const propTypes$2={modifier:PropTypes__default["default"].string,tappable:PropTypes__default["default"].bool,tapBackgroundColor:PropTypes__default["default"].string,keepTapBackgroundColor:PropTypes__default["default"].bool,lockOnDrag:PropTypes__default["default"].bool,expandable:PropTypes__default["default"].bool,expanded:PropTypes__default["default"].bool,onExpand:PropTypes__default["default"].func,animation:PropTypes__default["default"].string};const ListItem=onsCustomElement("ons-list-item",{propTypes:propTypes$2});ListItem.propTypes=propTypes$2;const propTypes$1={modifier:PropTypes__default["default"].string};const ListTitle=onsCustomElement("ons-list-title",{propTypes:propTypes$1});ListTitle.propTypes=propTypes$1;const Element$6=onsCustomElement("ons-navigator");class NavigatorClass extends React__default["default"].Component{constructor(){super(...arguments);this.ref=React__default["default"].createRef();this.pages=[];this.state={};this._prePush=this._prePush.bind(this);this._postPush=this._postPush.bind(this);this._prePop=this._prePop.bind(this);this._postPop=this._postPop.bind(this)}update(pages,obj){this.pages=pages||[];return new Promise(resolve=>{this.forceUpdate(resolve)})}resetPage(route){let options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return this.resetPageStack([route],options)}resetPageStack(routes){let options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(this.isRunning()){return Promise.reject("Navigator is already running animation.")}const hidePages=()=>{const pageElements=this.ref.current.pages;for(let i=pageElements.length-2;i>=0;i--){pageElements[i].style.display="none"}};if(options.pop){this.routesBeforePop=this.routes.slice();this.routesAfterPop=routes;this.routes=routes.concat([this.routes[this.routes.length-1]]);const update=()=>{this.pages.pop();this.routes=routes;return new Promise(resolve=>this.forceUpdate(resolve))};return this.update(this.pages).then(()=>this.ref.current._popPage(options,update)).then(()=>hidePages())}const lastRoute=routes[routes.length-1];const newPage=this.props.renderPage(lastRoute,this);this.routes.push(lastRoute);const update=()=>{this.pages.push(newPage);return new Promise(resolve=>this.forceUpdate(resolve))};return this.ref.current._pushPage(options,update).then(()=>{this.routes=routes;this.pages=routes.map(route=>this.props.renderPage(route,this));return this.update(this.pages).then(()=>hidePages())})}pushPage(route){let options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(this.isRunning()){return Promise.reject("Navigator is already running animation.")}return new Promise(resolve=>{const update=()=>{return new Promise(resolve=>{this.pages.push(this.props.renderPage(route,this));this.forceUpdate(resolve)})};this.routes.push(route);this.ref.current._pushPage(options,update).then(resolve).catch(error=>{this.routes.pop();this.pages.pop();throw error})})}isRunning(){return this.ref.current._isRunning}replacePage(route){let options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(this.isRunning()){return Promise.reject("Navigator is already running animation.")}return this.pushPage(route,options).then(()=>{const pos=this.pages.length-2;this.pages.splice(pos,1);this.routes.splice(pos,1);this.ref.current.topPage.updateBackButton(this.pages.length>1);this.forceUpdate()})}popPage(){let options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};if(this.isRunning()){return Promise.reject("Navigator is already running animation.")}this.routesBeforePop=this.routes.slice();this.routesAfterPop=this.routesBeforePop.slice(0,this.routesBeforePop.length-1);const update=()=>{return new Promise(resolve=>{this.pages.pop();this.routes.pop();ReactDOM__default["default"].flushSync(()=>{this.forceUpdate(resolve)})})};return this.ref.current._popPage(options,update)}_onDeviceBackButton(event){if(this.pages.length>1){this.popPage()}else{event.callParentHandler()}}_prePop(event){if(event.target!==this.ref.current){return}event.routes={poppingRoute:this.routesBeforePop[this.routesBeforePop.length-1],routes:this.routesBeforePop};this.props.onPrePop(event)}_postPop(event){if(event.target!==this.ref.current){return}event.routes={poppedRoute:this.routesBeforePop[this.routesBeforePop.length-1],routes:this.routesAfterPop};this.props.onPostPop(event)}_prePush(event){if(event.target!==this.ref.current){return}event.routes={pushingRoute:this.routes[this.routes.length-1],routes:this.routes.slice(0,this.routes.length-1)};this.props.onPrePush(event)}_postPush(event){if(event.target!==this.ref.current){return}event.routes={pushedRoute:this.routes[this.routes.length-1],routes:this.routes};this.props.onPostPush(event)}componentDidMount(){const node=this.ref.current;node.popPage=this.popPage.bind(this);node.addEventListener("prepush",this._prePush);node.addEventListener("postpush",this._postPush);node.addEventListener("prepop",this._prePop);node.addEventListener("postpop",this._postPop);node.swipeMax=this.props.swipePop;node.onDeviceBackButton=this.props.onDeviceBackButton||this._onDeviceBackButton.bind(this);if(this.props.initialRoute&&this.props.initialRouteStack){throw new Error("In Navigator either initalRoute or initalRoutes can be set")}if(this.props.initialRoute){this.routes=[this.props.initialRoute]}else if(this.props.initialRouteStack){this.routes=this.props.initialRouteStack}else{this.routes=[]}this.pages=this.routes.map(route=>this.props.renderPage(route,this));this.forceUpdate()}componentDidUpdate(){if(this.props.onDeviceBackButton!==undefined){this.ref.current.onDeviceBackButton=this.props.onDeviceBackButton}}componentWillUnmount(){const node=this.ref.current;node.removeEventListener("prepush",this.props.onPrePush);node.removeEventListener("postpush",this.props.onPostPush);node.removeEventListener("prepop",this.props.onPrePop);node.removeEventListener("postpop",this.props.onPostPop)}render(){const{innerRef,renderPage,initialRouteStack,initialRoute,onPrePush,onPostPush,onPrePop,onPostPop,swipePop,onDeviceBackButton,...rest}=this.props;const pages=this.routes?this.routes.map(route=>renderPage(route,this)):null;if(innerRef&&innerRef!==this.ref){this.ref=innerRef}return React__default["default"].createElement(Element$6,_extends({ref:this.ref},rest),pages)}}const Navigator=React__default["default"].forwardRef((props,ref)=>React__default["default"].createElement(NavigatorClass,_extends({innerRef:ref},props),props.children));Navigator.propTypes={renderPage:PropTypes__default["default"].func.isRequired,initialRouteStack:PropTypes__default["default"].array,initialRoute:PropTypes__default["default"].object,onPrePush:PropTypes__default["default"].func,onPostPush:PropTypes__default["default"].func,onPrePop:PropTypes__default["default"].func,onPostPop:PropTypes__default["default"].func,animation:PropTypes__default["default"].string,animationOptions:PropTypes__default["default"].object,swipeable:PropTypes__default["default"].oneOfType([PropTypes__default["default"].bool,PropTypes__default["default"].string]),swipePop:PropTypes__default["default"].func,onDeviceBackButton:PropTypes__default["default"].func};const NOOP$1=()=>null;Navigator.defaultProps={onPostPush:NOOP$1,onPrePush:NOOP$1,onPrePop:NOOP$1,onPostPop:NOOP$1};const deprecated$6={isOpen:"visible"};const notAttributes$8=["onDeviceBackButton"];const Modal=onsCustomElement(baseDialog("ons-modal"),{deprecated:deprecated$6,notAttributes:notAttributes$8});Modal.propTypes={animation:PropTypes__default["default"].oneOf(["none","fade","lift"]),animationOptions:PropTypes__default["default"].object,onPreShow:PropTypes__default["default"].func,onPostShow:PropTypes__default["default"].func,onPreHide:PropTypes__default["default"].func,onPostHide:PropTypes__default["default"].func,visible:PropTypes__default["default"].bool,isOpen:PropTypes__default["default"].bool,onDeviceBackButton:PropTypes__default["default"].func};const notAttributes$7=["onInfiniteScroll","onDeviceBackButton"];const Element$5=onsCustomElement("ons-page",{notAttributes:notAttributes$7});const Page=React__default["default"].forwardRef((props,ref)=>{const{renderToolbar,renderBottomToolbar,renderModal,renderFixed,contentStyle,children,...rest}=props;return React__default["default"].createElement(Element$5,_extends({},rest,{ref:ref}),renderToolbar(ref),React__default["default"].createElement("div",{className:"page__background"}," "),React__default["default"].createElement("div",{className:"page__content",style:contentStyle},children),React__default["default"].createElement("div",{className:"page__extra",style:{zIndex:10001}},renderModal(ref)),renderFixed(ref),renderBottomToolbar(ref))});Page.propTypes={contentStyle:PropTypes__default["default"].object,modifier:PropTypes__default["default"].string,renderModal:PropTypes__default["default"].func,renderToolbar:PropTypes__default["default"].func,renderBottomToolbar:PropTypes__default["default"].func,renderFixed:PropTypes__default["default"].func,onInit:PropTypes__default["default"].func,onShow:PropTypes__default["default"].func,onHide:PropTypes__default["default"].func,onInfiniteScroll:PropTypes__default["default"].func,onDeviceBackButton:PropTypes__default["default"].func};const NOOP=()=>null;Page.defaultProps={renderToolbar:NOOP,renderBottomToolbar:NOOP,renderModal:NOOP,renderFixed:NOOP};const deprecated$5={onCancel:"onDialogCancel",isDisabled:"disabled",isCancelable:"cancelable"};const notAttributes$6=["onDeviceBackButton"];const Elem=onsCustomElement(baseDialog("ons-popover"),{deprecated:deprecated$5,notAttributes:notAttributes$6});const Popover=React__default["default"].forwardRef((props,forwardedRef)=>{const{isOpen,getTarget,children,...rest}=props;const ref=forwardedRef||React.useRef();React.useEffect(()=>{if(isOpen!==ref.current.visible){if(isOpen){let target=getTarget();const isElement=x=>x instanceof Element||x instanceof HTMLDocument;if(!isElement(target)&&target.current){target=target.current}ref.current.show({target:target})}else{ref.current.hide()}}});return React__default["default"].createElement(Elem,_extends({ref:ref},rest),children)});Popover.propTypes={getTarget:PropTypes__default["default"].func.isRequired,onDialogCancel:PropTypes__default["default"].func,onCancel:PropTypes__default["default"].func,isOpen:PropTypes__default["default"].bool.isRequired,cancelable:PropTypes__default["default"].bool,isCancelable:PropTypes__default["default"].bool,disabled:PropTypes__default["default"].bool,isDisabled:PropTypes__default["default"].bool,animation:PropTypes__default["default"].string,modifier:PropTypes__default["default"].string,maskColor:PropTypes__default["default"].string,animationOptions:PropTypes__default["default"].object,onPreShow:PropTypes__default["default"].func,onPostShow:PropTypes__default["default"].func,onPreHide:PropTypes__default["default"].func,onPostHide:PropTypes__default["default"].func,onDeviceBackButton:PropTypes__default["default"].func};const ProgressBar=onsCustomElement("ons-progress-bar");ProgressBar.propTypes={modifier:PropTypes__default["default"].string,value:PropTypes__default["default"].number,secondaryValue:PropTypes__default["default"].number,indeterminate:PropTypes__default["default"].bool};const ProgressCircular=onsCustomElement("ons-progress-circular");ProgressCircular.propTypes={modifier:PropTypes__default["default"].string,value:PropTypes__default["default"].number,secondaryValue:PropTypes__default["default"].number,indeterminate:PropTypes__default["default"].bool};const deprecated$4={onLoad:"onAction",onChange:"onChangeState"};const notAttributes$5=["onAction"];const PullHook=onsCustomElement("ons-pull-hook",{deprecated:deprecated$4,notAttributes:notAttributes$5});PullHook.propTypes={onChangeState:PropTypes__default["default"].func,onChange:PropTypes__default["default"].func,onAction:PropTypes__default["default"].func,onLoad:PropTypes__default["default"].func,onPull:PropTypes__default["default"].func,disabled:PropTypes__default["default"].bool,height:PropTypes__default["default"].number,thresholdHeight:PropTypes__default["default"].number,fixedContent:PropTypes__default["default"].bool};const nameMap$4={...INPUT_PROPS};const withDefaultChecked$1=component=>oneTimeProp(component,"defaultChecked","checked");const Radio=withDefaultChecked$1(onsCustomElement("ons-radio",{deprecated:nameMap$4}));Radio.propTypes={name:PropTypes__default["default"].string,modifier:PropTypes__default["default"].string,disabled:PropTypes__default["default"].bool,onChange:PropTypes__default["default"].func,value:PropTypes__default["default"].oneOfType([PropTypes__default["default"].string,PropTypes__default["default"].instanceOf(Date)]),checked:PropTypes__default["default"].bool,defaultChecked:PropTypes__default["default"].bool,inputId:PropTypes__default["default"].string};const nameMap$3={...INPUT_PROPS};const withDefaultValue$2=component=>oneTimeProp(component,"defaultValue","value");const Range=withDefaultValue$2(onsCustomElement("ons-range",{deprecated:nameMap$3}));Range.propTypes={modifier:PropTypes__default["default"].string,onChange:PropTypes__default["default"].func,onInput:PropTypes__default["default"].func,value:PropTypes__default["default"].number,defaultValue:PropTypes__default["default"].number,disabled:PropTypes__default["default"].bool};const Ripple=onsCustomElement("ons-ripple");Ripple.propTypes={color:PropTypes__default["default"].string,modifier:PropTypes__default["default"].string,background:PropTypes__default["default"].string,size:PropTypes__default["default"].string,center:PropTypes__default["default"].bool,disabled:PropTypes__default["default"].bool};const Element$4=onsCustomElement("ons-navigator");class RouterNavigatorClass extends React__default["default"].Component{constructor(){super(...arguments);this.cancelUpdate=false;const callback=(name,event)=>{if(this.props[name]){return this.props[name](event)}};this.onPrePush=callback.bind(this,"onPrePush");this.onPostPush=callback.bind(this,"onPostPush");this.onPrePop=callback.bind(this,"onPrePop");this.onPostPop=callback.bind(this,"onPostPop");this.ref=React__default["default"].createRef();this.state={internalStack:[]}}update(cb){if(!this.cancelUpdate){this.setState({},cb)}}resetPageStack(routes){let options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(this.isRunning()){return}const update=()=>{return new Promise(resolve=>{this.setState({internalStack:[...this.state.internalStack,routes[routes.length-1]]},resolve)})};return this.ref.current._pushPage(options,update).then(()=>{this.setState({internalStack:[...routes]})})}pushPage(route){let options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(this.isRunning()){return}const update=()=>{return new Promise(resolve=>{this.setState({internalStack:[...this.state.internalStack,route]},resolve)})};return this.ref.current._pushPage(options,update)}isRunning(){return this.ref.current._isRunning}replacePage(route){let options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(this.isRunning()){return}const update=()=>{return new Promise(resolve=>{this.setState({internalStack:[...this.state.internalStack,route]},resolve)})};return this.ref.current._pushPage(options,update).then(()=>{this.setState({internalStack:[...this.state.internalStack.slice(0,-2),route]})})}popPage(){let options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};if(this.isRunning()){return}const update=()=>{return new Promise(resolve=>{ReactDOM__default["default"].flushSync(()=>{this.setState({internalStack:this.state.internalStack.slice(0,-1)},resolve)})})};return this.ref.current._popPage(options,update)}_onDeviceBackButton(event){if(this.props.routeConfig.routeStack.length>1){this.popPage()}else{event.callParentHandler()}}componentDidMount(){const node=this.ref.current;this.cancelUpdate=false;node.addEventListener("prepush",this.onPrePush);node.addEventListener("postpush",this.onPostPush);node.addEventListener("prepop",this.onPrePop);node.addEventListener("postpop",this.onPostPop);if(!this.props.routeConfig){throw new Error("In RouterNavigator the property routeConfig needs to be set")}node.swipeMax=this.props.swipePop;node.onDeviceBackButton=this.props.onDeviceBackButton||this._onDeviceBackButton.bind(this);this.setState({internalStack:this.props.routeConfig.routeStack})}componentWillUnmount(){const node=this.ref.current;node.removeEventListener("prepush",this.onPrePush);node.removeEventListener("postpush",this.onPostPush);node.removeEventListener("prepop",this.onPrePop);node.removeEventListener("postpop",this.onPostPop);this.cancelUpdate=true}componentDidUpdate(prevProps){if(this.props.onDeviceBackButton!==undefined){this.ref.current.onDeviceBackButton=this.props.onDeviceBackButton}const processStack=[...this.props.routeConfig.processStack];if(prevProps.routeConfig.processStack.length<this.props.routeConfig.processStack.length&&prevProps.routeConfig.routeStack.length>this.props.routeConfig.routeStack.length){return}if(processStack.length>0){const{type,route,options}=processStack[0];switch(type){case"push":this.pushPage(route,options);break;case"pop":this.popPage(options);break;case"reset":if(Array.isArray(route)){this.resetPageStack(route,options)}else{this.resetPageStack([route],options)}break;case"replace":this.replacePage(route,options);break;default:throw new Error(`Unknown type ${type} in processStack`)}}}render(){const{innerRef,renderPage,onPrePush,onPostPush,onPrePop,onPostPop,swipePop,onDeviceBackButton,...rest}=this.props;const pagesToRender=this.state.internalStack.map(route=>renderPage(route));if(innerRef&&innerRef!==this.ref){this.ref=innerRef}return React__default["default"].createElement(Element$4,_extends({},rest,{ref:this.ref}),pagesToRender)}}const RouterNavigator=React__default["default"].forwardRef((props,ref)=>React__default["default"].createElement(RouterNavigatorClass,_extends({innerRef:ref},props),props.children));RouterNavigator.propTypes={renderPage:PropTypes__default["default"].func.isRequired,routeConfig:PropTypes__default["default"].shape({routeStack:PropTypes__default["default"].arrayOf(PropTypes__default["default"].object),processStack:PropTypes__default["default"].arrayOf(PropTypes__default["default"].object)}),onPrePush:PropTypes__default["default"].func,onPostPush:PropTypes__default["default"].func,onPrePop:PropTypes__default["default"].func,onPostPop:PropTypes__default["default"].func,animation:PropTypes__default["default"].string,animationOptions:PropTypes__default["default"].object,swipeable:PropTypes__default["default"].oneOfType([PropTypes__default["default"].bool,PropTypes__default["default"].string]),swipePop:PropTypes__default["default"].func,onDeviceBackButton:PropTypes__default["default"].func};const Row=onsCustomElement("ons-row");Row.propTypes={verticalAlign:PropTypes__default["default"].oneOf(["top","bottom","center"])};const nameMap$2={...INPUT_PROPS};const withDefaultValue$1=component=>oneTimeProp(component,"defaultValue","value");const notAttributes$4=["value"];const SearchInput=withDefaultValue$1(onsCustomElement("ons-search-input",{deprecated:nameMap$2,notAttributes:notAttributes$4}));SearchInput.propTypes={modifier:PropTypes__default["default"].string,disabled:PropTypes__default["default"].bool,readOnly:PropTypes__default["default"].bool,onChange:PropTypes__default["default"].func,onInput:PropTypes__default["default"].func,value:PropTypes__default["default"].oneOfType([PropTypes__default["default"].string,PropTypes__default["default"].instanceOf(Date)]),defaultValue:PropTypes__default["default"].oneOfType([PropTypes__default["default"].string,PropTypes__default["default"].instanceOf(Date)]),placeholder:PropTypes__default["default"].string,inputId:PropTypes__default["default"].string};const deprecated$3={index:"activeIndex"};const Segment=onsCustomElement("ons-segment",{deprecated:deprecated$3});Segment.propTypes={activeIndex:PropTypes__default["default"].number,index:PropTypes__default["default"].number,tabbarId:PropTypes__default["default"].string,modifier:PropTypes__default["default"].string,onPostChange:PropTypes__default["default"].func,disabled:PropTypes__default["default"].bool};const nameMap$1={...INPUT_PROPS};const withDefaultValue=component=>oneTimeProp(component,"defaultValue","value");const Element$3=withDefaultValue(onsCustomElement("ons-select",{deprecated:nameMap$1}));const Select=React__default["default"].forwardRef((props,ref)=>React__default["default"].createElement(Element$3,_extends({},props,{ref:ref}),React__default["default"].createElement("select",null,props.children)));Select.propTypes={modifier:PropTypes__default["default"].string,disabled:PropTypes__default["default"].bool,onChange:PropTypes__default["default"].func,value:PropTypes__default["default"].string,defaultValue:PropTypes__default["default"].string,multiple:PropTypes__default["default"].bool,autofocus:PropTypes__default["default"].bool,required:PropTypes__default["default"].bool,form:PropTypes__default["default"].string,size:PropTypes__default["default"].number,name:PropTypes__default["default"].string};const SpeedDial=onsCustomElement("ons-speed-dial");SpeedDial.propTypes={modifier:PropTypes__default["default"].string,position:PropTypes__default["default"].string,direction:PropTypes__default["default"].oneOf(["up","down","left","right"]),disabled:PropTypes__default["default"].bool};const SpeedDialItem=onsCustomElement("ons-speed-dial-item");SpeedDialItem.propTypes={modifier:PropTypes__default["default"].string,onClick:PropTypes__default["default"].func};const notAttributes$3=["onDeviceBackButton"];const Splitter=onsCustomElement("ons-splitter",{notAttributes:notAttributes$3});Splitter.propTypes={onDeviceBackButton:PropTypes__default["default"].func};const SplitterContent=onsCustomElement("ons-splitter-content");const SplitterMask=onsCustomElement("ons-splitter-mask");const deprecated$2={onOpen:"onPostOpen",onClose:"onPostClose"};const notAttributes$2=["isOpen"];const Element$2=onsCustomElement("ons-splitter-side",{deprecated:deprecated$2,notAttributes:notAttributes$2});const SplitterSide=React__default["default"].forwardRef((props,ref)=>{const{width,...rest}=props;const realWidth=typeof width==="number"?`${width}px`:width;return React__default["default"].createElement(Element$2,_extends({width:realWidth,ref:ref},rest),props.children)});SplitterSide.propTypes={collapse:PropTypes__default["default"].oneOfType([PropTypes__default["default"].bool,PropTypes__default["default"].string]),swipeable:PropTypes__default["default"].bool,isOpen:PropTypes__default["default"].bool,onPostOpen:PropTypes__default["default"].func,onOpen:PropTypes__default["default"].func,onPostClose:PropTypes__default["default"].func,onClose:PropTypes__default["default"].func,side:PropTypes__default["default"].oneOf(["left","right"]),swipeTargetWidth:PropTypes__default["default"].number,width:PropTypes__default["default"].string,animation:PropTypes__default["default"].string,animationOptions:PropTypes__default["default"].object,openThreshold:PropTypes__default["default"].number,onPreOpen:PropTypes__default["default"].func,onPreClose:PropTypes__default["default"].func,onModeChange:PropTypes__default["default"].func};const nameMap={...INPUT_PROPS};const withDefaultChecked=component=>oneTimeProp(component,"defaultChecked","checked");const Switch=withDefaultChecked(onsCustomElement("ons-switch",{deprecated:nameMap}));Switch.propTypes={modifier:PropTypes__default["default"].string,onChange:PropTypes__default["default"].func,checked:PropTypes__default["default"].bool,defaultChecked:PropTypes__default["default"].bool,disabled:PropTypes__default["default"].bool,inputId:PropTypes__default["default"].string};const Tab=onsCustomElement("ons-tab");Tab.propTypes={icon:PropTypes__default["default"].string,activeIcon:PropTypes__default["default"].string,label:PropTypes__default["default"].string,badge:PropTypes__default["default"].string};const deprecated$1={index:"activeIndex"};const Element$1=onsCustomElement("ons-tabbar",{deprecated:deprecated$1});const Tabbar=React__default["default"].forwardRef((props,ref)=>{const{visible,hideTabs,renderTabs,...rest}=props;const tabs=renderTabs(props.activeIndex,ref);let reallyHideTabs;if(hideTabs===undefined&&visible!==undefined){reallyHideTabs=!visible}else{reallyHideTabs=hideTabs}return React__default["default"].createElement(Element$1,_extends({hideTabs:reallyHideTabs},rest,{ref:ref}),React__default["default"].createElement("div",{className:"tabbar__content"},React__default["default"].createElement("div",null,tabs.map(tab=>tab.content)),React__default["default"].createElement("div",null)),React__default["default"].createElement("div",{className:"tabbar"},tabs.map(tab=>tab.tab),React__default["default"].createElement("div",{className:"tabbar__border"})))});Tabbar.propTypes={activeIndex:PropTypes__default["default"].number,index:PropTypes__default["default"].number,renderTabs:PropTypes__default["default"].func.isRequired,position:PropTypes__default["default"].string,swipeable:PropTypes__default["default"].bool,ignoreEdgeWidth:PropTypes__default["default"].number,animation:PropTypes__default["default"].oneOf(["none","slide"]),animationOptions:PropTypes__default["default"].object,tabBorder:PropTypes__default["default"].bool,onPreChange:PropTypes__default["default"].func,onPostChange:PropTypes__default["default"].func,onReactive:PropTypes__default["default"].func,onSwipe:PropTypes__default["default"].func,hideTabs:PropTypes__default["default"].bool,visible:PropTypes__default["default"].bool,modifier:PropTypes__default["default"].string};const propTypes={visible:PropTypes__default["default"].bool,isOpen:PropTypes__default["default"].bool,animation:PropTypes__default["default"].string,modifier:PropTypes__default["default"].string,animationOptions:PropTypes__default["default"].object,onPreShow:PropTypes__default["default"].func,onPostShow:PropTypes__default["default"].func,onPreHide:PropTypes__default["default"].func,onPostHide:PropTypes__default["default"].func,onDeviceBackButton:PropTypes__default["default"].func};const deprecated={isOpen:"visible"};const notAttributes$1=["onDeviceBackButton"];const Toast=onsCustomElement(baseDialog("ons-toast"),{propTypes:propTypes,deprecated:deprecated,notAttributes:notAttributes$1});Toast.propTypes=propTypes;const notAttributes=["visible"];const Toolbar=onsCustomElement("ons-toolbar",{notAttributes:notAttributes});Toolbar.propTypes={modifier:PropTypes__default["default"].string,visible:PropTypes__default["default"].bool,static:PropTypes__default["default"].bool,inline:PropTypes__default["default"].bool};const ToolbarButton=onsCustomElement("ons-toolbar-button");ToolbarButton.propTypes={modifier:PropTypes__default["default"].string,disabled:PropTypes__default["default"].bool,icon:PropTypes__default["default"].string,onClick:PropTypes__default["default"].func};var RouterUtil={init:routes=>{return{routeStack:[...routes],processStack:[]}},replace:_ref=>{let{routeConfig,route,options,key}=_ref;const config={...routeConfig};const routeStack=[...config.routeStack];let processStack=[...config.processStack];if(key==null||processStack.filter(el=>el.key===key).length===0){const process={type:"replace",route:route,options:options,key:key};processStack=[...processStack,process]}return{routeStack:routeStack,processStack:processStack}},reset:_ref2=>{let{routeConfig,route,options,key}=_ref2;const config={...routeConfig};const routeStack=[...config.routeStack];let processStack=[...config.processStack];if(key==null||processStack.filter(el=>el.key===key).length===0){const process={type:"reset",route:route,options:options,key:key};processStack=[...processStack,process]}return{routeStack:routeStack,processStack:processStack}},push:_ref3=>{let{routeConfig,route,options,key}=_ref3;const config={...routeConfig};const routeStack=[...config.routeStack];let processStack=[...config.processStack];if(key==null||config.processStack.filter(el=>el.key===key).length===0){const process={type:"push",route:route,options:options,key:key};processStack=[...processStack,process]}return{routeStack:routeStack,processStack:processStack}},pop:_ref4=>{let{routeConfig,options,key}=_ref4;const config={...routeConfig};const routeStack=[...config.routeStack];let processStack=[...config.processStack];const pops=processStack.filter(x=>x.type==="pop").length;if(pops+1>=routeStack.length){console.warn("Page stack is already empty");return config}const process={type:"pop",key:key,options:options};processStack=[...processStack,process];return{routeStack:routeStack,processStack:processStack}},postPush:routeConfig=>{const config={...routeConfig};let routeStack=[...config.routeStack];const processStack=[...config.processStack];const next=