From ccf1567c2caf03b5081cb47c88bc03e26a074bcc Mon Sep 17 00:00:00 2001 From: taoyimin <1103995288@qq.com> Date: Tue, 30 Apr 2019 17:29:00 +0800 Subject: [PATCH] Initial commit --- .gitattributes | 2 + .gitignore | 1 + .project | 43 + css/mui.css | 5612 +++++++++++++++++++++++++++++++ css/mui.min.css | 5 + fonts/mui.ttf | Bin 0 -> 29884 bytes index.html | 16 + js/mui.js | 8386 +++++++++++++++++++++++++++++++++++++++++++++++ js/mui.min.js | 9 + manifest.json | 129 + 10 files changed, 14203 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .project create mode 100644 css/mui.css create mode 100644 css/mui.min.css create mode 100644 fonts/mui.ttf create mode 100644 index.html create mode 100644 js/mui.js create mode 100644 js/mui.min.js create mode 100644 manifest.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..99057ba --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +unpackage/ \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..f3f9cbf --- /dev/null +++ b/.project @@ -0,0 +1,43 @@ + + + mui-webapp-demo + Create By HBuilder + + + + + com.pandora.projects.ui.MKeyBuilder + + + + + com.aptana.ide.core.unifiedBuilder + + + + + + com.pandora.projects.ui.MKeyNature + com.aptana.projects.webnature + + + + 1556616316609 + + 10 + + org.eclipse.ui.ide.orFilterMatcher + + + org.eclipse.ui.ide.multiFilter + 1.0-projectRelativePath-matches-false-false-bin + + + org.eclipse.ui.ide.multiFilter + 1.0-projectRelativePath-matches-false-false-setting + + + + + + diff --git a/css/mui.css b/css/mui.css new file mode 100644 index 0000000..8abf444 --- /dev/null +++ b/css/mui.css @@ -0,0 +1,5612 @@ +/*! + * ===================================================== + * Mui v3.7.2 (http://dev.dcloud.net.cn/mui) + * ===================================================== + */ + +/*! normalize.css v3.0.1 | MIT License | git.io/normalize */ +html +{ + font-family: sans-serif; + + -webkit-text-size-adjust: 100%; +} + +body +{ + margin: 0; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary +{ + display: block; +} + +audio, +canvas, +progress, +video +{ + display: inline-block; + + vertical-align: baseline; +} + +audio:not([controls]) +{ + display: none; + + height: 0; +} + +[hidden], +template +{ + display: none; +} + +a +{ + background: transparent; +} + +a:active, +a:hover +{ + outline: 0; +} + +abbr[title] +{ + border-bottom: 1px dotted; +} + +b, +strong +{ + font-weight: bold; +} + +dfn +{ + font-style: italic; +} + +h1 +{ + font-size: 2em; + + margin: .67em 0; +} + +mark +{ + color: #000; + background: #ff0; +} + +small +{ + font-size: 80%; +} + +sub, +sup +{ + font-size: 75%; + line-height: 0; + + position: relative; + + vertical-align: baseline; +} + +sup +{ + top: -.5em; +} + +sub +{ + bottom: -.25em; +} + +img +{ + border: 0; +} + +svg:not(:root) +{ + overflow: hidden; +} + +figure +{ + margin: 1em 40px; +} + +hr +{ + box-sizing: content-box; + height: 0; +} + +pre +{ + overflow: auto; +} + +code, +kbd, +pre, +samp +{ + font-family: monospace, monospace; + font-size: 1em; +} + +button, +input, +optgroup, +select, +textarea +{ + font: inherit; + + margin: 0; + + color: inherit; +} + +button +{ + overflow: visible; +} + +button, +select +{ + text-transform: none; +} + +button, +html input[type='button'], +input[type='reset'], +input[type='submit'] +{ + cursor: pointer; + + -webkit-appearance: button; +} + +button[disabled], +html input[disabled] +{ + cursor: default; +} + +input +{ + line-height: normal; +} + +input[type='checkbox'], +input[type='radio'] +{ + box-sizing: border-box; + padding: 0; +} + +input[type='number']::-webkit-inner-spin-button, +input[type='number']::-webkit-outer-spin-button +{ + height: auto; +} + +input[type='search'] +{ + -webkit-box-sizing: content-box; + box-sizing: content-box; + + -webkit-appearance: textfield; +} + +input[type='search']::-webkit-search-cancel-button, +input[type='search']::-webkit-search-decoration +{ + -webkit-appearance: none; +} + +fieldset +{ + margin: 0 2px; + padding: .35em .625em .75em; + + border: 1px solid #c0c0c0; +} + +legend +{ + padding: 0; + + border: 0; +} + +textarea +{ + overflow: auto; +} + +optgroup +{ + font-weight: bold; +} + +table +{ + border-spacing: 0; + border-collapse: collapse; +} + +td, +th +{ + padding: 0; +} + +* +{ + -webkit-box-sizing: border-box; + box-sizing: border-box; + + -webkit-user-select: none; + + outline: none; + + -webkit-tap-highlight-color: transparent; + -webkit-tap-highlight-color: transparent; +} + +body +{ + font-family: 'Helvetica Neue', Helvetica, sans-serif; + font-size: 17px; + line-height: 21px; + + color: #000; + background-color: #efeff4; + + -webkit-overflow-scrolling: touch; +} + +a +{ + text-decoration: none; + + color: #007aff; +} +a:active +{ + color: #0062cc; +} + +.mui-content +{ + background-color: #efeff4; + + -webkit-overflow-scrolling: touch; +} + +.mui-bar-nav ~ .mui-content +{ + padding-top: 44px; +} +.mui-bar-nav ~ .mui-content.mui-scroll-wrapper .mui-scrollbar-vertical +{ + top: 44px; +} + +.mui-bar-header-secondary ~ .mui-content +{ + padding-top: 88px; +} +.mui-bar-header-secondary ~ .mui-content.mui-scroll-wrapper .mui-scrollbar-vertical +{ + top: 88px; +} + +.mui-bar-footer ~ .mui-content +{ + padding-bottom: 44px; +} +.mui-bar-footer ~ .mui-content.mui-scroll-wrapper .mui-scrollbar-vertical +{ + bottom: 44px; +} + +.mui-bar-footer-secondary ~ .mui-content +{ + padding-bottom: 88px; +} +.mui-bar-footer-secondary ~ .mui-content.mui-scroll-wrapper .mui-scrollbar-vertical +{ + bottom: 88px; +} + +.mui-bar-tab ~ .mui-content +{ + padding-bottom: 50px; +} +.mui-bar-tab ~ .mui-content.mui-scroll-wrapper .mui-scrollbar-vertical +{ + bottom: 50px; +} + +.mui-bar-footer-secondary-tab ~ .mui-content +{ + padding-bottom: 94px; +} +.mui-bar-footer-secondary-tab ~ .mui-content.mui-scroll-wrapper .mui-scrollbar-vertical +{ + bottom: 94px; +} + +.mui-content-padded +{ + margin: 10px; +} + +.mui-inline +{ + display: inline-block; + + vertical-align: top; +} + +.mui-block +{ + display: block !important; +} + +.mui-visibility +{ + visibility: visible !important; +} + +.mui-hidden +{ + display: none !important; +} + +.mui-ellipsis +{ + overflow: hidden; + + white-space: nowrap; + text-overflow: ellipsis; +} + +.mui-ellipsis-2 +{ + display: -webkit-box; + overflow: hidden; + + white-space: normal !important; + text-overflow: ellipsis; + word-wrap: break-word; + + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +.mui-table +{ + display: table; + + width: 100%; + + table-layout: fixed; +} + +.mui-table-cell +{ + position: relative; + + display: table-cell; +} + +.mui-text-left +{ + text-align: left !important; +} + +.mui-text-center +{ + text-align: center !important; +} + +.mui-text-justify +{ + text-align: justify !important; +} + +.mui-text-right +{ + text-align: right !important; +} + +.mui-pull-left +{ + float: left; +} + +.mui-pull-right +{ + float: right; +} + +.mui-list-unstyled +{ + padding-left: 0; + + list-style: none; +} + +.mui-list-inline +{ + margin-left: -5px; + padding-left: 0; + + list-style: none; +} + +.mui-list-inline > li +{ + display: inline-block; + + padding-right: 5px; + padding-left: 5px; +} + +.mui-clearfix:before, .mui-clearfix:after +{ + display: table; + + content: ' '; +} +.mui-clearfix:after +{ + clear: both; +} + +.mui-bg-primary +{ + background-color: #007aff; +} + +.mui-bg-positive +{ + background-color: #4cd964; +} + +.mui-bg-negative +{ + background-color: #dd524d; +} + +.mui-error +{ + margin: 88px 35px; + padding: 10px; + + border-radius: 6px; + background-color: #bbb; +} + +.mui-subtitle +{ + font-size: 15px; +} + +h1, h2, h3, h4, h5, h6 +{ + line-height: 1; + + margin-top: 5px; + margin-bottom: 5px; +} + +h1, .mui-h1 +{ + font-size: 36px; +} + +h2, .mui-h2 +{ + font-size: 30px; +} + +h3, .mui-h3 +{ + font-size: 24px; +} + +h4, .mui-h4 +{ + font-size: 18px; +} + +h5, .mui-h5 +{ + font-size: 14px; + font-weight: normal; + + color: #8f8f94; +} + +h6, .mui-h6 +{ + font-size: 12px; + font-weight: normal; + + color: #8f8f94; +} + +p +{ + font-size: 14px; + + margin-top: 0; + margin-bottom: 10px; + + color: #8f8f94; +} + +.mui-row:before, .mui-row:after +{ + display: table; + + content: ' '; +} +.mui-row:after +{ + clear: both; +} + +.mui-col-xs-1, .mui-col-sm-1, .mui-col-xs-2, .mui-col-sm-2, .mui-col-xs-3, .mui-col-sm-3, .mui-col-xs-4, .mui-col-sm-4, .mui-col-xs-5, .mui-col-sm-5, .mui-col-xs-6, .mui-col-sm-6, .mui-col-xs-7, .mui-col-sm-7, .mui-col-xs-8, .mui-col-sm-8, .mui-col-xs-9, .mui-col-sm-9, .mui-col-xs-10, .mui-col-sm-10, .mui-col-xs-11, .mui-col-sm-11, .mui-col-xs-12, .mui-col-sm-12 +{ + position: relative; + + min-height: 1px; +} + +.mui-row > [class*='mui-col-'] +{ + float: left; +} + +.mui-col-xs-12 +{ + width: 100%; +} + +.mui-col-xs-11 +{ + width: 91.66666667%; +} + +.mui-col-xs-10 +{ + width: 83.33333333%; +} + +.mui-col-xs-9 +{ + width: 75%; +} + +.mui-col-xs-8 +{ + width: 66.66666667%; +} + +.mui-col-xs-7 +{ + width: 58.33333333%; +} + +.mui-col-xs-6 +{ + width: 50%; +} + +.mui-col-xs-5 +{ + width: 41.66666667%; +} + +.mui-col-xs-4 +{ + width: 33.33333333%; +} + +.mui-col-xs-3 +{ + width: 25%; +} + +.mui-col-xs-2 +{ + width: 16.66666667%; +} + +.mui-col-xs-1 +{ + width: 8.33333333%; +} + +@media (min-width: 400px) +{ + .mui-col-sm-12 + { + width: 100%; + } + + .mui-col-sm-11 + { + width: 91.66666667%; + } + + .mui-col-sm-10 + { + width: 83.33333333%; + } + + .mui-col-sm-9 + { + width: 75%; + } + + .mui-col-sm-8 + { + width: 66.66666667%; + } + + .mui-col-sm-7 + { + width: 58.33333333%; + } + + .mui-col-sm-6 + { + width: 50%; + } + + .mui-col-sm-5 + { + width: 41.66666667%; + } + + .mui-col-sm-4 + { + width: 33.33333333%; + } + + .mui-col-sm-3 + { + width: 25%; + } + + .mui-col-sm-2 + { + width: 16.66666667%; + } + + .mui-col-sm-1 + { + width: 8.33333333%; + } +} +.mui-scroll-wrapper +{ + position: absolute; + z-index: 2; + top: 0; + bottom: 0; + left: 0; + + overflow: hidden; + + width: 100%; +} + +.mui-scroll +{ + position: absolute; + z-index: 1; + + width: 100%; +} + +.mui-scrollbar +{ + position: absolute; + z-index: 9998; + + overflow: hidden; + + -webkit-transition: 500ms; + transition: 500ms; + transform: translateZ(0px); + pointer-events: none; + + opacity: 0; +} + +.mui-scrollbar-vertical +{ + top: 0; + right: 1px; + bottom: 2px; + + width: 4px; +} +.mui-scrollbar-vertical .mui-scrollbar-indicator +{ + width: 100%; +} + +.mui-scrollbar-horizontal +{ + right: 2px; + bottom: 0; + left: 2px; + + height: 4px; +} +.mui-scrollbar-horizontal .mui-scrollbar-indicator +{ + height: 100%; +} + +.mui-scrollbar-indicator +{ + position: absolute; + + display: block; + + box-sizing: border-box; + + -webkit-transition: .01s cubic-bezier(.1, .57, .1, 1); + transition: .01s cubic-bezier(.1, .57, .1, 1); + transform: translate(0px, 0px) translateZ(0px); + + border: 1px solid rgba(255, 255, 255, .80196); + border-radius: 2px; + background: rgba(0, 0, 0, .39804); +} + +.mui-plus-pullrefresh .mui-fullscreen .mui-scroll-wrapper .mui-scroll-wrapper, .mui-plus-pullrefresh .mui-fullscreen .mui-slider-group .mui-scroll-wrapper +{ + position: absolute; + top: 0; + bottom: 0; + left: 0; + + overflow: hidden; + + width: 100%; +} +.mui-plus-pullrefresh .mui-fullscreen .mui-scroll-wrapper .mui-scroll, .mui-plus-pullrefresh .mui-fullscreen .mui-slider-group .mui-scroll +{ + position: absolute; + + width: 100%; +} +.mui-plus-pullrefresh .mui-scroll-wrapper, .mui-plus-pullrefresh .mui-slider-group +{ + position: static; + top: auto; + bottom: auto; + left: auto; + + overflow: auto; + + width: auto; +} +.mui-plus-pullrefresh .mui-slider-group +{ + overflow: visible; +} +.mui-plus-pullrefresh .mui-scroll +{ + position: static; + + width: auto; +} + +.mui-off-canvas-wrap .mui-bar +{ + position: absolute !important; + + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + + -webkit-box-shadow: none; + box-shadow: none; +} + +.mui-off-canvas-wrap +{ + position: relative; + z-index: 1; + + overflow: hidden; + + width: 100%; + height: 100%; +} +.mui-off-canvas-wrap .mui-inner-wrap +{ + position: relative; + z-index: 1; + + width: 100%; + height: 100%; +} +.mui-off-canvas-wrap .mui-inner-wrap.mui-transitioning +{ + -webkit-transition: -webkit-transform 350ms; + transition: transform 350ms cubic-bezier(.165, .84, .44, 1); +} +.mui-off-canvas-wrap .mui-inner-wrap .mui-off-canvas-left +{ + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); +} +.mui-off-canvas-wrap .mui-inner-wrap .mui-off-canvas-right +{ + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); +} +.mui-off-canvas-wrap.mui-active +{ + overflow: hidden; + + height: 100%; +} +.mui-off-canvas-wrap.mui-active .mui-off-canvas-backdrop +{ + position: absolute; + z-index: 998; + top: 0; + right: 0; + bottom: 0; + left: 0; + + display: block; + + transition: background 350ms cubic-bezier(.165, .84, .44, 1); + + background: rgba(0, 0, 0, .4); + box-shadow: -4px 0 4px rgba(0, 0, 0, .5), 4px 0 4px rgba(0, 0, 0, .5); + + -webkit-tap-highlight-color: transparent; +} +.mui-off-canvas-wrap.mui-slide-in .mui-off-canvas-right +{ + z-index: 10000 !important; + + -webkit-transform: translate3d(100%, 0px, 0px); +} +.mui-off-canvas-wrap.mui-slide-in .mui-off-canvas-left +{ + z-index: 10000 !important; + + -webkit-transform: translate3d(-100%, 0px, 0px); +} + +.mui-off-canvas-left, .mui-off-canvas-right +{ + position: absolute; + z-index: -1; + top: 0; + bottom: 0; + + visibility: hidden; + + box-sizing: content-box; + width: 70%; + min-height: 100%; + + background: #333; + + -webkit-overflow-scrolling: touch; +} +.mui-off-canvas-left.mui-transitioning, .mui-off-canvas-right.mui-transitioning +{ + -webkit-transition: -webkit-transform 350ms cubic-bezier(.165, .84, .44, 1); + transition: transform 350ms cubic-bezier(.165, .84, .44, 1); +} + +.mui-off-canvas-left +{ + left: 0; +} + +.mui-off-canvas-right +{ + right: 0; +} + +.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable +{ + background-color: #333; +} +.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable > .mui-off-canvas-left, .mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable > .mui-off-canvas-right +{ + width: 80%; + + -webkit-transform: scale(.8); + transform: scale(.8); + + opacity: .1; +} +.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable > .mui-off-canvas-left.mui-transitioning, .mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable > .mui-off-canvas-right.mui-transitioning +{ + -webkit-transition: -webkit-transform 350ms cubic-bezier(.165, .84, .44, 1), opacity 350ms cubic-bezier(.165, .84, .44, 1); + transition: transform 350ms cubic-bezier(.165, .84, .44, 1), opacity 350ms cubic-bezier(.165, .84, .44, 1); +} +.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable > .mui-off-canvas-left +{ + -webkit-transform-origin: -100%; + transform-origin: -100%; +} +.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable > .mui-off-canvas-right +{ + -webkit-transform-origin: 200%; + transform-origin: 200%; +} +.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable.mui-active > .mui-inner-wrap +{ + -webkit-transform: scale(.8); + transform: scale(.8); +} +.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable.mui-active > .mui-off-canvas-left, .mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable.mui-active > .mui-off-canvas-right +{ + -webkit-transform: scale(1); + transform: scale(1); + + opacity: 1; +} + +.mui-loading .mui-spinner +{ + display: block; + + margin: 0 auto; +} + +.mui-spinner +{ + display: inline-block; + + width: 24px; + height: 24px; + + -webkit-transform-origin: 50%; + transform-origin: 50%; + -webkit-animation: spinner-spin 1s step-end infinite; + animation: spinner-spin 1s step-end infinite; +} + +.mui-spinner:after +{ + display: block; + + width: 100%; + height: 100%; + + content: ''; + + background-image: url('data:image/svg+xml;charset=utf-8,'); + background-repeat: no-repeat; + background-position: 50%; + background-size: 100%; +} + +.mui-spinner-white:after +{ + background-image: url('data:image/svg+xml;charset=utf-8,'); +} + +@-webkit-keyframes spinner-spin +{ + 0% + { + -webkit-transform: rotate(0deg); + } + + 8.33333333% + { + -webkit-transform: rotate(30deg); + } + + 16.66666667% + { + -webkit-transform: rotate(60deg); + } + + 25% + { + -webkit-transform: rotate(90deg); + } + + 33.33333333% + { + -webkit-transform: rotate(120deg); + } + + 41.66666667% + { + -webkit-transform: rotate(150deg); + } + + 50% + { + -webkit-transform: rotate(180deg); + } + + 58.33333333% + { + -webkit-transform: rotate(210deg); + } + + 66.66666667% + { + -webkit-transform: rotate(240deg); + } + + 75% + { + -webkit-transform: rotate(270deg); + } + + 83.33333333% + { + -webkit-transform: rotate(300deg); + } + + 91.66666667% + { + -webkit-transform: rotate(330deg); + } + + 100% + { + -webkit-transform: rotate(360deg); + } +} +@keyframes spinner-spin +{ + 0% + { + transform: rotate(0deg); + } + + 8.33333333% + { + transform: rotate(30deg); + } + + 16.66666667% + { + transform: rotate(60deg); + } + + 25% + { + transform: rotate(90deg); + } + + 33.33333333% + { + transform: rotate(120deg); + } + + 41.66666667% + { + transform: rotate(150deg); + } + + 50% + { + transform: rotate(180deg); + } + + 58.33333333% + { + transform: rotate(210deg); + } + + 66.66666667% + { + transform: rotate(240deg); + } + + 75% + { + transform: rotate(270deg); + } + + 83.33333333% + { + transform: rotate(300deg); + } + + 91.66666667% + { + transform: rotate(330deg); + } + + 100% + { + transform: rotate(360deg); + } +} +input[type='button'], +input[type='submit'], +input[type='reset'], +button, +.mui-btn +{ + font-size: 14px; + font-weight: 400; + line-height: 1.42; + + position: relative; + + display: inline-block; + + margin-bottom: 0; + padding: 6px 12px; + + cursor: pointer; + -webkit-transition: all; + transition: all; + -webkit-transition-timing-function: linear; + transition-timing-function: linear; + -webkit-transition-duration: .2s; + transition-duration: .2s; + text-align: center; + vertical-align: top; + white-space: nowrap; + + color: #333; + border: 1px solid #ccc; + border-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + background-color: #fff; + background-clip: padding-box; +} +input[type='button']:enabled:active, input[type='button'].mui-active:enabled, +input[type='submit']:enabled:active, +input[type='submit'].mui-active:enabled, +input[type='reset']:enabled:active, +input[type='reset'].mui-active:enabled, +button:enabled:active, +button.mui-active:enabled, +.mui-btn:enabled:active, +.mui-btn.mui-active:enabled +{ + color: #fff; + background-color: #929292; +} +input[type='button']:disabled, input[type='button'].mui-disabled, +input[type='submit']:disabled, +input[type='submit'].mui-disabled, +input[type='reset']:disabled, +input[type='reset'].mui-disabled, +button:disabled, +button.mui-disabled, +.mui-btn:disabled, +.mui-btn.mui-disabled +{ + opacity: .6; +} + +input[type='submit'], +.mui-btn-primary, +.mui-btn-blue +{ + color: #fff; + border: 1px solid #007aff; + background-color: #007aff; +} +input[type='submit']:enabled:active, input[type='submit'].mui-active:enabled, +.mui-btn-primary:enabled:active, +.mui-btn-primary.mui-active:enabled, +.mui-btn-blue:enabled:active, +.mui-btn-blue.mui-active:enabled +{ + color: #fff; + border: 1px solid #0062cc; + background-color: #0062cc; +} + +.mui-btn-positive, +.mui-btn-success, +.mui-btn-green +{ + color: #fff; + border: 1px solid #4cd964; + background-color: #4cd964; +} +.mui-btn-positive:enabled:active, .mui-btn-positive.mui-active:enabled, +.mui-btn-success:enabled:active, +.mui-btn-success.mui-active:enabled, +.mui-btn-green:enabled:active, +.mui-btn-green.mui-active:enabled +{ + color: #fff; + border: 1px solid #2ac845; + background-color: #2ac845; +} + +.mui-btn-warning, +.mui-btn-yellow +{ + color: #fff; + border: 1px solid #f0ad4e; + background-color: #f0ad4e; +} +.mui-btn-warning:enabled:active, .mui-btn-warning.mui-active:enabled, +.mui-btn-yellow:enabled:active, +.mui-btn-yellow.mui-active:enabled +{ + color: #fff; + border: 1px solid #ec971f; + background-color: #ec971f; +} + +.mui-btn-negative, +.mui-btn-danger, +.mui-btn-red +{ + color: #fff; + border: 1px solid #dd524d; + background-color: #dd524d; +} +.mui-btn-negative:enabled:active, .mui-btn-negative.mui-active:enabled, +.mui-btn-danger:enabled:active, +.mui-btn-danger.mui-active:enabled, +.mui-btn-red:enabled:active, +.mui-btn-red.mui-active:enabled +{ + color: #fff; + border: 1px solid #cf2d28; + background-color: #cf2d28; +} + +.mui-btn-royal, +.mui-btn-purple +{ + color: #fff; + border: 1px solid #8a6de9; + background-color: #8a6de9; +} +.mui-btn-royal:enabled:active, .mui-btn-royal.mui-active:enabled, +.mui-btn-purple:enabled:active, +.mui-btn-purple.mui-active:enabled +{ + color: #fff; + border: 1px solid #6641e2; + background-color: #6641e2; +} + +.mui-btn-grey +{ + color: #fff; + border: 1px solid #c7c7cc; + background-color: #c7c7cc; +} +.mui-btn-grey:enabled:active, .mui-btn-grey.mui-active:enabled +{ + color: #fff; + border: 1px solid #acacb4; + background-color: #acacb4; +} + +.mui-btn-outlined +{ + background-color: transparent; +} +.mui-btn-outlined.mui-btn-primary, .mui-btn-outlined.mui-btn-blue +{ + color: #007aff; +} +.mui-btn-outlined.mui-btn-positive, .mui-btn-outlined.mui-btn-success, .mui-btn-outlined.mui-btn-green +{ + color: #4cd964; +} +.mui-btn-outlined.mui-btn-warning, .mui-btn-outlined.mui-btn-yellow +{ + color: #f0ad4e; +} +.mui-btn-outlined.mui-btn-negative, .mui-btn-outlined.mui-btn-danger, .mui-btn-outlined.mui-btn-red +{ + color: #dd524d; +} +.mui-btn-outlined.mui-btn-royal, .mui-btn-outlined.mui-btn-purple +{ + color: #8a6de9; +} +.mui-btn-outlined.mui-btn-primary:enabled:active, .mui-btn-outlined.mui-btn-blue:enabled:active, .mui-btn-outlined.mui-btn-positive:enabled:active, .mui-btn-outlined.mui-btn-success:enabled:active, .mui-btn-outlined.mui-btn-green:enabled:active, .mui-btn-outlined.mui-btn-warning:enabled:active, .mui-btn-outlined.mui-btn-yellow:enabled:active, .mui-btn-outlined.mui-btn-negative:enabled:active, .mui-btn-outlined.mui-btn-danger:enabled:active, .mui-btn-outlined.mui-btn-red:enabled:active, .mui-btn-outlined.mui-btn-royal:enabled:active, .mui-btn-outlined.mui-btn-purple:enabled:active +{ + color: #fff; +} + +.mui-btn-link +{ + padding-top: 6px; + padding-bottom: 6px; + + color: #007aff; + border: 0; + background-color: transparent; +} +.mui-btn-link:enabled:active, .mui-btn-link.mui-active:enabled +{ + color: #0062cc; + background-color: transparent; +} + +.mui-btn-block +{ + font-size: 18px; + + display: block; + + width: 100%; + margin-bottom: 10px; + padding: 15px 0; +} + +.mui-btn .mui-badge +{ + font-size: 14px; + + margin: -2px -4px -2px 4px; + + background-color: rgba(0, 0, 0, .15); +} + +.mui-btn .mui-badge-inverted, +.mui-btn:enabled:active .mui-badge-inverted +{ + background-color: transparent; +} + +.mui-btn-primary:enabled:active .mui-badge-inverted, +.mui-btn-positive:enabled:active .mui-badge-inverted, +.mui-btn-negative:enabled:active .mui-badge-inverted +{ + color: #fff; +} + +.mui-btn-block .mui-badge +{ + position: absolute; + right: 0; + + margin-right: 10px; +} + +.mui-btn .mui-icon +{ + font-size: inherit; +} + +.mui-btn.mui-icon +{ + font-size: 14px; + line-height: 1.42; +} + +.mui-btn.mui-fab +{ + width: 56px; + height: 56px; + padding: 16px; + + border-radius: 50%; + outline: none; +} +.mui-btn.mui-fab.mui-btn-mini +{ + width: 40px; + height: 40px; + padding: 8px; +} +.mui-btn.mui-fab .mui-icon +{ + font-size: 24px; + line-height: 24px; + + width: 24px; + height: 24px; +} + +.mui-btn .mui-spinner +{ + width: 14px; + height: 14px; + + vertical-align: text-bottom; +} + +.mui-btn-block .mui-spinner +{ + width: 22px; + height: 22px; +} + +.mui-bar +{ + position: fixed; + z-index: 10; + right: 0; + left: 0; + + height: 44px; + padding-right: 10px; + padding-left: 10px; + + border-bottom: 0; + background-color: #f7f7f7; + -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, .85); + box-shadow: 0 0 1px rgba(0, 0, 0, .85); + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} + +.mui-bar .mui-title +{ + right: 40px; + left: 40px; + + display: inline-block; + overflow: hidden; + + width: auto; + margin: 0; + + text-overflow: ellipsis; +} +.mui-bar .mui-backdrop +{ + background: none; +} + +.mui-bar-header-secondary +{ + top: 44px; +} + +.mui-bar-footer +{ + bottom: 0; +} + +.mui-bar-footer-secondary +{ + bottom: 44px; +} + +.mui-bar-footer-secondary-tab +{ + bottom: 50px; +} + +.mui-bar-footer, +.mui-bar-footer-secondary, +.mui-bar-footer-secondary-tab +{ + border-top: 0; +} + +.mui-bar-transparent +{ + top: 0; + + background-color: rgba(247, 247, 247, 0); + -webkit-box-shadow: none; + box-shadow: none; +} + +.mui-bar-nav +{ + top: 0; + + -webkit-box-shadow: 0 1px 6px #ccc; + box-shadow: 0 1px 6px #ccc; +} +.mui-bar-nav ~ .mui-content .mui-anchor +{ + display: block; + visibility: hidden; + + height: 45px; + margin-top: -45px; +} +.mui-bar-nav.mui-bar .mui-icon +{ + margin-right: -10px; + margin-left: -10px; + padding-right: 10px; + padding-left: 10px; +} + +.mui-title +{ + font-size: 17px; + font-weight: 500; + line-height: 44px; + + position: absolute; + + display: block; + + width: 100%; + margin: 0 -10px; + padding: 0; + + text-align: center; + white-space: nowrap; + + color: #000; +} + +.mui-title a +{ + color: inherit; +} + +.mui-bar-tab +{ + bottom: 0; + + display: table; + + width: 100%; + height: 50px; + padding: 0; + + table-layout: fixed; + + border-top: 0; + border-bottom: 0; + + -webkit-touch-callout: none; +} +.mui-bar-tab .mui-tab-item +{ + display: table-cell; + overflow: hidden; + + width: 1%; + height: 50px; + + text-align: center; + vertical-align: middle; + white-space: nowrap; + text-overflow: ellipsis; + + color: #929292; +} +.mui-bar-tab .mui-tab-item.mui-active +{ + color: #007aff; +} +.mui-bar-tab .mui-tab-item .mui-icon +{ + top: 3px; + + width: 24px; + height: 24px; + padding-top: 0; + padding-bottom: 0; +} +.mui-bar-tab .mui-tab-item .mui-icon ~ .mui-tab-label +{ + font-size: 11px; + + display: block; + overflow: hidden; + + text-overflow: ellipsis; +} +.mui-bar-tab .mui-tab-item .mui-icon:active +{ + background: none; +} + +.mui-focusin > .mui-bar-nav, +.mui-focusin > .mui-bar-header-secondary +{ + position: absolute; +} + +.mui-focusin > .mui-bar ~ .mui-content +{ + padding-bottom: 0; +} + +.mui-bar .mui-btn +{ + font-weight: 400; + + position: relative; + z-index: 20; + top: 7px; + + margin-top: 0; + padding: 6px 12px 7px; +} +.mui-bar .mui-btn.mui-pull-right +{ + margin-left: 10px; +} +.mui-bar .mui-btn.mui-pull-left +{ + margin-right: 10px; +} + +.mui-bar .mui-btn-link +{ + font-size: 16px; + line-height: 44px; + + top: 0; + + padding: 0; + + color: #007aff; + border: 0; +} +.mui-bar .mui-btn-link:active, .mui-bar .mui-btn-link.mui-active +{ + color: #0062cc; +} + +.mui-bar .mui-btn-block +{ + font-size: 16px; + + top: 6px; + + margin-bottom: 0; + padding: 5px 0; +} + +.mui-bar .mui-btn-nav.mui-pull-left +{ + margin-left: -5px; +} +.mui-bar .mui-btn-nav.mui-pull-left .mui-icon-left-nav +{ + margin-right: -3px; +} +.mui-bar .mui-btn-nav.mui-pull-right +{ + margin-right: -5px; +} +.mui-bar .mui-btn-nav.mui-pull-right .mui-icon-right-nav +{ + margin-left: -3px; +} +.mui-bar .mui-btn-nav:active +{ + opacity: .3; +} + +.mui-bar .mui-icon +{ + font-size: 24px; + + position: relative; + z-index: 20; + + padding-top: 10px; + padding-bottom: 10px; +} +.mui-bar .mui-icon:active +{ + opacity: .3; +} +.mui-bar .mui-btn .mui-icon +{ + top: 1px; + + margin: 0; + padding: 0; +} +.mui-bar .mui-title .mui-icon +{ + margin: 0; + padding: 0; +} +.mui-bar .mui-title .mui-icon.mui-icon-caret +{ + top: 4px; + + margin-left: -5px; +} + +.mui-bar input[type='search'] +{ + height: 29px; + margin: 6px 0; +} + +.mui-bar .mui-input-row .mui-btn +{ + padding: 12px 10px; +} + +.mui-bar .mui-search:before +{ + margin-top: -10px; +} + +.mui-bar .mui-input-row .mui-input-clear ~ .mui-icon-clear, +.mui-bar .mui-input-row .mui-input-speech ~ .mui-icon-speech +{ + top: 0; + right: 12px; +} + +.mui-bar.mui-bar-header-secondary .mui-input-row .mui-input-clear ~ .mui-icon-clear, +.mui-bar.mui-bar-header-secondary .mui-input-row .mui-input-speech ~ .mui-icon-speech +{ + top: 0; + right: 0; +} + +.mui-bar .mui-segmented-control +{ + top: 7px; + + width: auto; + margin: 0 auto; +} + +.mui-bar.mui-bar-header-secondary .mui-segmented-control +{ + top: 0; +} + +.mui-badge +{ + font-size: 12px; + line-height: 1; + + display: inline-block; + + padding: 3px 6px; + + color: #333; + border-radius: 100px; + background-color: rgba(0, 0, 0, .15); +} +.mui-badge.mui-badge-inverted +{ + padding: 0 5px 0 0; + + color: #929292; + background-color: transparent; +} + +.mui-badge-primary, .mui-badge-blue +{ + color: #fff; + background-color: #007aff; +} +.mui-badge-primary.mui-badge-inverted, .mui-badge-blue.mui-badge-inverted +{ + color: #007aff; + background-color: transparent; +} + +.mui-badge-success, .mui-badge-green +{ + color: #fff; + background-color: #4cd964; +} +.mui-badge-success.mui-badge-inverted, .mui-badge-green.mui-badge-inverted +{ + color: #4cd964; + background-color: transparent; +} + +.mui-badge-warning, .mui-badge-yellow +{ + color: #fff; + background-color: #f0ad4e; +} +.mui-badge-warning.mui-badge-inverted, .mui-badge-yellow.mui-badge-inverted +{ + color: #f0ad4e; + background-color: transparent; +} + +.mui-badge-danger, .mui-badge-red +{ + color: #fff; + background-color: #dd524d; +} +.mui-badge-danger.mui-badge-inverted, .mui-badge-red.mui-badge-inverted +{ + color: #dd524d; + background-color: transparent; +} + +.mui-badge-royal, .mui-badge-purple +{ + color: #fff; + background-color: #8a6de9; +} +.mui-badge-royal.mui-badge-inverted, .mui-badge-purple.mui-badge-inverted +{ + color: #8a6de9; + background-color: transparent; +} + +.mui-icon .mui-badge +{ + font-size: 10px; + line-height: 1.4; + + position: absolute; + top: -2px; + left: 100%; + + margin-left: -10px; + padding: 1px 5px; + + color: white; + background: red; +} + +.mui-card +{ + font-size: 14px; + + position: relative; + + overflow: hidden; + + margin: 10px; + + border-radius: 2px; + background-color: white; + background-clip: padding-box; + box-shadow: 0 1px 2px rgba(0, 0, 0, .3); +} + +.mui-content > .mui-card:first-child +{ + margin-top: 15px; +} + +.mui-card .mui-input-group:before, .mui-card .mui-input-group:after +{ + height: 0; +} +.mui-card .mui-input-group .mui-input-row:last-child:before, .mui-card .mui-input-group .mui-input-row:last-child:after +{ + height: 0; +} + +.mui-card .mui-table-view +{ + margin-bottom: 0; + + border-top: 0; + border-bottom: 0; + border-radius: 6px; +} +.mui-card .mui-table-view .mui-table-view-divider:first-child, .mui-card .mui-table-view .mui-table-view-cell:first-child +{ + top: 0; + + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} +.mui-card .mui-table-view .mui-table-view-divider:last-child, .mui-card .mui-table-view .mui-table-view-cell:last-child +{ + border-bottom-right-radius: 6px; + border-bottom-left-radius: 6px; +} +.mui-card .mui-table-view:before, .mui-card .mui-table-view:after +{ + height: 0; +} + +.mui-card > .mui-table-view > .mui-table-view-cell:last-child:before, .mui-card > .mui-table-view > .mui-table-view-cell:last-child:after +{ + height: 0; +} + +.mui-card-header, +.mui-card-footer +{ + position: relative; + + display: -webkit-box; + display: -webkit-flex; + display: flex; + + min-height: 44px; + padding: 10px 15px; + + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.mui-card-header .mui-card-link, +.mui-card-footer .mui-card-link +{ + line-height: 44px; + + position: relative; + + display: -webkit-box; + display: -webkit-flex; + display: flex; + + height: 44px; + margin-top: -10px; + margin-bottom: -10px; + + -webkit-transition-duration: .3s; + transition-duration: .3s; + text-decoration: none; + + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} + +.mui-card-header:after, +.mui-card-footer:before +{ + position: absolute; + top: 0; + right: 0; + left: 0; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #c8c7cc; +} + +.mui-card-header +{ + font-size: 17px; + + border-radius: 2px 2px 0 0; +} +.mui-card-header:after +{ + top: auto; + bottom: 0; +} +.mui-card-header > img:first-child +{ + font-size: 0; + line-height: 0; + + float: left; + + width: 34px; + height: 34px; +} + +.mui-card-footer +{ + color: #6d6d72; + border-radius: 0 0 2px 2px; +} + +.mui-card-content +{ + font-size: 14px; + + position: relative; +} + +.mui-card-content-inner +{ + position: relative; + + padding: 15px; +} + +.mui-card-media +{ + vertical-align: bottom; + + color: #fff; + background-position: center; + background-size: cover; +} + +.mui-card-header.mui-card-media +{ + display: block; + + padding: 10px; +} +.mui-card-header.mui-card-media .mui-media-body +{ + font-size: 14px; + font-weight: 500; + line-height: 17px; + + margin-bottom: 0; + margin-left: 44px; + + color: #333; +} +.mui-card-header.mui-card-media .mui-media-body p +{ + font-size: 13px; + + margin-bottom: 0; +} + +.mui-table-view +{ + position: relative; + + margin-top: 0; + margin-bottom: 0; + padding-left: 0; + + list-style: none; + + background-color: #fff; +} +.mui-table-view:after +{ + position: absolute; + right: 0; + bottom: 0; + left: 0; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #c8c7cc; +} +.mui-table-view:before +{ + position: absolute; + top: 0; + right: 0; + left: 0; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #c8c7cc; +} +.mui-table-view:before +{ + top: -1px; +} + +.mui-table-view-icon .mui-table-view-cell .mui-navigate-right .mui-icon +{ + font-size: 20px; + + margin-top: -1px; + margin-right: 5px; + margin-left: -5px; +} +.mui-table-view-icon .mui-table-view-cell:after +{ + left: 40px; +} + +.mui-table-view-chevron .mui-table-view-cell +{ + padding-right: 65px; +} +.mui-table-view-chevron .mui-table-view-cell > a:not(.mui-btn) +{ + margin-right: -65px; +} + +.mui-table-view-radio .mui-table-view-cell +{ + padding-right: 65px; +} +.mui-table-view-radio .mui-table-view-cell > a:not(.mui-btn) +{ + margin-right: -65px; +} +.mui-table-view-radio .mui-table-view-cell .mui-navigate-right:after +{ + font-size: 30px; + font-weight: 600; + + right: 9px; + + content: ''; + + color: #007aff; +} +.mui-table-view-radio .mui-table-view-cell.mui-selected .mui-navigate-right:after +{ + content: '\e472'; +} + +.mui-table-view-inverted +{ + color: #fff; + background: #333; +} +.mui-table-view-inverted:after +{ + position: absolute; + right: 0; + bottom: 0; + left: 0; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #222; +} +.mui-table-view-inverted:before +{ + position: absolute; + top: 0; + right: 0; + left: 0; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #222; +} +.mui-table-view-inverted .mui-table-view-cell:after +{ + position: absolute; + right: 0; + bottom: 0; + left: 15px; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #222; +} +.mui-table-view-inverted .mui-table-view-cell.mui-active +{ + background-color: #242424; +} +.mui-table-view-inverted .mui-table-view-cell > a:not(.mui-btn).mui-active +{ + background-color: #242424; +} + +.mui-table-view-cell +{ + position: relative; + + overflow: hidden; + + padding: 11px 15px; + + -webkit-touch-callout: none; +} +.mui-table-view-cell:after +{ + position: absolute; + right: 0; + bottom: 0; + left: 15px; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #c8c7cc; +} +.mui-table-view-cell.mui-radio input[type=radio], .mui-table-view-cell.mui-checkbox input[type=checkbox] +{ + top: 8px; +} +.mui-table-view-cell.mui-radio.mui-left, .mui-table-view-cell.mui-checkbox.mui-left +{ + padding-left: 58px; +} +.mui-table-view-cell.mui-active +{ + background-color: #eee; +} +.mui-table-view-cell:last-child:before, .mui-table-view-cell:last-child:after +{ + height: 0; +} +.mui-table-view-cell > a:not(.mui-btn) +{ + position: relative; + + display: block; + overflow: hidden; + + margin: -11px -15px; + padding: inherit; + + white-space: nowrap; + text-overflow: ellipsis; + + color: inherit; + /*&:active { + background-color: #eee; + }*/ +} +.mui-table-view-cell > a:not(.mui-btn).mui-active +{ + background-color: #eee; +} +.mui-table-view-cell p +{ + margin-bottom: 0; +} + +.mui-table-view-cell.mui-transitioning > .mui-slider-handle, .mui-table-view-cell.mui-transitioning > .mui-slider-left .mui-btn, .mui-table-view-cell.mui-transitioning > .mui-slider-right .mui-btn +{ + -webkit-transition: -webkit-transform 300ms ease; + transition: transform 300ms ease; +} +.mui-table-view-cell.mui-active > .mui-slider-handle +{ + background-color: #eee; +} +.mui-table-view-cell > .mui-slider-handle +{ + position: relative; + + background-color: #fff; +} +.mui-table-view-cell > .mui-slider-handle.mui-navigate-right:after, .mui-table-view-cell > .mui-slider-handle .mui-navigate-right:after +{ + right: 0; +} +.mui-table-view-cell > .mui-slider-handle, .mui-table-view-cell > .mui-slider-left .mui-btn, .mui-table-view-cell > .mui-slider-right .mui-btn +{ + -webkit-transition: -webkit-transform 0ms ease; + transition: transform 0ms ease; +} +.mui-table-view-cell > .mui-slider-left, .mui-table-view-cell > .mui-slider-right +{ + position: absolute; + top: 0; + + display: -webkit-box; + display: -webkit-flex; + display: flex; + + height: 100%; +} +.mui-table-view-cell > .mui-slider-left > .mui-btn, .mui-table-view-cell > .mui-slider-right > .mui-btn +{ + position: relative; + left: 0; + + display: -webkit-box; + display: -webkit-flex; + display: flex; + + padding: 0 30px; + + color: #fff; + border: 0; + border-radius: 0; + + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; +} +.mui-table-view-cell > .mui-slider-left > .mui-btn:after, .mui-table-view-cell > .mui-slider-right > .mui-btn:after +{ + position: absolute; + z-index: -1; + top: 0; + + width: 600%; + height: 100%; + + content: ''; + + background: inherit; +} +.mui-table-view-cell > .mui-slider-left > .mui-btn.mui-icon, .mui-table-view-cell > .mui-slider-right > .mui-btn.mui-icon +{ + font-size: 30px; +} +.mui-table-view-cell > .mui-slider-right +{ + right: 0; + + -webkit-transition: -webkit-transform 0ms ease; + transition: transform 0ms ease; + -webkit-transform: translateX(100%); + transform: translateX(100%); +} +.mui-table-view-cell > .mui-slider-left +{ + left: 0; + + -webkit-transition: -webkit-transform 0ms ease; + transition: transform 0ms ease; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); +} +.mui-table-view-cell > .mui-slider-left > .mui-btn:after +{ + right: 100%; + + margin-right: -1px; +} + +.mui-table-view-divider +{ + font-weight: 500; + + position: relative; + + margin-top: -1px; + margin-left: 0; + padding-top: 6px; + padding-bottom: 6px; + padding-left: 15px; + + color: #999; + background-color: #fafafa; +} +.mui-table-view-divider:after +{ + position: absolute; + right: 0; + bottom: 0; + left: 0; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #c8c7cc; +} +.mui-table-view-divider:before +{ + position: absolute; + top: 0; + right: 0; + left: 0; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #c8c7cc; +} + +.mui-table-view .mui-media, +.mui-table-view .mui-media-body +{ + overflow: hidden; +} + +.mui-table-view .mui-media-large .mui-media-object +{ + line-height: 80px; + + max-width: 80px; + height: 80px; +} +.mui-table-view .mui-media .mui-subtitle +{ + color: #000; +} +.mui-table-view .mui-media-object +{ + line-height: 42px; + + max-width: 42px; + height: 42px; +} +.mui-table-view .mui-media-object.mui-pull-left +{ + margin-right: 10px; +} +.mui-table-view .mui-media-object.mui-pull-right +{ + margin-left: 10px; +} +.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-object +{ + line-height: 29px; + + max-width: 29px; + height: 29px; + margin: -4px 0; +} +.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-object img +{ + line-height: 29px; + + max-width: 29px; + height: 29px; +} +.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-object.mui-pull-left +{ + margin-right: 10px; +} +.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-object .mui-icon +{ + font-size: 29px; +} +.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-body:after +{ + position: absolute; + right: 0; + bottom: 0; + left: 55px; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #c8c7cc; +} +.mui-table-view .mui-table-view-cell.mui-media-icon:after +{ + height: 0 !important; +} + +.mui-table-view.mui-unfold .mui-table-view-cell.mui-collapse .mui-table-view +{ + display: block; +} +.mui-table-view.mui-unfold .mui-table-view-cell.mui-collapse .mui-table-view:before, .mui-table-view.mui-unfold .mui-table-view-cell.mui-collapse .mui-table-view:after +{ + height: 0 !important; +} +.mui-table-view.mui-unfold .mui-table-view-cell.mui-media-icon.mui-collapse .mui-media-body:after +{ + position: absolute; + right: 0; + bottom: 0; + left: 70px; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #c8c7cc; +} + +.mui-table-view-cell > .mui-btn, +.mui-table-view-cell > .mui-badge, +.mui-table-view-cell > .mui-switch, +.mui-table-view-cell > a > .mui-btn, +.mui-table-view-cell > a > .mui-badge, +.mui-table-view-cell > a > .mui-switch +{ + position: absolute; + top: 50%; + right: 15px; + + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} +.mui-table-view-cell .mui-navigate-right > .mui-btn, +.mui-table-view-cell .mui-navigate-right > .mui-badge, +.mui-table-view-cell .mui-navigate-right > .mui-switch, +.mui-table-view-cell .mui-push-left > .mui-btn, +.mui-table-view-cell .mui-push-left > .mui-badge, +.mui-table-view-cell .mui-push-left > .mui-switch, +.mui-table-view-cell .mui-push-right > .mui-btn, +.mui-table-view-cell .mui-push-right > .mui-badge, +.mui-table-view-cell .mui-push-right > .mui-switch, +.mui-table-view-cell > a .mui-navigate-right > .mui-btn, +.mui-table-view-cell > a .mui-navigate-right > .mui-badge, +.mui-table-view-cell > a .mui-navigate-right > .mui-switch, +.mui-table-view-cell > a .mui-push-left > .mui-btn, +.mui-table-view-cell > a .mui-push-left > .mui-badge, +.mui-table-view-cell > a .mui-push-left > .mui-switch, +.mui-table-view-cell > a .mui-push-right > .mui-btn, +.mui-table-view-cell > a .mui-push-right > .mui-badge, +.mui-table-view-cell > a .mui-push-right > .mui-switch +{ + right: 35px; +} + +.mui-content > .mui-table-view:first-child +{ + margin-top: 15px; +} + +.mui-table-view-cell.mui-collapse .mui-table-view:before, .mui-table-view-cell.mui-collapse .mui-table-view:after +{ + height: 0; +} +.mui-table-view-cell.mui-collapse .mui-table-view .mui-table-view-cell:last-child:after +{ + height: 0; +} +.mui-table-view-cell.mui-collapse > .mui-navigate-right:after, .mui-table-view-cell.mui-collapse > .mui-push-right:after +{ + content: '\e581'; +} +.mui-table-view-cell.mui-collapse.mui-active +{ + margin-top: -1px; +} +.mui-table-view-cell.mui-collapse.mui-active .mui-table-view, .mui-table-view-cell.mui-collapse.mui-active .mui-collapse-content +{ + display: block; +} +.mui-table-view-cell.mui-collapse.mui-active > .mui-navigate-right:after, .mui-table-view-cell.mui-collapse.mui-active > .mui-push-right:after +{ + content: '\e580'; +} +.mui-table-view-cell.mui-collapse.mui-active .mui-table-view-cell > a:not(.mui-btn).mui-active +{ + margin-left: -31px; + padding-left: 47px; +} +.mui-table-view-cell.mui-collapse .mui-collapse-content +{ + position: relative; + + display: none; + overflow: hidden; + + margin: 11px -15px -11px; + padding: 8px 15px; + + -webkit-transition: height .35s ease; + -o-transition: height .35s ease; + transition: height .35s ease; + + background: white; +} +.mui-table-view-cell.mui-collapse .mui-collapse-content > .mui-input-group, .mui-table-view-cell.mui-collapse .mui-collapse-content > .mui-slider +{ + width: auto; + height: auto; + margin: -8px -15px; +} +.mui-table-view-cell.mui-collapse .mui-collapse-content > .mui-slider +{ + margin: -8px -16px; +} +.mui-table-view-cell.mui-collapse .mui-table-view +{ + display: none; + + margin-top: 11px; + margin-right: -15px; + margin-bottom: -11px; + margin-left: -15px; + + border: 0; +} +.mui-table-view-cell.mui-collapse .mui-table-view.mui-table-view-chevron +{ + margin-right: -65px; +} +.mui-table-view-cell.mui-collapse .mui-table-view .mui-table-view-cell +{ + padding-left: 31px; + + background-position: 31px 100%; +} +.mui-table-view-cell.mui-collapse .mui-table-view .mui-table-view-cell:after +{ + position: absolute; + right: 0; + bottom: 0; + left: 30px; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #c8c7cc; +} + +.mui-table-view.mui-grid-view +{ + font-size: 0; + + display: block; + + width: 100%; + padding: 0 10px 10px 0; + + white-space: normal; +} +.mui-table-view.mui-grid-view .mui-table-view-cell +{ + font-size: 17px; + + display: inline-block; + + margin-right: -4px; + padding: 10px 0 0 14px; + + text-align: center; + vertical-align: middle; + + background: none; +} +.mui-table-view.mui-grid-view .mui-table-view-cell .mui-media-object +{ + width: 100%; + max-width: 100%; + height: auto; +} +.mui-table-view.mui-grid-view .mui-table-view-cell > a:not(.mui-btn) +{ + margin: -10px 0 0 -14px; +} +.mui-table-view.mui-grid-view .mui-table-view-cell > a:not(.mui-btn):active, .mui-table-view.mui-grid-view .mui-table-view-cell > a:not(.mui-btn).mui-active +{ + background: none; +} +.mui-table-view.mui-grid-view .mui-table-view-cell .mui-media-body +{ + font-size: 15px; + line-height: 15px; + + display: block; + + width: 100%; + height: 15px; + margin-top: 8px; + + text-overflow: ellipsis; + + color: #333; +} +.mui-table-view.mui-grid-view .mui-table-view-cell:before, .mui-table-view.mui-grid-view .mui-table-view-cell:after +{ + height: 0; +} + +.mui-grid-view.mui-grid-9 +{ + margin: 0; + padding: 0; + + border-top: 1px solid #eee; + border-left: 1px solid #eee; + background-color: #f2f2f2; +} +.mui-grid-view.mui-grid-9:before, .mui-grid-view.mui-grid-9:after +{ + display: table; + + content: ' '; +} +.mui-grid-view.mui-grid-9:after +{ + clear: both; +} +.mui-grid-view.mui-grid-9:after +{ + position: static; +} +.mui-grid-view.mui-grid-9 .mui-table-view-cell +{ + margin: 0; + padding: 11px 15px; + + vertical-align: top; + + border-right: 1px solid #eee; + border-bottom: 1px solid #eee; +} +.mui-grid-view.mui-grid-9 .mui-table-view-cell.mui-active +{ + background-color: #eee; +} +.mui-grid-view.mui-grid-9 .mui-table-view-cell > a:not(.mui-btn) +{ + margin: 0; + padding: 10px 0; +} +.mui-grid-view.mui-grid-9:before +{ + height: 0; +} +.mui-grid-view.mui-grid-9 .mui-media +{ + color: #797979; +} +.mui-grid-view.mui-grid-9 .mui-media .mui-icon +{ + font-size: 2.4em; + + position: relative; +} + +.mui-slider-cell +{ + position: relative; +} +.mui-slider-cell > .mui-slider-handle +{ + z-index: 1; +} +.mui-slider-cell > .mui-slider-left, .mui-slider-cell > .mui-slider-right +{ + position: absolute; + z-index: 0; + top: 0; + bottom: 0; +} +.mui-slider-cell > .mui-slider-left +{ + left: 0; +} +.mui-slider-cell > .mui-slider-right +{ + right: 0; +} + +input, +textarea, +select +{ + font-family: 'Helvetica Neue', Helvetica, sans-serif; + font-size: 17px; + + -webkit-tap-highlight-color: transparent; + -webkit-tap-highlight-color: transparent; +} +input:focus, +textarea:focus, +select:focus +{ + -webkit-tap-highlight-color: transparent; + -webkit-tap-highlight-color: transparent; + -webkit-user-modify: read-write-plaintext-only; +} + +select, +textarea, +input[type='text'], +input[type='search'], +input[type='password'], +input[type='datetime'], +input[type='datetime-local'], +input[type='date'], +input[type='month'], +input[type='time'], +input[type='week'], +input[type='number'], +input[type='email'], +input[type='url'], +input[type='tel'], +input[type='color'] +{ + line-height: 21px; + + width: 100%; + height: 40px; + margin-bottom: 15px; + padding: 10px 15px; + + -webkit-user-select: text; + + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 3px; + outline: none; + background-color: #fff; + + -webkit-appearance: none; +} + +input[type=number]::-webkit-inner-spin-button, +input[type=number]::-webkit-outer-spin-button +{ + margin: 0; + + -webkit-appearance: none; +} + +input[type='search'] +{ + font-size: 16px; + + -webkit-box-sizing: border-box; + box-sizing: border-box; + height: 34px; + + text-align: center; + + border: 0; + border-radius: 6px; + background-color: rgba(0, 0, 0, .1); +} + +input[type='search']:focus +{ + text-align: left; +} + +textarea +{ + height: auto; + + resize: none; +} + +select +{ + font-size: 14px; + + height: auto; + margin-top: 1px; + + border: 0 !important; + background-color: #fff; +} +select:focus +{ + -webkit-user-modify: read-only; +} + +.mui-input-group +{ + position: relative; + + padding: 0; + + border: 0; + background-color: #fff; +} +.mui-input-group:after +{ + position: absolute; + right: 0; + bottom: 0; + left: 0; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #c8c7cc; +} +.mui-input-group:before +{ + position: absolute; + top: 0; + right: 0; + left: 0; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #c8c7cc; +} + +.mui-input-group input, +.mui-input-group textarea +{ + margin-bottom: 0; + + border: 0; + border-radius: 0; + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +.mui-input-group input[type='search'] +{ + background: none; +} + +.mui-input-group input:last-child +{ + background-image: none; +} + +.mui-input-row +{ + clear: left; + overflow: hidden; +} +.mui-input-row select +{ + font-size: 17px; + + height: 37px; + padding: 0; +} + +.mui-input-row:last-child, +.mui-input-row label + input, .mui-input-row .mui-btn + input +{ + background: none; +} + +.mui-input-group .mui-input-row +{ + height: 40px; +} +.mui-input-group .mui-input-row:after +{ + position: absolute; + right: 0; + bottom: 0; + left: 15px; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #c8c7cc; +} + +.mui-input-row label +{ + font-family: 'Helvetica Neue', Helvetica, sans-serif; + line-height: 1.1; + + float: left; + + width: 35%; + padding: 11px 15px; +} + +.mui-input-row label ~ input, .mui-input-row label ~ select, .mui-input-row label ~ textarea +{ + float: right; + + width: 65%; + margin-bottom: 0; + padding-left: 0; + + border: 0; +} + +.mui-input-row .mui-btn +{ + line-height: 1.1; + + float: right; + + width: 15%; + padding: 10px 15px; +} + +.mui-input-row .mui-btn ~ input, .mui-input-row .mui-btn ~ select, .mui-input-row .mui-btn ~ textarea +{ + float: left; + + width: 85%; + margin-bottom: 0; + padding-left: 0; + + border: 0; +} + +.mui-button-row +{ + position: relative; + + padding-top: 5px; + + text-align: center; +} + +.mui-input-group .mui-button-row +{ + height: 45px; +} + +.mui-input-row +{ + position: relative; +} +.mui-input-row.mui-input-range +{ + overflow: visible; + + padding-right: 20px; +} +.mui-input-row .mui-inline +{ + padding: 8px 0; +} +.mui-input-row .mui-input-clear ~ .mui-icon-clear, .mui-input-row .mui-input-speech ~ .mui-icon-speech, .mui-input-row .mui-input-password ~ .mui-icon-eye +{ + font-size: 20px; + + position: absolute; + z-index: 1; + top: 10px; + right: 0; + + width: 38px; + height: 38px; + + text-align: center; + + color: #999; +} +.mui-input-row .mui-input-clear ~ .mui-icon-clear.mui-active, .mui-input-row .mui-input-speech ~ .mui-icon-speech.mui-active, .mui-input-row .mui-input-password ~ .mui-icon-eye.mui-active +{ + color: #007aff; +} +.mui-input-row .mui-input-speech ~ .mui-icon-speech +{ + font-size: 24px; + + top: 8px; +} +.mui-input-row .mui-input-clear ~ .mui-icon-clear ~ .mui-icon-speech +{ + display: none; +} +.mui-input-row .mui-input-clear ~ .mui-icon-clear.mui-hidden ~ .mui-icon-speech +{ + display: inline-block; +} +.mui-input-row .mui-icon-speech ~ .mui-placeholder +{ + right: 38px; +} +.mui-input-row.mui-search .mui-icon-clear +{ + top: 7px; +} +.mui-input-row.mui-search .mui-icon-speech +{ + top: 5px; +} + +.mui-radio, .mui-checkbox +{ + position: relative; +} +.mui-radio label, .mui-checkbox label +{ + display: inline-block; + float: none; + + width: 100%; + padding-right: 58px; +} + +.mui-radio.mui-left input[type='radio'], .mui-checkbox.mui-left input[type='checkbox'] +{ + left: 20px; +} + +.mui-radio.mui-left label, .mui-checkbox.mui-left label +{ + padding-right: 15px; + padding-left: 58px; +} + +.mui-radio input[type='radio'], .mui-checkbox input[type='checkbox'] +{ + position: absolute; + top: 4px; + right: 20px; + + display: inline-block; + + width: 28px; + height: 26px; + + border: 0; + outline: 0 !important; + background-color: transparent; + + -webkit-appearance: none; +} +.mui-radio input[type='radio'][disabled]:before, .mui-checkbox input[type='checkbox'][disabled]:before +{ + opacity: .3; +} +.mui-radio input[type='radio']:before, .mui-checkbox input[type='checkbox']:before +{ + font-family: Muiicons; + font-size: 28px; + font-weight: normal; + line-height: 1; + + text-decoration: none; + + color: #aaa; + border-radius: 0; + background: none; + + -webkit-font-smoothing: antialiased; +} +.mui-radio input[type='radio']:checked:before, .mui-checkbox input[type='checkbox']:checked:before +{ + color: #007aff; +} + +.mui-radio.mui-disabled label, .mui-radio label.mui-disabled, .mui-checkbox.mui-disabled label, .mui-checkbox label.mui-disabled +{ + opacity: .4; +} + +.mui-radio input[type='radio']:before +{ + content: '\e411'; +} + +.mui-radio input[type='radio']:checked:before +{ + content: '\e441'; +} + +.mui-checkbox input[type='checkbox']:before +{ + content: '\e411'; +} + +.mui-checkbox input[type='checkbox']:checked:before +{ + content: '\e442'; +} + +.mui-select +{ + position: relative; +} + +.mui-select:before +{ + font-family: Muiicons; + + position: absolute; + top: 8px; + right: 21px; + + content: '\e581'; + + color: rgba(170, 170, 170, .6); +} + +.mui-input-row .mui-switch +{ + float: right; + + margin-top: 5px; + margin-right: 20px; +} + +.mui-input-range +{ + /*input[type="range"] { + -webkit-appearance: none; + background: #999; + height: 36px; + border-radius: 1px; + overflow: hidden; + margin-top: 2px; + margin-bottom: 2px; + outline:none; + position:relative; + width:100%; + }*/ + /*input[type='range']::-webkit-slider-thumb { + -webkit-appearance: none!important; + opacity: 0.5; + height:28px; + width:28px; + border-radius: 50%; + background:#00b7fb; + position: relative; + pointer-events: none; + -webkit-box-sizing: border-box; + box-sizing: border-box; + &:before{ + position: absolute; + top: 13px; + left: -2000px; + width: 2000px; + height: 2px; + background: #00b7fb; + content:' '; + } + }*/ +} +.mui-input-range input[type='range'] +{ + position: relative; + + width: 100%; + height: 2px; + margin: 17px 0; + padding: 0; + + cursor: pointer; + + border: 0; + border-radius: 3px; + outline: none; + background-color: #999; + + -webkit-appearance: none !important; +} +.mui-input-range input[type='range']::-webkit-slider-thumb +{ + width: 28px; + height: 28px; + + border-color: #0062cc; + border-radius: 50%; + background-color: #007aff; + background-clip: padding-box; + + -webkit-appearance: none !important; +} +.mui-input-range label ~ input[type='range'] +{ + width: 65%; +} +.mui-input-range .mui-tooltip +{ + font-size: 36px; + line-height: 64px; + + position: absolute; + z-index: 1; + top: -70px; + + width: 64px; + height: 64px; + + text-align: center; + + opacity: .8; + color: #333; + border: 1px solid #ddd; + border-radius: 6px; + background-color: #fff; + text-shadow: 0 1px 0 #f3f3f3; +} + +.mui-search +{ + position: relative; +} +.mui-search input[type='search'] +{ + padding-left: 30px; +} +.mui-search .mui-placeholder +{ + font-size: 16px; + line-height: 34px; + + position: absolute; + z-index: 1; + top: 0; + right: 0; + bottom: 0; + left: 0; + + display: inline-block; + + height: 34px; + + text-align: center; + + color: #999; + border: 0; + border-radius: 6px; + background: none; +} +.mui-search .mui-placeholder .mui-icon +{ + font-size: 20px; + + color: #333; +} +.mui-search:before +{ + font-family: Muiicons; + font-size: 20px; + font-weight: normal; + + position: absolute; + top: 50%; + right: 50%; + + display: none; + + margin-top: -18px; + margin-right: 31px; + + content: '\e466'; +} +.mui-search.mui-active:before +{ + font-size: 20px; + + right: auto; + left: 5px; + + display: block; + + margin-right: 0; +} +.mui-search.mui-active input[type='search'] +{ + text-align: left; +} +.mui-search.mui-active .mui-placeholder +{ + display: none; +} + +.mui-segmented-control +{ + font-size: 15px; + font-weight: 400; + + position: relative; + + display: table; + overflow: hidden; + + width: 100%; + + table-layout: fixed; + + border: 1px solid #007aff; + border-radius: 3px; + background-color: transparent; + + -webkit-touch-callout: none; +} +.mui-segmented-control.mui-segmented-control-vertical +{ + border-collapse: collapse; + + border-width: 0; + border-radius: 0; +} +.mui-segmented-control.mui-segmented-control-vertical .mui-control-item +{ + display: block; + + border-bottom: 1px solid #c8c7cc; + border-left-width: 0; +} +.mui-segmented-control.mui-scroll-wrapper +{ + height: 38px; +} +.mui-segmented-control.mui-scroll-wrapper .mui-scroll +{ + width: auto; + height: 40px; + + white-space: nowrap; +} +.mui-segmented-control.mui-scroll-wrapper .mui-control-item +{ + display: inline-block; + + width: auto; + padding: 0 20px; + + border: 0; +} +.mui-segmented-control .mui-control-item +{ + line-height: 38px; + + display: table-cell; + overflow: hidden; + + width: 1%; + + -webkit-transition: background-color .1s linear; + transition: background-color .1s linear; + text-align: center; + white-space: nowrap; + text-overflow: ellipsis; + + color: #007aff; + border-color: #007aff; + border-left: 1px solid #007aff; +} +.mui-segmented-control .mui-control-item:first-child +{ + border-left-width: 0; +} +.mui-segmented-control .mui-control-item.mui-active +{ + color: #fff; + background-color: #007aff; +} +.mui-segmented-control.mui-segmented-control-inverted +{ + width: 100%; + + border: 0; + border-radius: 0; +} +.mui-segmented-control.mui-segmented-control-inverted.mui-segmented-control-vertical .mui-control-item +{ + border-bottom: 1px solid #c8c7cc; +} +.mui-segmented-control.mui-segmented-control-inverted.mui-segmented-control-vertical .mui-control-item.mui-active +{ + border-bottom: 1px solid #c8c7cc; +} +.mui-segmented-control.mui-segmented-control-inverted .mui-control-item +{ + color: inherit; + border: 0; +} +.mui-segmented-control.mui-segmented-control-inverted .mui-control-item.mui-active +{ + color: #007aff; + border-bottom: 2px solid #007aff; + background: none; +} +.mui-segmented-control.mui-segmented-control-inverted ~ .mui-slider-progress-bar +{ + background-color: #007aff; +} + +.mui-segmented-control-positive +{ + border: 1px solid #4cd964; +} +.mui-segmented-control-positive .mui-control-item +{ + color: #4cd964; + border-color: inherit; +} +.mui-segmented-control-positive .mui-control-item.mui-active +{ + color: #fff; + background-color: #4cd964; +} +.mui-segmented-control-positive.mui-segmented-control-inverted .mui-control-item.mui-active +{ + color: #4cd964; + border-bottom: 2px solid #4cd964; + background: none; +} +.mui-segmented-control-positive.mui-segmented-control-inverted ~ .mui-slider-progress-bar +{ + background-color: #4cd964; +} + +.mui-segmented-control-negative +{ + border: 1px solid #dd524d; +} +.mui-segmented-control-negative .mui-control-item +{ + color: #dd524d; + border-color: inherit; +} +.mui-segmented-control-negative .mui-control-item.mui-active +{ + color: #fff; + background-color: #dd524d; +} +.mui-segmented-control-negative.mui-segmented-control-inverted .mui-control-item.mui-active +{ + color: #dd524d; + border-bottom: 2px solid #dd524d; + background: none; +} +.mui-segmented-control-negative.mui-segmented-control-inverted ~ .mui-slider-progress-bar +{ + background-color: #dd524d; +} + +.mui-control-content +{ + position: relative; + + display: none; +} +.mui-control-content.mui-active +{ + display: block; +} + +.mui-popover +{ + position: absolute; + z-index: 999; + + display: none; + + width: 280px; + + -webkit-transition: opacity .3s; + transition: opacity .3s; + -webkit-transition-property: opacity; + transition-property: opacity; + -webkit-transform: none; + transform: none; + + opacity: 0; + border-radius: 7px; + background-color: #f7f7f7; + -webkit-box-shadow: 0 0 15px rgba(0, 0, 0, .1); + box-shadow: 0 0 15px rgba(0, 0, 0, .1); +} +.mui-popover .mui-popover-arrow +{ + position: absolute; + z-index: 1000; + top: -25px; + left: 0; + + overflow: hidden; + + width: 26px; + height: 26px; +} +.mui-popover .mui-popover-arrow:after +{ + position: absolute; + top: 19px; + left: 0; + + width: 26px; + height: 26px; + + content: ' '; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + + border-radius: 3px; + background: #f7f7f7; +} +.mui-popover .mui-popover-arrow.mui-bottom +{ + top: 100%; + left: -26px; + + margin-top: -1px; +} +.mui-popover .mui-popover-arrow.mui-bottom:after +{ + top: -19px; + left: 0; +} +.mui-popover.mui-popover-action +{ + bottom: 0; + + width: 100%; + + -webkit-transition: -webkit-transform .3s, opacity .3s; + transition: transform .3s, opacity .3s; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + + border-radius: 0; + background: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.mui-popover.mui-popover-action .mui-popover-arrow +{ + display: none; +} +.mui-popover.mui-popover-action.mui-popover-bottom +{ + position: fixed; +} +.mui-popover.mui-popover-action.mui-active +{ + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.mui-popover.mui-popover-action .mui-table-view +{ + margin: 8px; + + text-align: center; + + color: #007aff; + border-radius: 4px; +} +.mui-popover.mui-popover-action .mui-table-view .mui-table-view-cell:after +{ + position: absolute; + right: 0; + bottom: 0; + left: 0; + + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + + background-color: #c8c7cc; +} +.mui-popover.mui-popover-action .mui-table-view small +{ + font-weight: 400; + line-height: 1.3; + + display: block; +} +.mui-popover.mui-active +{ + display: block; + + opacity: 1; +} +.mui-popover .mui-bar ~ .mui-table-view +{ + padding-top: 44px; +} + +.mui-backdrop +{ + position: fixed; + z-index: 998; + top: 0; + right: 0; + bottom: 0; + left: 0; + + background-color: rgba(0, 0, 0, .3); +} + +.mui-bar-backdrop.mui-backdrop +{ + bottom: 50px; + + background: none; +} + +.mui-backdrop-action.mui-backdrop +{ + background-color: rgba(0, 0, 0, .3); +} + +.mui-bar-backdrop.mui-backdrop, .mui-backdrop-action.mui-backdrop +{ + opacity: 0; +} +.mui-bar-backdrop.mui-backdrop.mui-active, .mui-backdrop-action.mui-backdrop.mui-active +{ + -webkit-transition: all .4s ease; + transition: all .4s ease; + + opacity: 1; +} + +.mui-popover .mui-btn-block +{ + margin-bottom: 5px; +} +.mui-popover .mui-btn-block:last-child +{ + margin-bottom: 0; +} + +.mui-popover .mui-bar +{ + -webkit-box-shadow: none; + box-shadow: none; +} + +.mui-popover .mui-bar-nav +{ + border-bottom: 1px solid rgba(0, 0, 0, .15); + border-top-left-radius: 12px; + border-top-right-radius: 12px; + -webkit-box-shadow: none; + box-shadow: none; +} + +.mui-popover .mui-scroll-wrapper +{ + margin: 7px 0; + + border-radius: 7px; + background-clip: padding-box; +} + +.mui-popover .mui-scroll .mui-table-view +{ + max-height: none; +} + +.mui-popover .mui-table-view +{ + overflow: auto; + + max-height: 300px; + margin-bottom: 0; + + border-radius: 7px; + background-color: #f7f7f7; + background-image: none; + + -webkit-overflow-scrolling: touch; +} +.mui-popover .mui-table-view:before, .mui-popover .mui-table-view:after +{ + height: 0; +} +.mui-popover .mui-table-view .mui-table-view-cell:first-child, +.mui-popover .mui-table-view .mui-table-view-cell:first-child > a:not(.mui-btn) +{ + border-top-left-radius: 12px; + border-top-right-radius: 12px; +} +.mui-popover .mui-table-view .mui-table-view-cell:last-child, +.mui-popover .mui-table-view .mui-table-view-cell:last-child > a:not(.mui-btn) +{ + border-bottom-right-radius: 12px; + border-bottom-left-radius: 12px; +} + +.mui-popover.mui-bar-popover .mui-table-view +{ + width: 106px; +} +.mui-popover.mui-bar-popover .mui-table-view .mui-table-view-cell +{ + padding: 11px 15px 11px 15px; + + background-position: 0 100%; +} +.mui-popover.mui-bar-popover .mui-table-view .mui-table-view-cell > a:not(.mui-btn) +{ + margin: -11px -15px -11px -15px; +} + +.mui-popup-backdrop +{ + position: fixed; + z-index: 998; + top: 0; + right: 0; + bottom: 0; + left: 0; + + -webkit-transition-duration: 400ms; + transition-duration: 400ms; + + opacity: 0; + background: rgba(0, 0, 0, .4); +} +.mui-popup-backdrop.mui-active +{ + opacity: 1; +} + +.mui-popup +{ + position: fixed; + z-index: 10000; + top: 50%; + left: 50%; + + display: none; + overflow: hidden; + + width: 270px; + + -webkit-transition-property: -webkit-transform,opacity; + transition-property: transform,opacity; + -webkit-transform: translate3d(-50%, -50%, 0) scale(1.185); + transform: translate3d(-50%, -50%, 0) scale(1.185); + text-align: center; + + opacity: 0; + color: #000; + border-radius: 13px; +} +.mui-popup.mui-popup-in +{ + display: block; + + -webkit-transition-duration: 400ms; + transition-duration: 400ms; + -webkit-transform: translate3d(-50%, -50%, 0) scale(1); + transform: translate3d(-50%, -50%, 0) scale(1); + + opacity: 1; +} +.mui-popup.mui-popup-out +{ + -webkit-transition-duration: 400ms; + transition-duration: 400ms; + -webkit-transform: translate3d(-50%, -50%, 0) scale(1); + transform: translate3d(-50%, -50%, 0) scale(1); + + opacity: 0; +} + +.mui-popup-inner +{ + position: relative; + + padding: 15px; + + border-radius: 13px 13px 0 0; + background: rgba(255, 255, 255, .95); +} +.mui-popup-inner:after +{ + position: absolute; + z-index: 15; + top: auto; + right: auto; + bottom: 0; + left: 0; + + display: block; + + width: 100%; + height: 1px; + + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; + + background-color: rgba(0, 0, 0, .2); +} + +.mui-popup-title +{ + font-size: 18px; + font-weight: 500; + + text-align: center; +} + +.mui-popup-title + .mui-popup-text +{ + font-family: inherit; + font-size: 14px; + + margin: 5px 0 0; +} + +.mui-popup-buttons +{ + position: relative; + + display: -webkit-box; + display: -webkit-flex; + display: flex; + + height: 44px; + + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.mui-popup-button +{ + font-size: 17px; + line-height: 44px; + + position: relative; + + display: block; + overflow: hidden; + + box-sizing: border-box; + width: 100%; + height: 44px; + padding: 0 5px; + + cursor: pointer; + text-align: center; + white-space: nowrap; + text-overflow: ellipsis; + + color: #007aff; + background: rgba(255, 255, 255, .95); + + -webkit-box-flex: 1; +} +.mui-popup-button:after +{ + position: absolute; + z-index: 15; + top: 0; + right: 0; + bottom: auto; + left: auto; + + display: block; + + width: 1px; + height: 100%; + + content: ''; + -webkit-transform: scaleX(.5); + transform: scaleX(.5); + -webkit-transform-origin: 100% 50%; + transform-origin: 100% 50%; + + background-color: rgba(0, 0, 0, .2); +} +.mui-popup-button:first-child +{ + border-radius: 0 0 0 13px; +} +.mui-popup-button:first-child:last-child +{ + border-radius: 0 0 13px 13px; +} +.mui-popup-button:last-child +{ + border-radius: 0 0 13px 0; +} +.mui-popup-button:last-child:after +{ + display: none; +} +.mui-popup-button.mui-popup-button-bold +{ + font-weight: 600; +} + +.mui-popup-input input +{ + font-size: 14px; + + width: 100%; + height: 26px; + margin: 15px 0 0; + padding: 0 5px; + + border: 1px solid rgba(0, 0, 0, .3); + border-radius: 0; + background: #fff; +} + +.mui-plus.mui-android .mui-popup-backdrop +{ + -webkit-transition-duration: 1ms; + transition-duration: 1ms; +} + +.mui-plus.mui-android .mui-popup +{ + -webkit-transition-duration: 1ms; + transition-duration: 1ms; + -webkit-transform: translate3d(-50%, -50%, 0) scale(1); + transform: translate3d(-50%, -50%, 0) scale(1); +} + +/* === Progress Bar === */ +.mui-progressbar +{ + position: relative; + + display: block; + overflow: hidden; + + width: 100%; + height: 2px; + + -webkit-transform-origin: center top; + transform-origin: center top; + vertical-align: middle; + + border-radius: 2px; + background: #b6b6b6; + + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; +} +.mui-progressbar span +{ + position: absolute; + top: 0; + left: 0; + + width: 100%; + height: 100%; + + -webkit-transition: 150ms; + transition: 150ms; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + + background: #007aff; +} +.mui-progressbar.mui-progressbar-infinite:before +{ + position: absolute; + top: 0; + left: 0; + + width: 100%; + height: 100%; + + content: ''; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transform-origin: left center; + transform-origin: left center; + -webkit-animation: mui-progressbar-infinite 1s linear infinite; + animation: mui-progressbar-infinite 1s linear infinite; + + background: #007aff; +} + +body > .mui-progressbar +{ + position: absolute; + z-index: 10000; + top: 44px; + left: 0; + + border-radius: 0; +} + +.mui-progressbar-in +{ + -webkit-animation: mui-progressbar-in 300ms forwards; + animation: mui-progressbar-in 300ms forwards; +} + +.mui-progressbar-out +{ + -webkit-animation: mui-progressbar-out 300ms forwards; + animation: mui-progressbar-out 300ms forwards; +} + +@-webkit-keyframes mui-progressbar-in +{ + from + { + -webkit-transform: scaleY(0); + + opacity: 0; + } + + to + { + -webkit-transform: scaleY(1); + + opacity: 1; + } +} +@keyframes mui-progressbar-in +{ + from + { + transform: scaleY(0); + + opacity: 0; + } + + to + { + transform: scaleY(1); + + opacity: 1; + } +} +@-webkit-keyframes mui-progressbar-out +{ + from + { + -webkit-transform: scaleY(1); + + opacity: 1; + } + + to + { + -webkit-transform: scaleY(0); + + opacity: 0; + } +} +@keyframes mui-progressbar-out +{ + from + { + transform: scaleY(1); + + opacity: 1; + } + + to + { + transform: scaleY(0); + + opacity: 0; + } +} +@-webkit-keyframes mui-progressbar-infinite +{ + 0% + { + -webkit-transform: translate3d(-50%, 0, 0) scaleX(.5); + } + + 100% + { + -webkit-transform: translate3d(100%, 0, 0) scaleX(.5); + } +} +@keyframes mui-progressbar-infinite +{ + 0% + { + transform: translate3d(-50%, 0, 0) scaleX(.5); + } + + 100% + { + transform: translate3d(100%, 0, 0) scaleX(.5); + } +} +.mui-pagination +{ + display: inline-block; + + margin: 0 auto; + padding-left: 0; + + border-radius: 6px; +} +.mui-pagination > li +{ + display: inline; +} +.mui-pagination > li > a, +.mui-pagination > li > span +{ + line-height: 1.428571429; + + position: relative; + + float: left; + + margin-left: -1px; + padding: 6px 12px; + + text-decoration: none; + + color: #007aff; + border: 1px solid #ddd; + background-color: #fff; +} +.mui-pagination > li:first-child > a, +.mui-pagination > li:first-child > span +{ + margin-left: 0; + + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; + background-clip: padding-box; +} +.mui-pagination > li:last-child > a, +.mui-pagination > li:last-child > span +{ + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; + background-clip: padding-box; +} +.mui-pagination > li:active > a, .mui-pagination > li:active > a:active, +.mui-pagination > li:active > span, +.mui-pagination > li:active > span:active, +.mui-pagination > li.mui-active > a, +.mui-pagination > li.mui-active > a:active, +.mui-pagination > li.mui-active > span, +.mui-pagination > li.mui-active > span:active +{ + z-index: 2; + + cursor: default; + + color: #fff; + border-color: #007aff; + background-color: #007aff; +} +.mui-pagination > li.mui-disabled > span, +.mui-pagination > li.mui-disabled > span:active, +.mui-pagination > li.mui-disabled > a, +.mui-pagination > li.mui-disabled > a:active +{ + opacity: .6; + color: #777; + border: 1px solid #ddd; + background-color: #fff; +} + +.mui-pagination-lg > li > a, +.mui-pagination-lg > li > span +{ + font-size: 18px; + + padding: 10px 16px; +} + +.mui-pagination-sm > li > a, +.mui-pagination-sm > li > span +{ + font-size: 12px; + + padding: 5px 10px; +} + +.mui-pager +{ + padding-left: 0; + + list-style: none; + + text-align: center; +} +.mui-pager:before, .mui-pager:after +{ + display: table; + + content: ' '; +} +.mui-pager:after +{ + clear: both; +} +.mui-pager li +{ + display: inline; +} +.mui-pager li > a, +.mui-pager li > span +{ + display: inline-block; + + padding: 5px 14px; + + border: 1px solid #ddd; + border-radius: 6px; + background-color: #fff; + background-clip: padding-box; +} +.mui-pager li:active > a, .mui-pager li:active > span, .mui-pager li.mui-active > a, .mui-pager li.mui-active > span +{ + cursor: default; + text-decoration: none; + + color: #fff; + border-color: #007aff; + background-color: #007aff; +} +.mui-pager .mui-next > a, +.mui-pager .mui-next > span +{ + float: right; +} +.mui-pager .mui-previous > a, +.mui-pager .mui-previous > span +{ + float: left; +} +.mui-pager .mui-disabled > a, +.mui-pager .mui-disabled > a:active, +.mui-pager .mui-disabled > span, +.mui-pager .mui-disabled > span:active +{ + opacity: .6; + color: #777; + border: 1px solid #ddd; + background-color: #fff; +} + +.mui-modal +{ + position: fixed; + z-index: 999; + top: 0; + + overflow: hidden; + + width: 100%; + min-height: 100%; + + -webkit-transition: -webkit-transform .25s, opacity 1ms .25s; + transition: transform .25s, opacity 1ms .25s; + -webkit-transition-timing-function: cubic-bezier(.1, .5, .1, 1); + transition-timing-function: cubic-bezier(.1, .5, .1, 1); + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + + opacity: 0; + background-color: #fff; +} +.mui-modal.mui-active +{ + height: 100%; + + -webkit-transition: -webkit-transform .25s; + transition: transform .25s; + -webkit-transition-timing-function: cubic-bezier(.1, .5, .1, 1); + transition-timing-function: cubic-bezier(.1, .5, .1, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + + opacity: 1; +} + +.mui-android .mui-modal .mui-bar +{ + position: static; +} + +.mui-android .mui-modal .mui-bar-nav ~ .mui-content +{ + padding-top: 0; +} + +.mui-slider +{ + position: relative; + z-index: 1; + + overflow: hidden; + + width: 100%; +} +.mui-slider .mui-segmented-control.mui-segmented-control-inverted .mui-control-item.mui-active +{ + border-bottom: 0; +} +.mui-slider .mui-segmented-control.mui-segmented-control-inverted ~ .mui-slider-group .mui-slider-item +{ + border-top: 1px solid #c8c7cc; + border-bottom: 1px solid #c8c7cc; +} +.mui-slider .mui-slider-group +{ + font-size: 0; + + position: relative; + + -webkit-transition: all 0s linear; + transition: all 0s linear; + white-space: nowrap; +} +.mui-slider .mui-slider-group .mui-slider-item +{ + font-size: 14px; + + position: relative; + + display: inline-block; + + width: 100%; + height: 100%; + + vertical-align: top; + white-space: normal; +} +.mui-slider .mui-slider-group .mui-slider-item > a:not(.mui-control-item) +{ + line-height: 0; + + position: relative; + + display: block; +} +.mui-slider .mui-slider-group .mui-slider-item img +{ + width: 100%; +} +.mui-slider .mui-slider-group .mui-slider-item .mui-table-view:before, .mui-slider .mui-slider-group .mui-slider-item .mui-table-view:after +{ + height: 0; +} +.mui-slider .mui-slider-group.mui-slider-loop +{ + -webkit-transform: translate(-100%, 0px); + transform: translate(-100%, 0px); +} + +.mui-slider-title +{ + line-height: 30px; + + position: absolute; + bottom: 0; + left: 0; + + width: 100%; + height: 30px; + margin: 0; + + text-align: left; + text-indent: 12px; + + opacity: .8; + background-color: #000; +} + +.mui-slider-indicator +{ + position: absolute; + bottom: 8px; + + width: 100%; + + text-align: center; + + background: none; +} +.mui-slider-indicator.mui-segmented-control +{ + position: relative; + bottom: auto; +} +.mui-slider-indicator .mui-indicator +{ + display: inline-block; + + width: 6px; + height: 6px; + margin: 1px 6px; + + cursor: pointer; + + border-radius: 50%; + background: #aaa; + -webkit-box-shadow: 0 0 1px 1px rgba(130, 130, 130, .7); + box-shadow: 0 0 1px 1px rgba(130, 130, 130, .7); +} +.mui-slider-indicator .mui-active.mui-indicator +{ + background: #fff; +} +.mui-slider-indicator .mui-icon +{ + font-size: 20px; + line-height: 30px; + + width: 40px; + height: 30px; + margin: 3px; + + text-align: center; + + border: 1px solid #ddd; +} +.mui-slider-indicator .mui-number +{ + line-height: 32px; + + display: inline-block; + + width: 58px; +} +.mui-slider-indicator .mui-number span +{ + color: #ff5053; +} + +.mui-slider-progress-bar +{ + z-index: 1; + + height: 2px; + + -webkit-transform: translateZ(0); + transform: translateZ(0); +} + +.mui-switch +{ + position: relative; + + display: block; + + width: 74px; + height: 30px; + + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; + -webkit-transition-duration: .2s; + transition-duration: .2s; + -webkit-transition-property: background-color, border; + transition-property: background-color, border; + + border: 2px solid #ddd; + border-radius: 20px; + background-color: #fff; + background-clip: padding-box; +} +.mui-switch.mui-disabled +{ + opacity: .3; +} +.mui-switch .mui-switch-handle +{ + position: absolute; + z-index: 1; + top: -1px; + left: -1px; + + width: 28px; + height: 28px; + + -webkit-transition: .2s ease-in-out; + transition: .2s ease-in-out; + -webkit-transition-property: -webkit-transform, width,left; + transition-property: transform, width,left; + + border-radius: 16px; + background-color: #fff; + background-clip: padding-box; + -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, .4); + box-shadow: 0 2px 5px rgba(0, 0, 0, .4); +} +.mui-switch:before +{ + font-size: 13px; + + position: absolute; + top: 3px; + right: 11px; + + content: 'Off'; + text-transform: uppercase; + + color: #999; +} +.mui-switch.mui-dragging +{ + border-color: #f7f7f7; + background-color: #f7f7f7; +} +.mui-switch.mui-dragging .mui-switch-handle +{ + width: 38px; +} +.mui-switch.mui-dragging.mui-active .mui-switch-handle +{ + left: -11px; + + width: 38px; +} +.mui-switch.mui-active +{ + border-color: #4cd964; + background-color: #4cd964; +} +.mui-switch.mui-active .mui-switch-handle +{ + -webkit-transform: translate(43px, 0); + transform: translate(43px, 0); +} +.mui-switch.mui-active:before +{ + right: auto; + left: 15px; + + content: 'On'; + + color: #fff; +} +.mui-switch input[type='checkbox'] +{ + display: none; +} + +.mui-switch-mini +{ + width: 47px; +} +.mui-switch-mini:before +{ + display: none; +} +.mui-switch-mini.mui-active .mui-switch-handle +{ + -webkit-transform: translate(16px, 0); + transform: translate(16px, 0); +} + +.mui-switch-blue.mui-active +{ + border: 2px solid #007aff; + background-color: #007aff; +} + +.mui-content.mui-fade +{ + left: 0; + + opacity: 0; +} +.mui-content.mui-fade.mui-in +{ + opacity: 1; +} +.mui-content.mui-sliding +{ + z-index: 2; + + -webkit-transition: -webkit-transform .4s; + transition: transform .4s; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.mui-content.mui-sliding.mui-left +{ + z-index: 1; + + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); +} +.mui-content.mui-sliding.mui-right +{ + z-index: 3; + + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); +} + +.mui-navigate-right:after, +.mui-push-left:after, +.mui-push-right:after +{ + font-family: Muiicons; + font-size: inherit; + line-height: 1; + + position: absolute; + top: 50%; + + display: inline-block; + + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + text-decoration: none; + + color: #bbb; + + -webkit-font-smoothing: antialiased; +} + +.mui-push-left:after +{ + left: 15px; + + content: '\e582'; +} + +.mui-navigate-right:after, +.mui-push-right:after +{ + right: 15px; + + content: '\e583'; +} + +.mui-pull-top-pocket, .mui-pull-bottom-pocket +{ + position: absolute; + left: 0; + + display: block; + visibility: hidden; + overflow: hidden; + + width: 100%; + height: 50px; +} + +.mui-plus-pullrefresh .mui-pull-top-pocket, .mui-plus-pullrefresh .mui-pull-bottom-pocket +{ + display: none; + visibility: visible; +} + +.mui-pull-top-pocket +{ + top: 0; +} + +.mui-bar-nav ~ .mui-content .mui-pull-top-pocket +{ + top: 44px; +} + +.mui-bar-nav ~ .mui-bar-header-secondary ~ .mui-content .mui-pull-top-pocket +{ + top: 88px; +} + +.mui-pull-bottom-pocket +{ + position: relative; + bottom: 0; + + height: 40px; +} +.mui-pull-bottom-pocket .mui-pull-loading +{ + visibility: hidden; +} +.mui-pull-bottom-pocket .mui-pull-loading.mui-in +{ + display: inline-block; +} + +.mui-pull +{ + font-weight: bold; + + position: absolute; + right: 0; + bottom: 10px; + left: 0; + + text-align: center; + + color: #777; +} + +.mui-pull-loading +{ + margin-right: 10px; + + -webkit-transition: -webkit-transform .4s; + transition: transform .4s; + -webkit-transition-duration: 400ms; + transition-duration: 400ms; + vertical-align: middle; +} + +.mui-pull-loading.mui-reverse +{ + -webkit-transform: rotate(180deg) translateZ(0); + transform: rotate(180deg) translateZ(0); +} + +.mui-pull-caption +{ + font-size: 15px; + line-height: 24px; + + position: relative; + + display: inline-block; + overflow: visible; + + margin-top: 0; + + vertical-align: middle; +} +.mui-pull-caption span +{ + display: none; +} +.mui-pull-caption span.mui-in +{ + display: inline; +} + +.mui-toast-container +{ + line-height: 17px; + + position: fixed; + z-index: 9999; + bottom: 50px; + left: 50%; + + -webkit-transition: opacity .3s; + transition: opacity .3s; + -webkit-transform: translate(-50%, 0); + transform: translate(-50%, 0); + + opacity: 0; +} +.mui-toast-container.mui-active +{ + opacity: .9; +} + +.mui-toast-message +{ + font-size: 14px; + + padding: 10px 25px; + + text-align: center; + + color: #fff; + border-radius: 6px; + background-color: #323232; +} + +.mui-numbox +{ + position: relative; + + display: inline-block; + overflow: hidden; + + width: 120px; + height: 35px; + padding: 0 40px 0 40px; + + vertical-align: top; + vertical-align: middle; + + border: solid 1px #bbb; + border-radius: 3px; + background-color: #efeff4; +} +.mui-numbox [class*=numbox-btn], .mui-numbox [class*=btn-numbox] +{ + font-size: 18px; + font-weight: normal; + line-height: 100%; + + position: absolute; + top: 0; + + overflow: hidden; + + width: 40px; + height: 100%; + padding: 0; + + color: #555; + border: none; + border-radius: 0; + background-color: #f9f9f9; +} +.mui-numbox [class*=numbox-btn]:active, .mui-numbox [class*=btn-numbox]:active +{ + background-color: #ccc; +} +.mui-numbox [class*=numbox-btn][disabled], .mui-numbox [class*=btn-numbox][disabled] +{ + color: #c0c0c0; +} +.mui-numbox .mui-numbox-btn-plus, .mui-numbox .mui-btn-numbox-plus +{ + right: 0; + + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.mui-numbox .mui-numbox-btn-minus, .mui-numbox .mui-btn-numbox-minus +{ + left: 0; + + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.mui-numbox .mui-numbox-input, .mui-numbox .mui-input-numbox +{ + display: inline-block; + overflow: hidden; + + width: 100% !important; + height: 100%; + margin: 0; + padding: 0 3px !important; + + text-align: center; + text-overflow: ellipsis; + word-break: normal; + + border: none !important; + border-right: solid 1px #ccc !important; + border-left: solid 1px #ccc !important; + border-radius: 0 !important; +} + +.mui-input-row .mui-numbox +{ + float: right; + + margin: 2px 8px; +} + +@font-face { + font-family: Muiicons; + font-weight: normal; + font-style: normal; + + src: url('../fonts/mui.ttf') format('truetype'); +} +.mui-icon +{ + font-family: Muiicons; + font-size: 24px; + font-weight: normal; + font-style: normal; + line-height: 1; + + display: inline-block; + + text-decoration: none; + + -webkit-font-smoothing: antialiased; +} +.mui-icon.mui-active +{ + color: #007aff; +} +.mui-icon.mui-right:before +{ + float: right; + + padding-left: .2em; +} + +.mui-icon-contact:before +{ + content: '\e100'; +} + +.mui-icon-person:before +{ + content: '\e101'; +} + +.mui-icon-personadd:before +{ + content: '\e102'; +} + +.mui-icon-contact-filled:before +{ + content: '\e130'; +} + +.mui-icon-person-filled:before +{ + content: '\e131'; +} + +.mui-icon-personadd-filled:before +{ + content: '\e132'; +} + +.mui-icon-phone:before +{ + content: '\e200'; +} + +.mui-icon-email:before +{ + content: '\e201'; +} + +.mui-icon-chatbubble:before +{ + content: '\e202'; +} + +.mui-icon-chatboxes:before +{ + content: '\e203'; +} + +.mui-icon-phone-filled:before +{ + content: '\e230'; +} + +.mui-icon-email-filled:before +{ + content: '\e231'; +} + +.mui-icon-chatbubble-filled:before +{ + content: '\e232'; +} + +.mui-icon-chatboxes-filled:before +{ + content: '\e233'; +} + +.mui-icon-weibo:before +{ + content: '\e260'; +} + +.mui-icon-weixin:before +{ + content: '\e261'; +} + +.mui-icon-pengyouquan:before +{ + content: '\e262'; +} + +.mui-icon-chat:before +{ + content: '\e263'; +} + +.mui-icon-qq:before +{ + content: '\e264'; +} + +.mui-icon-videocam:before +{ + content: '\e300'; +} + +.mui-icon-camera:before +{ + content: '\e301'; +} + +.mui-icon-mic:before +{ + content: '\e302'; +} + +.mui-icon-location:before +{ + content: '\e303'; +} + +.mui-icon-mic-filled:before, .mui-icon-speech:before +{ + content: '\e332'; +} + +.mui-icon-location-filled:before +{ + content: '\e333'; +} + +.mui-icon-micoff:before +{ + content: '\e360'; +} + +.mui-icon-image:before +{ + content: '\e363'; +} + +.mui-icon-map:before +{ + content: '\e364'; +} + +.mui-icon-compose:before +{ + content: '\e400'; +} + +.mui-icon-trash:before +{ + content: '\e401'; +} + +.mui-icon-upload:before +{ + content: '\e402'; +} + +.mui-icon-download:before +{ + content: '\e403'; +} + +.mui-icon-close:before +{ + content: '\e404'; +} + +.mui-icon-redo:before +{ + content: '\e405'; +} + +.mui-icon-undo:before +{ + content: '\e406'; +} + +.mui-icon-refresh:before +{ + content: '\e407'; +} + +.mui-icon-star:before +{ + content: '\e408'; +} + +.mui-icon-plus:before +{ + content: '\e409'; +} + +.mui-icon-minus:before +{ + content: '\e410'; +} + +.mui-icon-circle:before, .mui-icon-checkbox:before +{ + content: '\e411'; +} + +.mui-icon-close-filled:before, .mui-icon-clear:before +{ + content: '\e434'; +} + +.mui-icon-refresh-filled:before +{ + content: '\e437'; +} + +.mui-icon-star-filled:before +{ + content: '\e438'; +} + +.mui-icon-plus-filled:before +{ + content: '\e439'; +} + +.mui-icon-minus-filled:before +{ + content: '\e440'; +} + +.mui-icon-circle-filled:before +{ + content: '\e441'; +} + +.mui-icon-checkbox-filled:before +{ + content: '\e442'; +} + +.mui-icon-closeempty:before +{ + content: '\e460'; +} + +.mui-icon-refreshempty:before +{ + content: '\e461'; +} + +.mui-icon-reload:before +{ + content: '\e462'; +} + +.mui-icon-starhalf:before +{ + content: '\e463'; +} + +.mui-icon-spinner:before +{ + content: '\e464'; +} + +.mui-icon-spinner-cycle:before +{ + content: '\e465'; +} + +.mui-icon-search:before +{ + content: '\e466'; +} + +.mui-icon-plusempty:before +{ + content: '\e468'; +} + +.mui-icon-forward:before +{ + content: '\e470'; +} + +.mui-icon-back:before, .mui-icon-left-nav:before +{ + content: '\e471'; +} + +.mui-icon-checkmarkempty:before +{ + content: '\e472'; +} + +.mui-icon-home:before +{ + content: '\e500'; +} + +.mui-icon-navigate:before +{ + content: '\e501'; +} + +.mui-icon-gear:before +{ + content: '\e502'; +} + +.mui-icon-paperplane:before +{ + content: '\e503'; +} + +.mui-icon-info:before +{ + content: '\e504'; +} + +.mui-icon-help:before +{ + content: '\e505'; +} + +.mui-icon-locked:before +{ + content: '\e506'; +} + +.mui-icon-more:before +{ + content: '\e507'; +} + +.mui-icon-flag:before +{ + content: '\e508'; +} + +.mui-icon-home-filled:before +{ + content: '\e530'; +} + +.mui-icon-gear-filled:before +{ + content: '\e532'; +} + +.mui-icon-info-filled:before +{ + content: '\e534'; +} + +.mui-icon-help-filled:before +{ + content: '\e535'; +} + +.mui-icon-more-filled:before +{ + content: '\e537'; +} + +.mui-icon-settings:before +{ + content: '\e560'; +} + +.mui-icon-list:before +{ + content: '\e562'; +} + +.mui-icon-bars:before +{ + content: '\e563'; +} + +.mui-icon-loop:before +{ + content: '\e565'; +} + +.mui-icon-paperclip:before +{ + content: '\e567'; +} + +.mui-icon-eye:before +{ + content: '\e568'; +} + +.mui-icon-arrowup:before +{ + content: '\e580'; +} + +.mui-icon-arrowdown:before +{ + content: '\e581'; +} + +.mui-icon-arrowleft:before +{ + content: '\e582'; +} + +.mui-icon-arrowright:before +{ + content: '\e583'; +} + +.mui-icon-arrowthinup:before +{ + content: '\e584'; +} + +.mui-icon-arrowthindown:before +{ + content: '\e585'; +} + +.mui-icon-arrowthinleft:before +{ + content: '\e586'; +} + +.mui-icon-arrowthinright:before +{ + content: '\e587'; +} + +.mui-icon-pulldown:before +{ + content: '\e588'; +} + +.mui-fullscreen +{ + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; +} +.mui-fullscreen.mui-slider .mui-slider-group +{ + height: 100%; +} +.mui-fullscreen .mui-segmented-control ~ .mui-slider-group +{ + position: absolute; + top: 40px; + bottom: 0; + + width: 100%; + height: auto; +} +.mui-fullscreen.mui-slider .mui-slider-item > a +{ + top: 50%; + + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} +.mui-fullscreen .mui-off-canvas-wrap .mui-slider-item > a +{ + top: auto; + + -webkit-transform: none; + transform: none; +} + +.mui-bar-nav ~ .mui-content .mui-slider.mui-fullscreen +{ + top: 44px; +} + +.mui-bar-tab ~ .mui-content .mui-slider.mui-fullscreen .mui-segmented-control ~ .mui-slider-group +{ + bottom: 50px; +} + +.mui-android.mui-android-4-0 input:focus, +.mui-android.mui-android-4-0 textarea:focus +{ + -webkit-user-modify: inherit; +} + +.mui-android.mui-android-4-2 input, +.mui-android.mui-android-4-2 textarea, .mui-android.mui-android-4-3 input, +.mui-android.mui-android-4-3 textarea +{ + -webkit-user-select: text; +} + +.mui-ios .mui-table-view-cell +{ + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; +} + +.mui-plus-visible, .mui-wechat-visible +{ + display: none !important; +} + +.mui-plus-hidden, .mui-wechat-hidden +{ + display: block !important; +} + +.mui-tab-item.mui-plus-hidden, .mui-tab-item.mui-wechat-hidden +{ + display: table-cell !important; +} + +.mui-plus .mui-plus-visible, .mui-wechat .mui-wechat-visible +{ + display: block !important; +} + +.mui-plus .mui-tab-item.mui-plus-visible, .mui-wechat .mui-tab-item.mui-wechat-visible +{ + display: table-cell !important; +} + +.mui-plus .mui-plus-hidden, .mui-wechat .mui-wechat-hidden +{ + display: none !important; +} + +.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-nav +{ + height: 64px; + padding-top: 20px; +} +.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-nav ~ .mui-content +{ + padding-top: 64px; +} +.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-nav ~ .mui-content .mui-pull-top-pocket +{ + top: 64px; +} +.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-header-secondary +{ + top: 64px; +} +.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-header-secondary ~ .mui-content +{ + padding-top: 94px; +} + +.mui-iframe-wrapper +{ + position: absolute; + right: 0; + left: 0; + + -webkit-overflow-scrolling: touch; +} +.mui-iframe-wrapper iframe +{ + width: 100%; + height: 100%; + + border: 0; +} diff --git a/css/mui.min.css b/css/mui.min.css new file mode 100644 index 0000000..c330ba6 --- /dev/null +++ b/css/mui.min.css @@ -0,0 +1,5 @@ +/*! + * ===================================================== + * Mui v3.7.2 (http://dev.dcloud.net.cn/mui) + * ===================================================== + *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{font:inherit;margin:0;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{margin:0 2px;padding:.35em .625em .75em;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}*{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;outline:0;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent}body{font-family:'Helvetica Neue',Helvetica,sans-serif;font-size:17px;line-height:21px;color:#000;background-color:#efeff4;-webkit-overflow-scrolling:touch}a{text-decoration:none;color:#007aff}a:active{color:#0062cc}.mui-content{background-color:#efeff4;-webkit-overflow-scrolling:touch}.mui-bar-nav~.mui-content{padding-top:44px}.mui-bar-nav~.mui-content.mui-scroll-wrapper .mui-scrollbar-vertical{top:44px}.mui-bar-header-secondary~.mui-content{padding-top:88px}.mui-bar-header-secondary~.mui-content.mui-scroll-wrapper .mui-scrollbar-vertical{top:88px}.mui-bar-footer~.mui-content{padding-bottom:44px}.mui-bar-footer~.mui-content.mui-scroll-wrapper .mui-scrollbar-vertical{bottom:44px}.mui-bar-footer-secondary~.mui-content{padding-bottom:88px}.mui-bar-footer-secondary~.mui-content.mui-scroll-wrapper .mui-scrollbar-vertical{bottom:88px}.mui-bar-tab~.mui-content{padding-bottom:50px}.mui-bar-tab~.mui-content.mui-scroll-wrapper .mui-scrollbar-vertical{bottom:50px}.mui-bar-footer-secondary-tab~.mui-content{padding-bottom:94px}.mui-bar-footer-secondary-tab~.mui-content.mui-scroll-wrapper .mui-scrollbar-vertical{bottom:94px}.mui-content-padded{margin:10px}.mui-inline{display:inline-block;vertical-align:top}.mui-block{display:block!important}.mui-visibility{visibility:visible!important}.mui-hidden{display:none!important}.mui-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mui-ellipsis-2{display:-webkit-box;overflow:hidden;white-space:normal!important;text-overflow:ellipsis;word-wrap:break-word;-webkit-line-clamp:2;-webkit-box-orient:vertical}.mui-table{display:table;width:100%;table-layout:fixed}.mui-table-cell{position:relative;display:table-cell}.mui-text-left{text-align:left!important}.mui-text-center{text-align:center!important}.mui-text-justify{text-align:justify!important}.mui-text-right{text-align:right!important}.mui-pull-left{float:left}.mui-pull-right{float:right}.mui-list-unstyled{padding-left:0;list-style:none}.mui-list-inline{margin-left:-5px;padding-left:0;list-style:none}.mui-list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.mui-clearfix:after,.mui-clearfix:before{display:table;content:' '}.mui-clearfix:after{clear:both}.mui-bg-primary{background-color:#007aff}.mui-bg-positive{background-color:#4cd964}.mui-bg-negative{background-color:#dd524d}.mui-error{margin:88px 35px;padding:10px;border-radius:6px;background-color:#bbb}.mui-subtitle{font-size:15px}h1,h2,h3,h4,h5,h6{line-height:1;margin-top:5px;margin-bottom:5px}.mui-h1,h1{font-size:36px}.mui-h2,h2{font-size:30px}.mui-h3,h3{font-size:24px}.mui-h4,h4{font-size:18px}.mui-h5,h5{font-size:14px;font-weight:400;color:#8f8f94}.mui-h6,h6{font-size:12px;font-weight:400;color:#8f8f94}p{font-size:14px;margin-top:0;margin-bottom:10px;color:#8f8f94}.mui-row:after,.mui-row:before{display:table;content:' '}.mui-row:after{clear:both}.mui-col-sm-1,.mui-col-sm-10,.mui-col-sm-11,.mui-col-sm-12,.mui-col-sm-2,.mui-col-sm-3,.mui-col-sm-4,.mui-col-sm-5,.mui-col-sm-6,.mui-col-sm-7,.mui-col-sm-8,.mui-col-sm-9,.mui-col-xs-1,.mui-col-xs-10,.mui-col-xs-11,.mui-col-xs-12,.mui-col-xs-2,.mui-col-xs-3,.mui-col-xs-4,.mui-col-xs-5,.mui-col-xs-6,.mui-col-xs-7,.mui-col-xs-8,.mui-col-xs-9{position:relative;min-height:1px}.mui-row>[class*=mui-col-]{float:left}.mui-col-xs-12{width:100%}.mui-col-xs-11{width:91.66666667%}.mui-col-xs-10{width:83.33333333%}.mui-col-xs-9{width:75%}.mui-col-xs-8{width:66.66666667%}.mui-col-xs-7{width:58.33333333%}.mui-col-xs-6{width:50%}.mui-col-xs-5{width:41.66666667%}.mui-col-xs-4{width:33.33333333%}.mui-col-xs-3{width:25%}.mui-col-xs-2{width:16.66666667%}.mui-col-xs-1{width:8.33333333%}@media (min-width:400px){.mui-col-sm-12{width:100%}.mui-col-sm-11{width:91.66666667%}.mui-col-sm-10{width:83.33333333%}.mui-col-sm-9{width:75%}.mui-col-sm-8{width:66.66666667%}.mui-col-sm-7{width:58.33333333%}.mui-col-sm-6{width:50%}.mui-col-sm-5{width:41.66666667%}.mui-col-sm-4{width:33.33333333%}.mui-col-sm-3{width:25%}.mui-col-sm-2{width:16.66666667%}.mui-col-sm-1{width:8.33333333%}}.mui-scroll-wrapper{position:absolute;z-index:2;top:0;bottom:0;left:0;overflow:hidden;width:100%}.mui-scroll{position:absolute;z-index:1;width:100%}.mui-scrollbar{position:absolute;z-index:9998;overflow:hidden;-webkit-transition:500ms;transition:500ms;transform:translateZ(0px);pointer-events:none;opacity:0}.mui-scrollbar-vertical{top:0;right:1px;bottom:2px;width:4px}.mui-scrollbar-vertical .mui-scrollbar-indicator{width:100%}.mui-scrollbar-horizontal{right:2px;bottom:0;left:2px;height:4px}.mui-scrollbar-horizontal .mui-scrollbar-indicator{height:100%}.mui-scrollbar-indicator{position:absolute;display:block;box-sizing:border-box;-webkit-transition:.01s cubic-bezier(.1,.57,.1,1);transition:.01s cubic-bezier(.1,.57,.1,1);transform:translate(0px,0) translateZ(0px);border:1px solid rgba(255,255,255,.80196);border-radius:2px;background:rgba(0,0,0,.39804)}.mui-plus-pullrefresh .mui-fullscreen .mui-scroll-wrapper .mui-scroll-wrapper,.mui-plus-pullrefresh .mui-fullscreen .mui-slider-group .mui-scroll-wrapper{position:absolute;top:0;bottom:0;left:0;overflow:hidden;width:100%}.mui-plus-pullrefresh .mui-fullscreen .mui-scroll-wrapper .mui-scroll,.mui-plus-pullrefresh .mui-fullscreen .mui-slider-group .mui-scroll{position:absolute;width:100%}.mui-plus-pullrefresh .mui-scroll-wrapper,.mui-plus-pullrefresh .mui-slider-group{position:static;top:auto;bottom:auto;left:auto;overflow:auto;width:auto}.mui-plus-pullrefresh .mui-slider-group{overflow:visible}.mui-plus-pullrefresh .mui-scroll{position:static;width:auto}.mui-off-canvas-wrap .mui-bar{position:absolute!important;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-box-shadow:none;box-shadow:none}.mui-off-canvas-wrap{position:relative;z-index:1;overflow:hidden;width:100%;height:100%}.mui-off-canvas-wrap .mui-inner-wrap{position:relative;z-index:1;width:100%;height:100%}.mui-off-canvas-wrap .mui-inner-wrap.mui-transitioning{-webkit-transition:-webkit-transform 350ms;transition:transform 350ms cubic-bezier(.165,.84,.44,1)}.mui-off-canvas-wrap .mui-inner-wrap .mui-off-canvas-left{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.mui-off-canvas-wrap .mui-inner-wrap .mui-off-canvas-right{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.mui-off-canvas-wrap.mui-active{overflow:hidden;height:100%}.mui-off-canvas-wrap.mui-active .mui-off-canvas-backdrop{position:absolute;z-index:998;top:0;right:0;bottom:0;left:0;display:block;transition:background 350ms cubic-bezier(.165,.84,.44,1);background:rgba(0,0,0,.4);box-shadow:-4px 0 4px rgba(0,0,0,.5),4px 0 4px rgba(0,0,0,.5);-webkit-tap-highlight-color:transparent}.mui-off-canvas-wrap.mui-slide-in .mui-off-canvas-right{z-index:10000!important;-webkit-transform:translate3d(100%,0,0)}.mui-off-canvas-wrap.mui-slide-in .mui-off-canvas-left{z-index:10000!important;-webkit-transform:translate3d(-100%,0,0)}.mui-off-canvas-left,.mui-off-canvas-right{position:absolute;z-index:-1;top:0;bottom:0;visibility:hidden;box-sizing:content-box;width:70%;min-height:100%;background:#333;-webkit-overflow-scrolling:touch}.mui-off-canvas-left.mui-transitioning,.mui-off-canvas-right.mui-transitioning{-webkit-transition:-webkit-transform 350ms cubic-bezier(.165,.84,.44,1);transition:transform 350ms cubic-bezier(.165,.84,.44,1)}.mui-off-canvas-left{left:0}.mui-off-canvas-right{right:0}.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable{background-color:#333}.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable>.mui-off-canvas-left,.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable>.mui-off-canvas-right{width:80%;-webkit-transform:scale(.8);transform:scale(.8);opacity:.1}.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable>.mui-off-canvas-left.mui-transitioning,.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable>.mui-off-canvas-right.mui-transitioning{-webkit-transition:-webkit-transform 350ms cubic-bezier(.165,.84,.44,1),opacity 350ms cubic-bezier(.165,.84,.44,1);transition:transform 350ms cubic-bezier(.165,.84,.44,1),opacity 350ms cubic-bezier(.165,.84,.44,1)}.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable>.mui-off-canvas-left{-webkit-transform-origin:-100%;transform-origin:-100%}.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable>.mui-off-canvas-right{-webkit-transform-origin:200%;transform-origin:200%}.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable.mui-active>.mui-inner-wrap{-webkit-transform:scale(.8);transform:scale(.8)}.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable.mui-active>.mui-off-canvas-left,.mui-off-canvas-wrap:not(.mui-slide-in).mui-scalable.mui-active>.mui-off-canvas-right{-webkit-transform:scale(1);transform:scale(1);opacity:1}.mui-loading .mui-spinner{display:block;margin:0 auto}.mui-spinner{display:inline-block;width:24px;height:24px;-webkit-transform-origin:50%;transform-origin:50%;-webkit-animation:spinner-spin 1s step-end infinite;animation:spinner-spin 1s step-end infinite}.mui-spinner:after{display:block;width:100%;height:100%;content:'';background-image:url('data:image/svg+xml;charset=utf-8,');background-repeat:no-repeat;background-position:50%;background-size:100%}.mui-spinner-white:after{background-image:url('data:image/svg+xml;charset=utf-8,')}@-webkit-keyframes spinner-spin{0%{-webkit-transform:rotate(0deg)}8.33333333%{-webkit-transform:rotate(30deg)}16.66666667%{-webkit-transform:rotate(60deg)}25%{-webkit-transform:rotate(90deg)}33.33333333%{-webkit-transform:rotate(120deg)}41.66666667%{-webkit-transform:rotate(150deg)}50%{-webkit-transform:rotate(180deg)}58.33333333%{-webkit-transform:rotate(210deg)}66.66666667%{-webkit-transform:rotate(240deg)}75%{-webkit-transform:rotate(270deg)}83.33333333%{-webkit-transform:rotate(300deg)}91.66666667%{-webkit-transform:rotate(330deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes spinner-spin{0%{transform:rotate(0deg)}8.33333333%{transform:rotate(30deg)}16.66666667%{transform:rotate(60deg)}25%{transform:rotate(90deg)}33.33333333%{transform:rotate(120deg)}41.66666667%{transform:rotate(150deg)}50%{transform:rotate(180deg)}58.33333333%{transform:rotate(210deg)}66.66666667%{transform:rotate(240deg)}75%{transform:rotate(270deg)}83.33333333%{transform:rotate(300deg)}91.66666667%{transform:rotate(330deg)}100%{transform:rotate(360deg)}}.mui-btn,button,input[type=button],input[type=reset],input[type=submit]{font-size:14px;font-weight:400;line-height:1.42;position:relative;display:inline-block;margin-bottom:0;padding:6px 12px;cursor:pointer;-webkit-transition:all;transition:all;-webkit-transition-timing-function:linear;transition-timing-function:linear;-webkit-transition-duration:.2s;transition-duration:.2s;text-align:center;vertical-align:top;white-space:nowrap;color:#333;border:1px solid #ccc;border-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;background-color:#fff;background-clip:padding-box}.mui-btn.mui-active:enabled,.mui-btn:enabled:active,button.mui-active:enabled,button:enabled:active,input[type=button].mui-active:enabled,input[type=button]:enabled:active,input[type=reset].mui-active:enabled,input[type=reset]:enabled:active,input[type=submit].mui-active:enabled,input[type=submit]:enabled:active{color:#fff;background-color:#929292}.mui-btn.mui-disabled,.mui-btn:disabled,button.mui-disabled,button:disabled,input[type=button].mui-disabled,input[type=button]:disabled,input[type=reset].mui-disabled,input[type=reset]:disabled,input[type=submit].mui-disabled,input[type=submit]:disabled{opacity:.6}.mui-btn-blue,.mui-btn-primary,input[type=submit]{color:#fff;border:1px solid #007aff;background-color:#007aff}.mui-btn-blue.mui-active:enabled,.mui-btn-blue:enabled:active,.mui-btn-primary.mui-active:enabled,.mui-btn-primary:enabled:active,input[type=submit].mui-active:enabled,input[type=submit]:enabled:active{color:#fff;border:1px solid #0062cc;background-color:#0062cc}.mui-btn-green,.mui-btn-positive,.mui-btn-success{color:#fff;border:1px solid #4cd964;background-color:#4cd964}.mui-btn-green.mui-active:enabled,.mui-btn-green:enabled:active,.mui-btn-positive.mui-active:enabled,.mui-btn-positive:enabled:active,.mui-btn-success.mui-active:enabled,.mui-btn-success:enabled:active{color:#fff;border:1px solid #2ac845;background-color:#2ac845}.mui-btn-warning,.mui-btn-yellow{color:#fff;border:1px solid #f0ad4e;background-color:#f0ad4e}.mui-btn-warning.mui-active:enabled,.mui-btn-warning:enabled:active,.mui-btn-yellow.mui-active:enabled,.mui-btn-yellow:enabled:active{color:#fff;border:1px solid #ec971f;background-color:#ec971f}.mui-btn-danger,.mui-btn-negative,.mui-btn-red{color:#fff;border:1px solid #dd524d;background-color:#dd524d}.mui-btn-danger.mui-active:enabled,.mui-btn-danger:enabled:active,.mui-btn-negative.mui-active:enabled,.mui-btn-negative:enabled:active,.mui-btn-red.mui-active:enabled,.mui-btn-red:enabled:active{color:#fff;border:1px solid #cf2d28;background-color:#cf2d28}.mui-btn-purple,.mui-btn-royal{color:#fff;border:1px solid #8a6de9;background-color:#8a6de9}.mui-btn-purple.mui-active:enabled,.mui-btn-purple:enabled:active,.mui-btn-royal.mui-active:enabled,.mui-btn-royal:enabled:active{color:#fff;border:1px solid #6641e2;background-color:#6641e2}.mui-btn-grey{color:#fff;border:1px solid #c7c7cc;background-color:#c7c7cc}.mui-btn-grey.mui-active:enabled,.mui-btn-grey:enabled:active{color:#fff;border:1px solid #acacb4;background-color:#acacb4}.mui-btn-outlined{background-color:transparent}.mui-btn-outlined.mui-btn-blue,.mui-btn-outlined.mui-btn-primary{color:#007aff}.mui-btn-outlined.mui-btn-green,.mui-btn-outlined.mui-btn-positive,.mui-btn-outlined.mui-btn-success{color:#4cd964}.mui-btn-outlined.mui-btn-warning,.mui-btn-outlined.mui-btn-yellow{color:#f0ad4e}.mui-btn-outlined.mui-btn-danger,.mui-btn-outlined.mui-btn-negative,.mui-btn-outlined.mui-btn-red{color:#dd524d}.mui-btn-outlined.mui-btn-purple,.mui-btn-outlined.mui-btn-royal{color:#8a6de9}.mui-btn-outlined.mui-btn-blue:enabled:active,.mui-btn-outlined.mui-btn-danger:enabled:active,.mui-btn-outlined.mui-btn-green:enabled:active,.mui-btn-outlined.mui-btn-negative:enabled:active,.mui-btn-outlined.mui-btn-positive:enabled:active,.mui-btn-outlined.mui-btn-primary:enabled:active,.mui-btn-outlined.mui-btn-purple:enabled:active,.mui-btn-outlined.mui-btn-red:enabled:active,.mui-btn-outlined.mui-btn-royal:enabled:active,.mui-btn-outlined.mui-btn-success:enabled:active,.mui-btn-outlined.mui-btn-warning:enabled:active,.mui-btn-outlined.mui-btn-yellow:enabled:active{color:#fff}.mui-btn-link{padding-top:6px;padding-bottom:6px;color:#007aff;border:0;background-color:transparent}.mui-btn-link.mui-active:enabled,.mui-btn-link:enabled:active{color:#0062cc;background-color:transparent}.mui-btn-block{font-size:18px;display:block;width:100%;margin-bottom:10px;padding:15px 0}.mui-btn .mui-badge{font-size:14px;margin:-2px -4px -2px 4px;background-color:rgba(0,0,0,.15)}.mui-btn .mui-badge-inverted,.mui-btn:enabled:active .mui-badge-inverted{background-color:transparent}.mui-btn-negative:enabled:active .mui-badge-inverted,.mui-btn-positive:enabled:active .mui-badge-inverted,.mui-btn-primary:enabled:active .mui-badge-inverted{color:#fff}.mui-btn-block .mui-badge{position:absolute;right:0;margin-right:10px}.mui-btn .mui-icon{font-size:inherit}.mui-btn.mui-icon{font-size:14px;line-height:1.42}.mui-btn.mui-fab{width:56px;height:56px;padding:16px;border-radius:50%;outline:0}.mui-btn.mui-fab.mui-btn-mini{width:40px;height:40px;padding:8px}.mui-btn.mui-fab .mui-icon{font-size:24px;line-height:24px;width:24px;height:24px}.mui-btn .mui-spinner{width:14px;height:14px;vertical-align:text-bottom}.mui-btn-block .mui-spinner{width:22px;height:22px}.mui-bar{position:fixed;z-index:10;right:0;left:0;height:44px;padding-right:10px;padding-left:10px;border-bottom:0;background-color:#f7f7f7;-webkit-box-shadow:0 0 1px rgba(0,0,0,.85);box-shadow:0 0 1px rgba(0,0,0,.85);-webkit-backface-visibility:hidden;backface-visibility:hidden}.mui-bar .mui-title{right:40px;left:40px;display:inline-block;overflow:hidden;width:auto;margin:0;text-overflow:ellipsis}.mui-bar .mui-backdrop{background:0 0}.mui-bar-header-secondary{top:44px}.mui-bar-footer{bottom:0}.mui-bar-footer-secondary{bottom:44px}.mui-bar-footer-secondary-tab{bottom:50px}.mui-bar-footer,.mui-bar-footer-secondary,.mui-bar-footer-secondary-tab{border-top:0}.mui-bar-transparent{top:0;background-color:rgba(247,247,247,0);-webkit-box-shadow:none;box-shadow:none}.mui-bar-nav{top:0;-webkit-box-shadow:0 1px 6px #ccc;box-shadow:0 1px 6px #ccc}.mui-bar-nav~.mui-content .mui-anchor{display:block;visibility:hidden;height:45px;margin-top:-45px}.mui-bar-nav.mui-bar .mui-icon{margin-right:-10px;margin-left:-10px;padding-right:10px;padding-left:10px}.mui-title{font-size:17px;font-weight:500;line-height:44px;position:absolute;display:block;width:100%;margin:0 -10px;padding:0;text-align:center;white-space:nowrap;color:#000}.mui-title a{color:inherit}.mui-bar-tab{bottom:0;display:table;width:100%;height:50px;padding:0;table-layout:fixed;border-top:0;border-bottom:0;-webkit-touch-callout:none}.mui-bar-tab .mui-tab-item{display:table-cell;overflow:hidden;width:1%;height:50px;text-align:center;vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;color:#929292}.mui-bar-tab .mui-tab-item.mui-active{color:#007aff}.mui-bar-tab .mui-tab-item .mui-icon{top:3px;width:24px;height:24px;padding-top:0;padding-bottom:0}.mui-bar-tab .mui-tab-item .mui-icon~.mui-tab-label{font-size:11px;display:block;overflow:hidden;text-overflow:ellipsis}.mui-bar-tab .mui-tab-item .mui-icon:active{background:0 0}.mui-focusin>.mui-bar-header-secondary,.mui-focusin>.mui-bar-nav{position:absolute}.mui-focusin>.mui-bar~.mui-content{padding-bottom:0}.mui-bar .mui-btn{font-weight:400;position:relative;z-index:20;top:7px;margin-top:0;padding:6px 12px 7px}.mui-bar .mui-btn.mui-pull-right{margin-left:10px}.mui-bar .mui-btn.mui-pull-left{margin-right:10px}.mui-bar .mui-btn-link{font-size:16px;line-height:44px;top:0;padding:0;color:#007aff;border:0}.mui-bar .mui-btn-link.mui-active,.mui-bar .mui-btn-link:active{color:#0062cc}.mui-bar .mui-btn-block{font-size:16px;top:6px;margin-bottom:0;padding:5px 0}.mui-bar .mui-btn-nav.mui-pull-left{margin-left:-5px}.mui-bar .mui-btn-nav.mui-pull-left .mui-icon-left-nav{margin-right:-3px}.mui-bar .mui-btn-nav.mui-pull-right{margin-right:-5px}.mui-bar .mui-btn-nav.mui-pull-right .mui-icon-right-nav{margin-left:-3px}.mui-bar .mui-btn-nav:active{opacity:.3}.mui-bar .mui-icon{font-size:24px;position:relative;z-index:20;padding-top:10px;padding-bottom:10px}.mui-bar .mui-icon:active{opacity:.3}.mui-bar .mui-btn .mui-icon{top:1px;margin:0;padding:0}.mui-bar .mui-title .mui-icon{margin:0;padding:0}.mui-bar .mui-title .mui-icon.mui-icon-caret{top:4px;margin-left:-5px}.mui-bar input[type=search]{height:29px;margin:6px 0}.mui-bar .mui-input-row .mui-btn{padding:12px 10px}.mui-bar .mui-search:before{margin-top:-10px}.mui-bar .mui-input-row .mui-input-clear~.mui-icon-clear,.mui-bar .mui-input-row .mui-input-speech~.mui-icon-speech{top:0;right:12px}.mui-bar.mui-bar-header-secondary .mui-input-row .mui-input-clear~.mui-icon-clear,.mui-bar.mui-bar-header-secondary .mui-input-row .mui-input-speech~.mui-icon-speech{top:0;right:0}.mui-bar .mui-segmented-control{top:7px;width:auto;margin:0 auto}.mui-bar.mui-bar-header-secondary .mui-segmented-control{top:0}.mui-badge{font-size:12px;line-height:1;display:inline-block;padding:3px 6px;color:#333;border-radius:100px;background-color:rgba(0,0,0,.15)}.mui-badge.mui-badge-inverted{padding:0 5px 0 0;color:#929292;background-color:transparent}.mui-badge-blue,.mui-badge-primary{color:#fff;background-color:#007aff}.mui-badge-blue.mui-badge-inverted,.mui-badge-primary.mui-badge-inverted{color:#007aff;background-color:transparent}.mui-badge-green,.mui-badge-success{color:#fff;background-color:#4cd964}.mui-badge-green.mui-badge-inverted,.mui-badge-success.mui-badge-inverted{color:#4cd964;background-color:transparent}.mui-badge-warning,.mui-badge-yellow{color:#fff;background-color:#f0ad4e}.mui-badge-warning.mui-badge-inverted,.mui-badge-yellow.mui-badge-inverted{color:#f0ad4e;background-color:transparent}.mui-badge-danger,.mui-badge-red{color:#fff;background-color:#dd524d}.mui-badge-danger.mui-badge-inverted,.mui-badge-red.mui-badge-inverted{color:#dd524d;background-color:transparent}.mui-badge-purple,.mui-badge-royal{color:#fff;background-color:#8a6de9}.mui-badge-purple.mui-badge-inverted,.mui-badge-royal.mui-badge-inverted{color:#8a6de9;background-color:transparent}.mui-icon .mui-badge{font-size:10px;line-height:1.4;position:absolute;top:-2px;left:100%;margin-left:-10px;padding:1px 5px;color:#fff;background:red}.mui-card{font-size:14px;position:relative;overflow:hidden;margin:10px;border-radius:2px;background-color:#fff;background-clip:padding-box;box-shadow:0 1px 2px rgba(0,0,0,.3)}.mui-content>.mui-card:first-child{margin-top:15px}.mui-card .mui-input-group .mui-input-row:last-child:after,.mui-card .mui-input-group .mui-input-row:last-child:before,.mui-card .mui-input-group:after,.mui-card .mui-input-group:before{height:0}.mui-card .mui-table-view{margin-bottom:0;border-top:0;border-bottom:0;border-radius:6px}.mui-card .mui-table-view .mui-table-view-cell:first-child,.mui-card .mui-table-view .mui-table-view-divider:first-child{top:0;border-top-left-radius:6px;border-top-right-radius:6px}.mui-card .mui-table-view .mui-table-view-cell:last-child,.mui-card .mui-table-view .mui-table-view-divider:last-child{border-bottom-right-radius:6px;border-bottom-left-radius:6px}.mui-card .mui-table-view:after,.mui-card .mui-table-view:before,.mui-card>.mui-table-view>.mui-table-view-cell:last-child:after,.mui-card>.mui-table-view>.mui-table-view-cell:last-child:before{height:0}.mui-card-footer,.mui-card-header{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;min-height:44px;padding:10px 15px;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.mui-card-footer .mui-card-link,.mui-card-header .mui-card-link{line-height:44px;position:relative;display:-webkit-box;display:-webkit-flex;display:flex;height:44px;margin-top:-10px;margin-bottom:-10px;-webkit-transition-duration:.3s;transition-duration:.3s;text-decoration:none;-webkit-box-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.mui-card-footer:before,.mui-card-header:after{position:absolute;top:0;right:0;left:0;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#c8c7cc}.mui-card-header{font-size:17px;border-radius:2px 2px 0 0}.mui-card-header:after{top:auto;bottom:0}.mui-card-header>img:first-child{font-size:0;line-height:0;float:left;width:34px;height:34px}.mui-card-footer{color:#6d6d72;border-radius:0 0 2px 2px}.mui-card-content{font-size:14px;position:relative}.mui-card-content-inner{position:relative;padding:15px}.mui-card-media{vertical-align:bottom;color:#fff;background-position:center;background-size:cover}.mui-card-header.mui-card-media{display:block;padding:10px}.mui-card-header.mui-card-media .mui-media-body{font-size:14px;font-weight:500;line-height:17px;margin-bottom:0;margin-left:44px;color:#333}.mui-card-header.mui-card-media .mui-media-body p{font-size:13px;margin-bottom:0}.mui-table-view{position:relative;margin-top:0;margin-bottom:0;padding-left:0;list-style:none;background-color:#fff}.mui-table-view:after{position:absolute;right:0;bottom:0;left:0;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#c8c7cc}.mui-table-view:before{position:absolute;right:0;left:0;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#c8c7cc;top:-1px}.mui-table-view-icon .mui-table-view-cell .mui-navigate-right .mui-icon{font-size:20px;margin-top:-1px;margin-right:5px;margin-left:-5px}.mui-table-view-icon .mui-table-view-cell:after{left:40px}.mui-table-view-chevron .mui-table-view-cell{padding-right:65px}.mui-table-view-chevron .mui-table-view-cell>a:not(.mui-btn){margin-right:-65px}.mui-table-view-radio .mui-table-view-cell{padding-right:65px}.mui-table-view-radio .mui-table-view-cell>a:not(.mui-btn){margin-right:-65px}.mui-table-view-radio .mui-table-view-cell .mui-navigate-right:after{font-size:30px;font-weight:600;right:9px;content:'';color:#007aff}.mui-table-view-radio .mui-table-view-cell.mui-selected .mui-navigate-right:after{content:'\e472'}.mui-table-view-inverted{color:#fff;background:#333}.mui-table-view-inverted:after{position:absolute;right:0;bottom:0;left:0;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#222}.mui-table-view-inverted:before{position:absolute;top:0;right:0;left:0;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#222}.mui-table-view-inverted .mui-table-view-cell:after{position:absolute;right:0;bottom:0;left:15px;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#222}.mui-table-view-inverted .mui-table-view-cell.mui-active,.mui-table-view-inverted .mui-table-view-cell>a:not(.mui-btn).mui-active{background-color:#242424}.mui-table-view-cell{position:relative;overflow:hidden;padding:11px 15px;-webkit-touch-callout:none}.mui-table-view-cell:after{position:absolute;right:0;bottom:0;left:15px;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#c8c7cc}.mui-table-view-cell.mui-checkbox input[type=checkbox],.mui-table-view-cell.mui-radio input[type=radio]{top:8px}.mui-table-view-cell.mui-checkbox.mui-left,.mui-table-view-cell.mui-radio.mui-left{padding-left:58px}.mui-table-view-cell.mui-active{background-color:#eee}.mui-table-view-cell:last-child:after,.mui-table-view-cell:last-child:before{height:0}.mui-table-view-cell>a:not(.mui-btn){position:relative;display:block;overflow:hidden;margin:-11px -15px;padding:inherit;white-space:nowrap;text-overflow:ellipsis;color:inherit}.mui-table-view-cell>a:not(.mui-btn).mui-active{background-color:#eee}.mui-table-view-cell p{margin-bottom:0}.mui-table-view-cell.mui-transitioning>.mui-slider-handle,.mui-table-view-cell.mui-transitioning>.mui-slider-left .mui-btn,.mui-table-view-cell.mui-transitioning>.mui-slider-right .mui-btn{-webkit-transition:-webkit-transform 300ms ease;transition:transform 300ms ease}.mui-table-view-cell.mui-active>.mui-slider-handle{background-color:#eee}.mui-table-view-cell>.mui-slider-handle{position:relative;background-color:#fff}.mui-table-view-cell>.mui-slider-handle .mui-navigate-right:after,.mui-table-view-cell>.mui-slider-handle.mui-navigate-right:after{right:0}.mui-table-view-cell>.mui-slider-handle,.mui-table-view-cell>.mui-slider-left .mui-btn,.mui-table-view-cell>.mui-slider-right .mui-btn{-webkit-transition:-webkit-transform 0ms ease;transition:transform 0ms ease}.mui-table-view-cell>.mui-slider-left,.mui-table-view-cell>.mui-slider-right{position:absolute;top:0;display:-webkit-box;display:-webkit-flex;display:flex;height:100%}.mui-table-view-cell>.mui-slider-left>.mui-btn,.mui-table-view-cell>.mui-slider-right>.mui-btn{position:relative;left:0;display:-webkit-box;display:-webkit-flex;display:flex;padding:0 30px;color:#fff;border:0;border-radius:0;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.mui-table-view-cell>.mui-slider-left>.mui-btn:after,.mui-table-view-cell>.mui-slider-right>.mui-btn:after{position:absolute;z-index:-1;top:0;width:600%;height:100%;content:'';background:inherit}.mui-table-view-cell>.mui-slider-left>.mui-btn.mui-icon,.mui-table-view-cell>.mui-slider-right>.mui-btn.mui-icon{font-size:30px}.mui-table-view-cell>.mui-slider-right{right:0;-webkit-transition:-webkit-transform 0ms ease;transition:transform 0ms ease;-webkit-transform:translateX(100%);transform:translateX(100%)}.mui-table-view-cell>.mui-slider-left{left:0;-webkit-transition:-webkit-transform 0ms ease;transition:transform 0ms ease;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.mui-table-view-cell>.mui-slider-left>.mui-btn:after{right:100%;margin-right:-1px}.mui-table-view-divider{font-weight:500;position:relative;margin-top:-1px;margin-left:0;padding-top:6px;padding-bottom:6px;padding-left:15px;color:#999;background-color:#fafafa}.mui-table-view-divider:after{position:absolute;right:0;bottom:0;left:0;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#c8c7cc}.mui-table-view-divider:before{position:absolute;top:0;right:0;left:0;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#c8c7cc}.mui-table-view .mui-media,.mui-table-view .mui-media-body{overflow:hidden}.mui-table-view .mui-media-large .mui-media-object{line-height:80px;max-width:80px;height:80px}.mui-table-view .mui-media .mui-subtitle{color:#000}.mui-table-view .mui-media-object{line-height:42px;max-width:42px;height:42px}.mui-table-view .mui-media-object.mui-pull-left{margin-right:10px}.mui-table-view .mui-media-object.mui-pull-right{margin-left:10px}.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-object{line-height:29px;max-width:29px;height:29px;margin:-4px 0}.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-object img{line-height:29px;max-width:29px;height:29px}.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-object.mui-pull-left{margin-right:10px}.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-object .mui-icon{font-size:29px}.mui-table-view .mui-table-view-cell.mui-media-icon .mui-media-body:after{position:absolute;right:0;bottom:0;left:55px;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#c8c7cc}.mui-table-view .mui-table-view-cell.mui-media-icon:after{height:0!important}.mui-table-view.mui-unfold .mui-table-view-cell.mui-collapse .mui-table-view{display:block}.mui-table-view.mui-unfold .mui-table-view-cell.mui-collapse .mui-table-view:after,.mui-table-view.mui-unfold .mui-table-view-cell.mui-collapse .mui-table-view:before{height:0!important}.mui-table-view.mui-unfold .mui-table-view-cell.mui-media-icon.mui-collapse .mui-media-body:after{position:absolute;right:0;bottom:0;left:70px;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#c8c7cc}.mui-table-view-cell>.mui-badge,.mui-table-view-cell>.mui-btn,.mui-table-view-cell>.mui-switch,.mui-table-view-cell>a>.mui-badge,.mui-table-view-cell>a>.mui-btn,.mui-table-view-cell>a>.mui-switch{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.mui-table-view-cell .mui-navigate-right>.mui-badge,.mui-table-view-cell .mui-navigate-right>.mui-btn,.mui-table-view-cell .mui-navigate-right>.mui-switch,.mui-table-view-cell .mui-push-left>.mui-badge,.mui-table-view-cell .mui-push-left>.mui-btn,.mui-table-view-cell .mui-push-left>.mui-switch,.mui-table-view-cell .mui-push-right>.mui-badge,.mui-table-view-cell .mui-push-right>.mui-btn,.mui-table-view-cell .mui-push-right>.mui-switch,.mui-table-view-cell>a .mui-navigate-right>.mui-badge,.mui-table-view-cell>a .mui-navigate-right>.mui-btn,.mui-table-view-cell>a .mui-navigate-right>.mui-switch,.mui-table-view-cell>a .mui-push-left>.mui-badge,.mui-table-view-cell>a .mui-push-left>.mui-btn,.mui-table-view-cell>a .mui-push-left>.mui-switch,.mui-table-view-cell>a .mui-push-right>.mui-badge,.mui-table-view-cell>a .mui-push-right>.mui-btn,.mui-table-view-cell>a .mui-push-right>.mui-switch{right:35px}.mui-content>.mui-table-view:first-child{margin-top:15px}.mui-table-view-cell.mui-collapse .mui-table-view .mui-table-view-cell:last-child:after,.mui-table-view-cell.mui-collapse .mui-table-view:after,.mui-table-view-cell.mui-collapse .mui-table-view:before{height:0}.mui-table-view-cell.mui-collapse>.mui-navigate-right:after,.mui-table-view-cell.mui-collapse>.mui-push-right:after{content:'\e581'}.mui-table-view-cell.mui-collapse.mui-active{margin-top:-1px}.mui-table-view-cell.mui-collapse.mui-active .mui-collapse-content,.mui-table-view-cell.mui-collapse.mui-active .mui-table-view{display:block}.mui-table-view-cell.mui-collapse.mui-active>.mui-navigate-right:after,.mui-table-view-cell.mui-collapse.mui-active>.mui-push-right:after{content:'\e580'}.mui-table-view-cell.mui-collapse.mui-active .mui-table-view-cell>a:not(.mui-btn).mui-active{margin-left:-31px;padding-left:47px}.mui-table-view-cell.mui-collapse .mui-collapse-content{position:relative;display:none;overflow:hidden;margin:11px -15px -11px;padding:8px 15px;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease;background:#fff}.mui-table-view-cell.mui-collapse .mui-collapse-content>.mui-input-group,.mui-table-view-cell.mui-collapse .mui-collapse-content>.mui-slider{width:auto;height:auto;margin:-8px -15px}.mui-table-view-cell.mui-collapse .mui-collapse-content>.mui-slider{margin:-8px -16px}.mui-table-view-cell.mui-collapse .mui-table-view{display:none;margin-top:11px;margin-right:-15px;margin-bottom:-11px;margin-left:-15px;border:0}.mui-table-view-cell.mui-collapse .mui-table-view.mui-table-view-chevron{margin-right:-65px}.mui-table-view-cell.mui-collapse .mui-table-view .mui-table-view-cell{padding-left:31px;background-position:31px 100%}.mui-table-view-cell.mui-collapse .mui-table-view .mui-table-view-cell:after{position:absolute;right:0;bottom:0;left:30px;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#c8c7cc}.mui-table-view.mui-grid-view{font-size:0;display:block;width:100%;padding:0 10px 10px 0;white-space:normal}.mui-table-view.mui-grid-view .mui-table-view-cell{font-size:17px;display:inline-block;margin-right:-4px;padding:10px 0 0 14px;text-align:center;vertical-align:middle;background:0 0}.mui-table-view.mui-grid-view .mui-table-view-cell .mui-media-object{width:100%;max-width:100%;height:auto}.mui-table-view.mui-grid-view .mui-table-view-cell>a:not(.mui-btn){margin:-10px 0 0 -14px}.mui-table-view.mui-grid-view .mui-table-view-cell>a:not(.mui-btn).mui-active,.mui-table-view.mui-grid-view .mui-table-view-cell>a:not(.mui-btn):active{background:0 0}.mui-table-view.mui-grid-view .mui-table-view-cell .mui-media-body{font-size:15px;line-height:15px;display:block;width:100%;height:15px;margin-top:8px;text-overflow:ellipsis;color:#333}.mui-table-view.mui-grid-view .mui-table-view-cell:after,.mui-table-view.mui-grid-view .mui-table-view-cell:before{height:0}.mui-grid-view.mui-grid-9{margin:0;padding:0;border-top:1px solid #eee;border-left:1px solid #eee;background-color:#f2f2f2}.mui-grid-view.mui-grid-9:after,.mui-grid-view.mui-grid-9:before{display:table;content:' '}.mui-grid-view.mui-grid-9:after{clear:both;position:static}.mui-grid-view.mui-grid-9 .mui-table-view-cell{margin:0;padding:11px 15px;vertical-align:top;border-right:1px solid #eee;border-bottom:1px solid #eee}.mui-grid-view.mui-grid-9 .mui-table-view-cell.mui-active{background-color:#eee}.mui-grid-view.mui-grid-9 .mui-table-view-cell>a:not(.mui-btn){margin:0;padding:10px 0}.mui-grid-view.mui-grid-9:before{height:0}.mui-grid-view.mui-grid-9 .mui-media{color:#797979}.mui-grid-view.mui-grid-9 .mui-media .mui-icon{font-size:2.4em;position:relative}.mui-slider-cell{position:relative}.mui-slider-cell>.mui-slider-handle{z-index:1}.mui-slider-cell>.mui-slider-left,.mui-slider-cell>.mui-slider-right{position:absolute;z-index:0;top:0;bottom:0}.mui-slider-cell>.mui-slider-left{left:0}.mui-slider-cell>.mui-slider-right{right:0}input,select,textarea{font-family:'Helvetica Neue',Helvetica,sans-serif;font-size:17px;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent}input:focus,select:focus,textarea:focus{-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;-webkit-user-modify:read-write-plaintext-only}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{line-height:21px;width:100%;height:40px;margin-bottom:15px;padding:10px 15px;-webkit-user-select:text;border:1px solid rgba(0,0,0,.2);border-radius:3px;outline:0;background-color:#fff;-webkit-appearance:none}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}input[type=search]{font-size:16px;-webkit-box-sizing:border-box;box-sizing:border-box;height:34px;text-align:center;border:0;border-radius:6px;background-color:rgba(0,0,0,.1)}input[type=search]:focus{text-align:left}textarea{height:auto;resize:none}select{font-size:14px;height:auto;margin-top:1px;border:0!important;background-color:#fff}select:focus{-webkit-user-modify:read-only}.mui-input-group{position:relative;padding:0;border:0;background-color:#fff}.mui-input-group:after{position:absolute;right:0;bottom:0;left:0;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#c8c7cc}.mui-input-group:before{position:absolute;top:0;right:0;left:0;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#c8c7cc}.mui-input-group input,.mui-input-group textarea{margin-bottom:0;border:0;border-radius:0;background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.mui-input-group input[type=search]{background:0 0}.mui-input-group input:last-child{background-image:none}.mui-input-row{clear:left;overflow:hidden}.mui-input-row select{font-size:17px;height:37px;padding:0}.mui-input-row .mui-btn+input,.mui-input-row label+input,.mui-input-row:last-child{background:0 0}.mui-input-group .mui-input-row{height:40px}.mui-input-group .mui-input-row:after{position:absolute;right:0;bottom:0;left:15px;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#c8c7cc}.mui-input-row label{font-family:'Helvetica Neue',Helvetica,sans-serif;line-height:1.1;float:left;width:35%;padding:11px 15px}.mui-input-row label~input,.mui-input-row label~select,.mui-input-row label~textarea{float:right;width:65%;margin-bottom:0;padding-left:0;border:0}.mui-input-row .mui-btn{line-height:1.1;float:right;width:15%;padding:10px 15px}.mui-input-row .mui-btn~input,.mui-input-row .mui-btn~select,.mui-input-row .mui-btn~textarea{float:left;width:85%;margin-bottom:0;padding-left:0;border:0}.mui-button-row{position:relative;padding-top:5px;text-align:center}.mui-input-group .mui-button-row{height:45px}.mui-input-row{position:relative}.mui-input-row.mui-input-range{overflow:visible;padding-right:20px}.mui-input-row .mui-inline{padding:8px 0}.mui-input-row .mui-input-clear~.mui-icon-clear,.mui-input-row .mui-input-password~.mui-icon-eye,.mui-input-row .mui-input-speech~.mui-icon-speech{font-size:20px;position:absolute;z-index:1;top:10px;right:0;width:38px;height:38px;text-align:center;color:#999}.mui-input-row .mui-input-clear~.mui-icon-clear.mui-active,.mui-input-row .mui-input-password~.mui-icon-eye.mui-active,.mui-input-row .mui-input-speech~.mui-icon-speech.mui-active{color:#007aff}.mui-input-row .mui-input-speech~.mui-icon-speech{font-size:24px;top:8px}.mui-input-row .mui-input-clear~.mui-icon-clear~.mui-icon-speech{display:none}.mui-input-row .mui-input-clear~.mui-icon-clear.mui-hidden~.mui-icon-speech{display:inline-block}.mui-input-row .mui-icon-speech~.mui-placeholder{right:38px}.mui-input-row.mui-search .mui-icon-clear{top:7px}.mui-input-row.mui-search .mui-icon-speech{top:5px}.mui-checkbox,.mui-radio{position:relative}.mui-checkbox label,.mui-radio label{display:inline-block;float:none;width:100%;padding-right:58px}.mui-checkbox.mui-left input[type=checkbox],.mui-radio.mui-left input[type=radio]{left:20px}.mui-checkbox.mui-left label,.mui-radio.mui-left label{padding-right:15px;padding-left:58px}.mui-checkbox input[type=checkbox],.mui-radio input[type=radio]{position:absolute;top:4px;right:20px;display:inline-block;width:28px;height:26px;border:0;outline:0!important;background-color:transparent;-webkit-appearance:none}.mui-checkbox input[type=checkbox][disabled]:before,.mui-radio input[type=radio][disabled]:before{opacity:.3}.mui-checkbox input[type=checkbox]:before,.mui-radio input[type=radio]:before{font-family:Muiicons;font-size:28px;font-weight:400;line-height:1;text-decoration:none;color:#aaa;border-radius:0;background:0 0;-webkit-font-smoothing:antialiased}.mui-checkbox input[type=checkbox]:checked:before,.mui-radio input[type=radio]:checked:before{color:#007aff}.mui-checkbox label.mui-disabled,.mui-checkbox.mui-disabled label,.mui-radio label.mui-disabled,.mui-radio.mui-disabled label{opacity:.4}.mui-radio input[type=radio]:before{content:'\e411'}.mui-radio input[type=radio]:checked:before{content:'\e441'}.mui-checkbox input[type=checkbox]:before{content:'\e411'}.mui-checkbox input[type=checkbox]:checked:before{content:'\e442'}.mui-select{position:relative}.mui-select:before{font-family:Muiicons;position:absolute;top:8px;right:21px;content:'\e581';color:rgba(170,170,170,.6)}.mui-input-row .mui-switch{float:right;margin-top:5px;margin-right:20px}.mui-input-range input[type=range]{position:relative;width:100%;height:2px;margin:17px 0;padding:0;cursor:pointer;border:0;border-radius:3px;outline:0;background-color:#999;-webkit-appearance:none!important}.mui-input-range input[type=range]::-webkit-slider-thumb{width:28px;height:28px;border-color:#0062cc;border-radius:50%;background-color:#007aff;background-clip:padding-box;-webkit-appearance:none!important}.mui-input-range label~input[type=range]{width:65%}.mui-input-range .mui-tooltip{font-size:36px;line-height:64px;position:absolute;z-index:1;top:-70px;width:64px;height:64px;text-align:center;opacity:.8;color:#333;border:1px solid #ddd;border-radius:6px;background-color:#fff;text-shadow:0 1px 0 #f3f3f3}.mui-search{position:relative}.mui-search input[type=search]{padding-left:30px}.mui-search .mui-placeholder{font-size:16px;line-height:34px;position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;display:inline-block;height:34px;text-align:center;color:#999;border:0;border-radius:6px;background:0 0}.mui-search .mui-placeholder .mui-icon{font-size:20px;color:#333}.mui-search:before{font-family:Muiicons;font-size:20px;font-weight:400;position:absolute;top:50%;right:50%;display:none;margin-top:-18px;margin-right:31px;content:'\e466'}.mui-search.mui-active:before{font-size:20px;right:auto;left:5px;display:block;margin-right:0}.mui-search.mui-active input[type=search]{text-align:left}.mui-search.mui-active .mui-placeholder{display:none}.mui-segmented-control{font-size:15px;font-weight:400;position:relative;display:table;overflow:hidden;width:100%;table-layout:fixed;border:1px solid #007aff;border-radius:3px;background-color:transparent;-webkit-touch-callout:none}.mui-segmented-control.mui-segmented-control-vertical{border-collapse:collapse;border-width:0;border-radius:0}.mui-segmented-control.mui-segmented-control-vertical .mui-control-item{display:block;border-bottom:1px solid #c8c7cc;border-left-width:0}.mui-segmented-control.mui-scroll-wrapper{height:38px}.mui-segmented-control.mui-scroll-wrapper .mui-scroll{width:auto;height:40px;white-space:nowrap}.mui-segmented-control.mui-scroll-wrapper .mui-control-item{display:inline-block;width:auto;padding:0 20px;border:0}.mui-segmented-control .mui-control-item{line-height:38px;display:table-cell;overflow:hidden;width:1%;-webkit-transition:background-color .1s linear;transition:background-color .1s linear;text-align:center;white-space:nowrap;text-overflow:ellipsis;color:#007aff;border-color:#007aff;border-left:1px solid #007aff}.mui-segmented-control .mui-control-item:first-child{border-left-width:0}.mui-segmented-control .mui-control-item.mui-active{color:#fff;background-color:#007aff}.mui-segmented-control.mui-segmented-control-inverted{width:100%;border:0;border-radius:0}.mui-segmented-control.mui-segmented-control-inverted.mui-segmented-control-vertical .mui-control-item,.mui-segmented-control.mui-segmented-control-inverted.mui-segmented-control-vertical .mui-control-item.mui-active{border-bottom:1px solid #c8c7cc}.mui-segmented-control.mui-segmented-control-inverted .mui-control-item{color:inherit;border:0}.mui-segmented-control.mui-segmented-control-inverted .mui-control-item.mui-active{color:#007aff;border-bottom:2px solid #007aff;background:0 0}.mui-segmented-control.mui-segmented-control-inverted~.mui-slider-progress-bar{background-color:#007aff}.mui-segmented-control-positive{border:1px solid #4cd964}.mui-segmented-control-positive .mui-control-item{color:#4cd964;border-color:inherit}.mui-segmented-control-positive .mui-control-item.mui-active{color:#fff;background-color:#4cd964}.mui-segmented-control-positive.mui-segmented-control-inverted .mui-control-item.mui-active{color:#4cd964;border-bottom:2px solid #4cd964;background:0 0}.mui-segmented-control-positive.mui-segmented-control-inverted~.mui-slider-progress-bar{background-color:#4cd964}.mui-segmented-control-negative{border:1px solid #dd524d}.mui-segmented-control-negative .mui-control-item{color:#dd524d;border-color:inherit}.mui-segmented-control-negative .mui-control-item.mui-active{color:#fff;background-color:#dd524d}.mui-segmented-control-negative.mui-segmented-control-inverted .mui-control-item.mui-active{color:#dd524d;border-bottom:2px solid #dd524d;background:0 0}.mui-segmented-control-negative.mui-segmented-control-inverted~.mui-slider-progress-bar{background-color:#dd524d}.mui-control-content{position:relative;display:none}.mui-control-content.mui-active{display:block}.mui-popover{position:absolute;z-index:999;display:none;width:280px;-webkit-transition:opacity .3s;transition:opacity .3s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transform:none;transform:none;opacity:0;border-radius:7px;background-color:#f7f7f7;-webkit-box-shadow:0 0 15px rgba(0,0,0,.1);box-shadow:0 0 15px rgba(0,0,0,.1)}.mui-popover .mui-popover-arrow{position:absolute;z-index:1000;top:-25px;left:0;overflow:hidden;width:26px;height:26px}.mui-popover .mui-popover-arrow:after{position:absolute;top:19px;left:0;width:26px;height:26px;content:' ';-webkit-transform:rotate(45deg);transform:rotate(45deg);border-radius:3px;background:#f7f7f7}.mui-popover .mui-popover-arrow.mui-bottom{top:100%;left:-26px;margin-top:-1px}.mui-popover .mui-popover-arrow.mui-bottom:after{top:-19px;left:0}.mui-popover.mui-popover-action{bottom:0;width:100%;-webkit-transition:-webkit-transform .3s,opacity .3s;transition:transform .3s,opacity .3s;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);border-radius:0;background:0 0;-webkit-box-shadow:none;box-shadow:none}.mui-popover.mui-popover-action .mui-popover-arrow{display:none}.mui-popover.mui-popover-action.mui-popover-bottom{position:fixed}.mui-popover.mui-popover-action.mui-active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.mui-popover.mui-popover-action .mui-table-view{margin:8px;text-align:center;color:#007aff;border-radius:4px}.mui-popover.mui-popover-action .mui-table-view .mui-table-view-cell:after{position:absolute;right:0;bottom:0;left:0;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);background-color:#c8c7cc}.mui-popover.mui-popover-action .mui-table-view small{font-weight:400;line-height:1.3;display:block}.mui-popover.mui-active{display:block;opacity:1}.mui-popover .mui-bar~.mui-table-view{padding-top:44px}.mui-backdrop{position:fixed;z-index:998;top:0;right:0;bottom:0;left:0;background-color:rgba(0,0,0,.3)}.mui-bar-backdrop.mui-backdrop{bottom:50px;background:0 0}.mui-backdrop-action.mui-backdrop{background-color:rgba(0,0,0,.3)}.mui-backdrop-action.mui-backdrop,.mui-bar-backdrop.mui-backdrop{opacity:0}.mui-backdrop-action.mui-backdrop.mui-active,.mui-bar-backdrop.mui-backdrop.mui-active{-webkit-transition:all .4s ease;transition:all .4s ease;opacity:1}.mui-popover .mui-btn-block{margin-bottom:5px}.mui-popover .mui-btn-block:last-child{margin-bottom:0}.mui-popover .mui-bar{-webkit-box-shadow:none;box-shadow:none}.mui-popover .mui-bar-nav{border-bottom:1px solid rgba(0,0,0,.15);border-top-left-radius:12px;border-top-right-radius:12px;-webkit-box-shadow:none;box-shadow:none}.mui-popover .mui-scroll-wrapper{margin:7px 0;border-radius:7px;background-clip:padding-box}.mui-popover .mui-scroll .mui-table-view{max-height:none}.mui-popover .mui-table-view{overflow:auto;max-height:300px;margin-bottom:0;border-radius:7px;background-color:#f7f7f7;background-image:none;-webkit-overflow-scrolling:touch}.mui-popover .mui-table-view:after,.mui-popover .mui-table-view:before{height:0}.mui-popover .mui-table-view .mui-table-view-cell:first-child,.mui-popover .mui-table-view .mui-table-view-cell:first-child>a:not(.mui-btn){border-top-left-radius:12px;border-top-right-radius:12px}.mui-popover .mui-table-view .mui-table-view-cell:last-child,.mui-popover .mui-table-view .mui-table-view-cell:last-child>a:not(.mui-btn){border-bottom-right-radius:12px;border-bottom-left-radius:12px}.mui-popover.mui-bar-popover .mui-table-view{width:106px}.mui-popover.mui-bar-popover .mui-table-view .mui-table-view-cell{padding:11px 15px;background-position:0 100%}.mui-popover.mui-bar-popover .mui-table-view .mui-table-view-cell>a:not(.mui-btn){margin:-11px -15px -11px -15px}.mui-popup-backdrop{position:fixed;z-index:998;top:0;right:0;bottom:0;left:0;-webkit-transition-duration:400ms;transition-duration:400ms;opacity:0;background:rgba(0,0,0,.4)}.mui-popup-backdrop.mui-active{opacity:1}.mui-popup{position:fixed;z-index:10000;top:50%;left:50%;display:none;overflow:hidden;width:270px;-webkit-transition-property:-webkit-transform,opacity;transition-property:transform,opacity;-webkit-transform:translate3d(-50%,-50%,0) scale(1.185);transform:translate3d(-50%,-50%,0) scale(1.185);text-align:center;opacity:0;color:#000;border-radius:13px}.mui-popup.mui-popup-in{display:block;-webkit-transition-duration:400ms;transition-duration:400ms;-webkit-transform:translate3d(-50%,-50%,0) scale(1);transform:translate3d(-50%,-50%,0) scale(1);opacity:1}.mui-popup.mui-popup-out{-webkit-transition-duration:400ms;transition-duration:400ms;-webkit-transform:translate3d(-50%,-50%,0) scale(1);transform:translate3d(-50%,-50%,0) scale(1);opacity:0}.mui-popup-inner{position:relative;padding:15px;border-radius:13px 13px 0 0;background:rgba(255,255,255,.95)}.mui-popup-inner:after{position:absolute;z-index:15;top:auto;right:auto;bottom:0;left:0;display:block;width:100%;height:1px;content:'';-webkit-transform:scaleY(.5);transform:scaleY(.5);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;background-color:rgba(0,0,0,.2)}.mui-popup-title{font-size:18px;font-weight:500;text-align:center}.mui-popup-title+.mui-popup-text{font-family:inherit;font-size:14px;margin:5px 0 0}.mui-popup-buttons{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;height:44px;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.mui-popup-button{font-size:17px;line-height:44px;position:relative;display:block;overflow:hidden;box-sizing:border-box;width:100%;height:44px;padding:0 5px;cursor:pointer;text-align:center;white-space:nowrap;text-overflow:ellipsis;color:#007aff;background:rgba(255,255,255,.95);-webkit-box-flex:1}.mui-popup-button:after{position:absolute;z-index:15;top:0;right:0;bottom:auto;left:auto;display:block;width:1px;height:100%;content:'';-webkit-transform:scaleX(.5);transform:scaleX(.5);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;background-color:rgba(0,0,0,.2)}.mui-popup-button:first-child{border-radius:0 0 0 13px}.mui-popup-button:first-child:last-child{border-radius:0 0 13px 13px}.mui-popup-button:last-child{border-radius:0 0 13px}.mui-popup-button:last-child:after{display:none}.mui-popup-button.mui-popup-button-bold{font-weight:600}.mui-popup-input input{font-size:14px;width:100%;height:26px;margin:15px 0 0;padding:0 5px;border:1px solid rgba(0,0,0,.3);border-radius:0;background:#fff}.mui-plus.mui-android .mui-popup-backdrop{-webkit-transition-duration:1ms;transition-duration:1ms}.mui-plus.mui-android .mui-popup{-webkit-transition-duration:1ms;transition-duration:1ms;-webkit-transform:translate3d(-50%,-50%,0) scale(1);transform:translate3d(-50%,-50%,0) scale(1)}.mui-progressbar{position:relative;display:block;overflow:hidden;width:100%;height:2px;-webkit-transform-origin:center top;transform-origin:center top;vertical-align:middle;border-radius:2px;background:#b6b6b6;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.mui-progressbar span{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-transition:150ms;transition:150ms;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);background:#007aff}.mui-progressbar.mui-progressbar-infinite:before{position:absolute;top:0;left:0;width:100%;height:100%;content:'';-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transform-origin:left center;transform-origin:left center;-webkit-animation:mui-progressbar-infinite 1s linear infinite;animation:mui-progressbar-infinite 1s linear infinite;background:#007aff}body>.mui-progressbar{position:absolute;z-index:10000;top:44px;left:0;border-radius:0}.mui-progressbar-in{-webkit-animation:mui-progressbar-in 300ms forwards;animation:mui-progressbar-in 300ms forwards}.mui-progressbar-out{-webkit-animation:mui-progressbar-out 300ms forwards;animation:mui-progressbar-out 300ms forwards}@-webkit-keyframes mui-progressbar-in{from{-webkit-transform:scaleY(0);opacity:0}to{-webkit-transform:scaleY(1);opacity:1}}@keyframes mui-progressbar-in{from{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}@-webkit-keyframes mui-progressbar-out{from{-webkit-transform:scaleY(1);opacity:1}to{-webkit-transform:scaleY(0);opacity:0}}@keyframes mui-progressbar-out{from{transform:scaleY(1);opacity:1}to{transform:scaleY(0);opacity:0}}@-webkit-keyframes mui-progressbar-infinite{0%{-webkit-transform:translate3d(-50%,0,0) scaleX(.5)}100%{-webkit-transform:translate3d(100%,0,0) scaleX(.5)}}@keyframes mui-progressbar-infinite{0%{transform:translate3d(-50%,0,0) scaleX(.5)}100%{transform:translate3d(100%,0,0) scaleX(.5)}}.mui-pagination{display:inline-block;margin:0 auto;padding-left:0;border-radius:6px}.mui-pagination>li{display:inline}.mui-pagination>li>a,.mui-pagination>li>span{line-height:1.428571429;position:relative;float:left;margin-left:-1px;padding:6px 12px;text-decoration:none;color:#007aff;border:1px solid #ddd;background-color:#fff}.mui-pagination>li:first-child>a,.mui-pagination>li:first-child>span{margin-left:0;border-top-left-radius:6px;border-bottom-left-radius:6px;background-clip:padding-box}.mui-pagination>li:last-child>a,.mui-pagination>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px;background-clip:padding-box}.mui-pagination>li.mui-active>a,.mui-pagination>li.mui-active>a:active,.mui-pagination>li.mui-active>span,.mui-pagination>li.mui-active>span:active,.mui-pagination>li:active>a,.mui-pagination>li:active>a:active,.mui-pagination>li:active>span,.mui-pagination>li:active>span:active{z-index:2;cursor:default;color:#fff;border-color:#007aff;background-color:#007aff}.mui-pagination>li.mui-disabled>a,.mui-pagination>li.mui-disabled>a:active,.mui-pagination>li.mui-disabled>span,.mui-pagination>li.mui-disabled>span:active{opacity:.6;color:#777;border:1px solid #ddd;background-color:#fff}.mui-pagination-lg>li>a,.mui-pagination-lg>li>span{font-size:18px;padding:10px 16px}.mui-pagination-sm>li>a,.mui-pagination-sm>li>span{font-size:12px;padding:5px 10px}.mui-pager{padding-left:0;list-style:none;text-align:center}.mui-pager:after,.mui-pager:before{display:table;content:' '}.mui-pager:after{clear:both}.mui-pager li{display:inline}.mui-pager li>a,.mui-pager li>span{display:inline-block;padding:5px 14px;border:1px solid #ddd;border-radius:6px;background-color:#fff;background-clip:padding-box}.mui-pager li.mui-active>a,.mui-pager li.mui-active>span,.mui-pager li:active>a,.mui-pager li:active>span{cursor:default;text-decoration:none;color:#fff;border-color:#007aff;background-color:#007aff}.mui-pager .mui-next>a,.mui-pager .mui-next>span{float:right}.mui-pager .mui-previous>a,.mui-pager .mui-previous>span{float:left}.mui-pager .mui-disabled>a,.mui-pager .mui-disabled>a:active,.mui-pager .mui-disabled>span,.mui-pager .mui-disabled>span:active{opacity:.6;color:#777;border:1px solid #ddd;background-color:#fff}.mui-modal{position:fixed;z-index:999;top:0;overflow:hidden;width:100%;min-height:100%;-webkit-transition:-webkit-transform .25s,opacity 1ms .25s;transition:transform .25s,opacity 1ms .25s;-webkit-transition-timing-function:cubic-bezier(.1,.5,.1,1);transition-timing-function:cubic-bezier(.1,.5,.1,1);-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);opacity:0;background-color:#fff}.mui-modal.mui-active{height:100%;-webkit-transition:-webkit-transform .25s;transition:transform .25s;-webkit-transition-timing-function:cubic-bezier(.1,.5,.1,1);transition-timing-function:cubic-bezier(.1,.5,.1,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.mui-android .mui-modal .mui-bar{position:static}.mui-android .mui-modal .mui-bar-nav~.mui-content{padding-top:0}.mui-slider{position:relative;z-index:1;overflow:hidden;width:100%}.mui-slider .mui-segmented-control.mui-segmented-control-inverted .mui-control-item.mui-active{border-bottom:0}.mui-slider .mui-segmented-control.mui-segmented-control-inverted~.mui-slider-group .mui-slider-item{border-top:1px solid #c8c7cc;border-bottom:1px solid #c8c7cc}.mui-slider .mui-slider-group{font-size:0;position:relative;-webkit-transition:all 0s linear;transition:all 0s linear;white-space:nowrap}.mui-slider .mui-slider-group .mui-slider-item{font-size:14px;position:relative;display:inline-block;width:100%;height:100%;vertical-align:top;white-space:normal}.mui-slider .mui-slider-group .mui-slider-item>a:not(.mui-control-item){line-height:0;position:relative;display:block}.mui-slider .mui-slider-group .mui-slider-item img{width:100%}.mui-slider .mui-slider-group .mui-slider-item .mui-table-view:after,.mui-slider .mui-slider-group .mui-slider-item .mui-table-view:before{height:0}.mui-slider .mui-slider-group.mui-slider-loop{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}.mui-slider-title{line-height:30px;position:absolute;bottom:0;left:0;width:100%;height:30px;margin:0;text-align:left;text-indent:12px;opacity:.8;background-color:#000}.mui-slider-indicator{position:absolute;bottom:8px;width:100%;text-align:center;background:0 0}.mui-slider-indicator.mui-segmented-control{position:relative;bottom:auto}.mui-slider-indicator .mui-indicator{display:inline-block;width:6px;height:6px;margin:1px 6px;cursor:pointer;border-radius:50%;background:#aaa;-webkit-box-shadow:0 0 1px 1px rgba(130,130,130,.7);box-shadow:0 0 1px 1px rgba(130,130,130,.7)}.mui-slider-indicator .mui-active.mui-indicator{background:#fff}.mui-slider-indicator .mui-icon{font-size:20px;line-height:30px;width:40px;height:30px;margin:3px;text-align:center;border:1px solid #ddd}.mui-slider-indicator .mui-number{line-height:32px;display:inline-block;width:58px}.mui-slider-indicator .mui-number span{color:#ff5053}.mui-slider-progress-bar{z-index:1;height:2px;-webkit-transform:translateZ(0);transform:translateZ(0)}.mui-switch{position:relative;display:block;width:74px;height:30px;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:background-color,border;transition-property:background-color,border;border:2px solid #ddd;border-radius:20px;background-color:#fff;background-clip:padding-box}.mui-switch.mui-disabled{opacity:.3}.mui-switch .mui-switch-handle{position:absolute;z-index:1;top:-1px;left:-1px;width:28px;height:28px;-webkit-transition:.2s ease-in-out;transition:.2s ease-in-out;-webkit-transition-property:-webkit-transform,width,left;transition-property:transform,width,left;border-radius:16px;background-color:#fff;background-clip:padding-box;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.4);box-shadow:0 2px 5px rgba(0,0,0,.4)}.mui-switch:before{font-size:13px;position:absolute;top:3px;right:11px;content:'Off';text-transform:uppercase;color:#999}.mui-switch.mui-dragging{border-color:#f7f7f7;background-color:#f7f7f7}.mui-switch.mui-dragging .mui-switch-handle{width:38px}.mui-switch.mui-dragging.mui-active .mui-switch-handle{left:-11px;width:38px}.mui-switch.mui-active{border-color:#4cd964;background-color:#4cd964}.mui-switch.mui-active .mui-switch-handle{-webkit-transform:translate(43px,0);transform:translate(43px,0)}.mui-switch.mui-active:before{right:auto;left:15px;content:'On';color:#fff}.mui-switch input[type=checkbox]{display:none}.mui-switch-mini{width:47px}.mui-switch-mini:before{display:none}.mui-switch-mini.mui-active .mui-switch-handle{-webkit-transform:translate(16px,0);transform:translate(16px,0)}.mui-switch-blue.mui-active{border:2px solid #007aff;background-color:#007aff}.mui-content.mui-fade{left:0;opacity:0}.mui-content.mui-fade.mui-in{opacity:1}.mui-content.mui-sliding{z-index:2;-webkit-transition:-webkit-transform .4s;transition:transform .4s;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.mui-content.mui-sliding.mui-left{z-index:1;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.mui-content.mui-sliding.mui-right{z-index:3;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.mui-navigate-right:after,.mui-push-left:after,.mui-push-right:after{font-family:Muiicons;font-size:inherit;line-height:1;position:absolute;top:50%;display:inline-block;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-decoration:none;color:#bbb;-webkit-font-smoothing:antialiased}.mui-push-left:after{left:15px;content:'\e582'}.mui-navigate-right:after,.mui-push-right:after{right:15px;content:'\e583'}.mui-pull-bottom-pocket,.mui-pull-top-pocket{position:absolute;left:0;display:block;visibility:hidden;overflow:hidden;width:100%;height:50px}.mui-plus-pullrefresh .mui-pull-bottom-pocket,.mui-plus-pullrefresh .mui-pull-top-pocket{display:none;visibility:visible}.mui-pull-top-pocket{top:0}.mui-bar-nav~.mui-content .mui-pull-top-pocket{top:44px}.mui-bar-nav~.mui-bar-header-secondary~.mui-content .mui-pull-top-pocket{top:88px}.mui-pull-bottom-pocket{position:relative;bottom:0;height:40px}.mui-pull-bottom-pocket .mui-pull-loading{visibility:hidden}.mui-pull-bottom-pocket .mui-pull-loading.mui-in{display:inline-block}.mui-pull{font-weight:700;position:absolute;right:0;bottom:10px;left:0;text-align:center;color:#777}.mui-pull-loading{margin-right:10px;-webkit-transition:-webkit-transform .4s;transition:transform .4s;-webkit-transition-duration:400ms;transition-duration:400ms;vertical-align:middle}.mui-pull-loading.mui-reverse{-webkit-transform:rotate(180deg) translateZ(0);transform:rotate(180deg) translateZ(0)}.mui-pull-caption{font-size:15px;line-height:24px;position:relative;display:inline-block;overflow:visible;margin-top:0;vertical-align:middle}.mui-pull-caption span{display:none}.mui-pull-caption span.mui-in{display:inline}.mui-toast-container{line-height:17px;position:fixed;z-index:9999;bottom:50px;left:50%;-webkit-transition:opacity .3s;transition:opacity .3s;-webkit-transform:translate(-50%,0);transform:translate(-50%,0);opacity:0}.mui-toast-container.mui-active{opacity:.9}.mui-toast-message{font-size:14px;padding:10px 25px;text-align:center;color:#fff;border-radius:6px;background-color:#323232}.mui-numbox{position:relative;display:inline-block;overflow:hidden;width:120px;height:35px;padding:0 40px;vertical-align:top;vertical-align:middle;border:solid 1px #bbb;border-radius:3px;background-color:#efeff4}.mui-numbox [class*=btn-numbox],.mui-numbox [class*=numbox-btn]{font-size:18px;font-weight:400;line-height:100%;position:absolute;top:0;overflow:hidden;width:40px;height:100%;padding:0;color:#555;border:none;border-radius:0;background-color:#f9f9f9}.mui-numbox [class*=btn-numbox]:active,.mui-numbox [class*=numbox-btn]:active{background-color:#ccc}.mui-numbox [class*=btn-numbox][disabled],.mui-numbox [class*=numbox-btn][disabled]{color:silver}.mui-numbox .mui-btn-numbox-plus,.mui-numbox .mui-numbox-btn-plus{right:0;border-top-right-radius:3px;border-bottom-right-radius:3px}.mui-numbox .mui-btn-numbox-minus,.mui-numbox .mui-numbox-btn-minus{left:0;border-top-left-radius:3px;border-bottom-left-radius:3px}.mui-numbox .mui-input-numbox,.mui-numbox .mui-numbox-input{display:inline-block;overflow:hidden;width:100%!important;height:100%;margin:0;padding:0 3px!important;text-align:center;text-overflow:ellipsis;word-break:normal;border:none!important;border-right:solid 1px #ccc!important;border-left:solid 1px #ccc!important;border-radius:0!important}.mui-input-row .mui-numbox{float:right;margin:2px 8px}@font-face{font-family:Muiicons;font-weight:400;font-style:normal;src:url(../fonts/mui.ttf) format('truetype')}.mui-icon{font-family:Muiicons;font-size:24px;font-weight:400;font-style:normal;line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased}.mui-icon.mui-active{color:#007aff}.mui-icon.mui-right:before{float:right;padding-left:.2em}.mui-icon-contact:before{content:'\e100'}.mui-icon-person:before{content:'\e101'}.mui-icon-personadd:before{content:'\e102'}.mui-icon-contact-filled:before{content:'\e130'}.mui-icon-person-filled:before{content:'\e131'}.mui-icon-personadd-filled:before{content:'\e132'}.mui-icon-phone:before{content:'\e200'}.mui-icon-email:before{content:'\e201'}.mui-icon-chatbubble:before{content:'\e202'}.mui-icon-chatboxes:before{content:'\e203'}.mui-icon-phone-filled:before{content:'\e230'}.mui-icon-email-filled:before{content:'\e231'}.mui-icon-chatbubble-filled:before{content:'\e232'}.mui-icon-chatboxes-filled:before{content:'\e233'}.mui-icon-weibo:before{content:'\e260'}.mui-icon-weixin:before{content:'\e261'}.mui-icon-pengyouquan:before{content:'\e262'}.mui-icon-chat:before{content:'\e263'}.mui-icon-qq:before{content:'\e264'}.mui-icon-videocam:before{content:'\e300'}.mui-icon-camera:before{content:'\e301'}.mui-icon-mic:before{content:'\e302'}.mui-icon-location:before{content:'\e303'}.mui-icon-mic-filled:before,.mui-icon-speech:before{content:'\e332'}.mui-icon-location-filled:before{content:'\e333'}.mui-icon-micoff:before{content:'\e360'}.mui-icon-image:before{content:'\e363'}.mui-icon-map:before{content:'\e364'}.mui-icon-compose:before{content:'\e400'}.mui-icon-trash:before{content:'\e401'}.mui-icon-upload:before{content:'\e402'}.mui-icon-download:before{content:'\e403'}.mui-icon-close:before{content:'\e404'}.mui-icon-redo:before{content:'\e405'}.mui-icon-undo:before{content:'\e406'}.mui-icon-refresh:before{content:'\e407'}.mui-icon-star:before{content:'\e408'}.mui-icon-plus:before{content:'\e409'}.mui-icon-minus:before{content:'\e410'}.mui-icon-checkbox:before,.mui-icon-circle:before{content:'\e411'}.mui-icon-clear:before,.mui-icon-close-filled:before{content:'\e434'}.mui-icon-refresh-filled:before{content:'\e437'}.mui-icon-star-filled:before{content:'\e438'}.mui-icon-plus-filled:before{content:'\e439'}.mui-icon-minus-filled:before{content:'\e440'}.mui-icon-circle-filled:before{content:'\e441'}.mui-icon-checkbox-filled:before{content:'\e442'}.mui-icon-closeempty:before{content:'\e460'}.mui-icon-refreshempty:before{content:'\e461'}.mui-icon-reload:before{content:'\e462'}.mui-icon-starhalf:before{content:'\e463'}.mui-icon-spinner:before{content:'\e464'}.mui-icon-spinner-cycle:before{content:'\e465'}.mui-icon-search:before{content:'\e466'}.mui-icon-plusempty:before{content:'\e468'}.mui-icon-forward:before{content:'\e470'}.mui-icon-back:before,.mui-icon-left-nav:before{content:'\e471'}.mui-icon-checkmarkempty:before{content:'\e472'}.mui-icon-home:before{content:'\e500'}.mui-icon-navigate:before{content:'\e501'}.mui-icon-gear:before{content:'\e502'}.mui-icon-paperplane:before{content:'\e503'}.mui-icon-info:before{content:'\e504'}.mui-icon-help:before{content:'\e505'}.mui-icon-locked:before{content:'\e506'}.mui-icon-more:before{content:'\e507'}.mui-icon-flag:before{content:'\e508'}.mui-icon-home-filled:before{content:'\e530'}.mui-icon-gear-filled:before{content:'\e532'}.mui-icon-info-filled:before{content:'\e534'}.mui-icon-help-filled:before{content:'\e535'}.mui-icon-more-filled:before{content:'\e537'}.mui-icon-settings:before{content:'\e560'}.mui-icon-list:before{content:'\e562'}.mui-icon-bars:before{content:'\e563'}.mui-icon-loop:before{content:'\e565'}.mui-icon-paperclip:before{content:'\e567'}.mui-icon-eye:before{content:'\e568'}.mui-icon-arrowup:before{content:'\e580'}.mui-icon-arrowdown:before{content:'\e581'}.mui-icon-arrowleft:before{content:'\e582'}.mui-icon-arrowright:before{content:'\e583'}.mui-icon-arrowthinup:before{content:'\e584'}.mui-icon-arrowthindown:before{content:'\e585'}.mui-icon-arrowthinleft:before{content:'\e586'}.mui-icon-arrowthinright:before{content:'\e587'}.mui-icon-pulldown:before{content:'\e588'}.mui-fullscreen{position:absolute;top:0;right:0;bottom:0;left:0}.mui-fullscreen.mui-slider .mui-slider-group{height:100%}.mui-fullscreen .mui-segmented-control~.mui-slider-group{position:absolute;top:40px;bottom:0;width:100%;height:auto}.mui-fullscreen.mui-slider .mui-slider-item>a{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.mui-fullscreen .mui-off-canvas-wrap .mui-slider-item>a{top:auto;-webkit-transform:none;transform:none}.mui-bar-nav~.mui-content .mui-slider.mui-fullscreen{top:44px}.mui-bar-tab~.mui-content .mui-slider.mui-fullscreen .mui-segmented-control~.mui-slider-group{bottom:50px}.mui-android.mui-android-4-0 input:focus,.mui-android.mui-android-4-0 textarea:focus{-webkit-user-modify:inherit}.mui-android.mui-android-4-2 input,.mui-android.mui-android-4-2 textarea,.mui-android.mui-android-4-3 input,.mui-android.mui-android-4-3 textarea{-webkit-user-select:text}.mui-ios .mui-table-view-cell{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.mui-plus-visible,.mui-wechat-visible{display:none!important}.mui-plus-hidden,.mui-wechat-hidden{display:block!important}.mui-tab-item.mui-plus-hidden,.mui-tab-item.mui-wechat-hidden{display:table-cell!important}.mui-plus .mui-plus-visible,.mui-wechat .mui-wechat-visible{display:block!important}.mui-plus .mui-tab-item.mui-plus-visible,.mui-wechat .mui-tab-item.mui-wechat-visible{display:table-cell!important}.mui-plus .mui-plus-hidden,.mui-wechat .mui-wechat-hidden{display:none!important}.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-nav{height:64px;padding-top:20px}.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-nav~.mui-content{padding-top:64px}.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-header-secondary,.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-nav~.mui-content .mui-pull-top-pocket{top:64px}.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-header-secondary~.mui-content{padding-top:94px}.mui-iframe-wrapper{position:absolute;right:0;left:0;-webkit-overflow-scrolling:touch}.mui-iframe-wrapper iframe{width:100%;height:100%;border:0} \ No newline at end of file diff --git a/fonts/mui.ttf b/fonts/mui.ttf new file mode 100644 index 0000000000000000000000000000000000000000..45d3b04a371f3351b6dea69de647aa6b394c282b GIT binary patch literal 29884 zcmdUYd3;>edGyng1C%5n z2oT2xLP;PAB*Dp-l#u3Y#*j3WP$E*&CMj*xFH4iAi$j2>ZPKK_A1Q5$#@}=9j4T;Q znza1Wv1abM_nv)um*;)YF`0K=2l@QrQV-rlwA?N{7N2o2+Y zX8+OI6E|kgdw_2l_=AO8z}{eM?aAZ_(33K!@r zL_$6vV$b8@dn;G^&m>1RJSDQg<60kzCSLqZ&X3NKMRLn1-(Td!Ucp~m@`T_ev*9*c6xfkYsDEu(@!y{NtDdC~V` z_ltcm4!=16;-MF>dr5t%3ZbN0dygr_kJgQSD3A=}74 zdgFM>H#u!?W|TN}C(-ALpi^DgN2sdOJ#MP0Hd))}p$=J;9s7t~v>$d+mBtD5Fzugi|kqtQB5 z=d4z*s^hPhVX;^=8@F#?ySA${6xzOT`@Sot*KS+8ZG53nw^YoURJ6z~WAI!npv7Me*Yh>=OQv2`?*l>Nb6S5J33BrCcQ zr)%Y|o=h9fq%$<%J;2t|u3#;tk!a0!Z$r#0+(&KUO#IIBX7+I!s7vX3oo=+2H)U&+ z{z$~|sW&>jUWe1`y<3$fyU0YB-Y`5hY1W5=nxsjRT>gaQstG(@*Tm|mBa*4v(&Ubb zP9y4_J=Gmrv!)@WQM#}|eNjVybkI}d!QVS-g1&m)?Nq}x&XmXJr#HT65BnUo=^ygd zJ9A+{ILj6>i+7QY=IG{4!+pIynRF}?3OYn#tBX;QnM4$*AYv4VM43QXk>F04Ac8=r z2o>n4rfwPUXjOM*ZXrYJyYp3~ip(l-Q zN}=CqD5&_A0IqQaL%~2tz%Tn<)SuF+f-x8n*=Ne1dgT>5{YrUe;@8ZmaRvKkk zXpA`}pQ@--w28W}aU!*)(XS&+@lVoKQCImwY&sDuMmslb-_I6bsbuw+{qy%uoIaAM zqp~gtGX7*)kc8S~Fq`r-8tC(_smV!Fu4av|FMzUazM6=kCE{*F6(nA`qtS8XO!xln z8#<$$j0j}$!g;}DGYD@di?nCFWXIBoz3=`z!8hz5edvKZZk7mr?9uCo%t4P$wGqL@ zigf&{I0}#RtFtH;E9K+`O6|l>$vl{p%}#7{AOd!qGN-9bk?o2+htalEW-mIZEK8F_ zlI#*E3A_UBs}n1BqRiPeRrnRj%>Q0-ScvhRJIY}w&uBCoC;19(aCa5(_5uy*!A@_(7x1sw$hna|V!X!6f7l8&erryHTI`!nl;sDuh(Q761900%_WW41qm$_1T?Q<*qaFW z)e%K?+eK>?pmfczcd43!dx5Enrgep5$$NIO(bfY0%@lp$;|8Y`cPd_ z(SiX{bt{U>1W^+ma+j{@=p7NAWOpM5_`P^>P1%WqTuGj%*Hu^5BOm>3hp333{+*BA zcb6n9pMT=k%eIWy235DbvZ{Vr94C)s#(vprp2hO2+MrQIlrgF1ZB%xPvU`rWoub=0 z=hB(eAvzs%L?s@odWv9K=zMVcU4#-*q2ewtbvW#k#E#GMI$OUwJEtf+=iDw`_>D3$ z->NEME!NM@eBi-rPaHdX^^wDeW}csYes^(nWbK+7kPGDU zIq84V>J-ebSQq}vJO9_L(tqLg?Hc`GxmH)p5+kI`Y+oO(fe0f|lQTyM$3+o*n6e36 z7?&Fumm4zm>WDVtb4x2y15KtgRhrM~b0$4V^ITLIU?Ab3^_)6GX2XROd@h-RBooYFG>bWf3?vBbBA1D zxZ{aHYswFr-5FFOHFf$$i9o2x1NN}rt$S2mrge#ybqO?;UZh#uNWtu0KRDoqn#m$2@hm{^;R;cjc+0UKsP}eS(caV zWFJ{HZ4=|0V*$x7Q?o+j+lWeuy2m1!MA-)dY!_ww+(kk=y-a8?A+fDUr5^gV6Pdh} zYWymh|CObHYWj=QBg1R@x;mPh;9~|i3UA5qEz_^VZ{;Y`3W+J-@Rp7yBWEux z3R~C$*+lLpd(7fhR91fLMz32WGBdII6(%V2L{^{;lX(oiA~U6kNuW`p6)}#gMAagZ zL{XZ+f)J+&1ccE$-?ebdf&H^HTPKFh)@*ZQebVOUOM?r5ikwQO+iB&mP2j>D*S8?z z@kgm7-dBV-KZLdAzg$-(2BbSA=Tcys%*DixLRY>g*A=Xz7Hx?`xvD54brjFIepkS2 zF8V24bU4@`J8WWyO|;orLlERllw~KxG@Gh2SyP}Qbh6rXtRA9~9&(AIsQTThjk)Za zp8RZmFqksDJuPx=ecBc<4|VsoL>e0sDIdf=Ex~B5&k?Y*wp74i)Mj_kPykXRgs)(R z#XQcsI@#uGX-e6mvUpo`Eo7xS#m4Hw0)zUZIDJlPw?S=F?Yfp7Oso~^Ly*pbVTUuA ztk2b&v-!4;OuCubYJ%$v^5GVdZcewiM%ugbgSm8Ak3r3W_R0D-$FgC~r|UElvO|ic zVkpVNF2Cpr*Vv*#57%`Th#@R610k9CNWa7c}#jXrZZJik3 zv~g^7bY!5vsnO&0B+_oDzlC(gDKuO@o06$aDxFCxn0L?^pt*EcxL3Zrr=DvpmhOVAshGu;(mfSWGuc{S&7jy_eHz;UY$$5f2HI zkAB`yWr-7M8#Ko?eDMOE!Quuyu@{}oalu^7SAu9r=tte8Dr*H`Om?Q&n})Xo5tC)3DjhaC(R|6@{t7GiW3s%zc>yF`oG=mNSR zLkGn0qi+EG(s6{yR;(*Zh6w>^=^zdP(u_w6DH;B+(BPp7DlC+LvAn3uzhFOIO3)Jq zeeqA0SM;BhV|LEcqpj4Q`x)VmD=FT_ERw3g2|0v(0nZEwIzTVG&?(uV<_&;YK z`QQiMfBzltTDbL{@3`*0*S~lDVDDJp7$iKmTW^7Q0b}j?FZ6H4*3e~PN+KggllbvQLEV`Fa~}P zrr`)QL?XG2;SPnwWc%QnL}u64Ay>WW{^y3#uK3Z3t=A0Yr)wMCNUuBFx79e9H#gw& z`*c;;dp1fNxBC6r(Uv-05WSh9 z=KbBy^2;oc=}WA?QWCeU-&|<{fCiUtvB*%RsQfMnO!%nyz8tF}pkND|9j0tvFpack|{# zTb&<7g_svUAuO_oiB2Mryx58v#*=U>uglPB2erw zrEn%F&bgTjCPXJJIhgTI8GjHn385LS9hVWV)M6s6qg!Wh%+x_MWbwUzWPL zCc^C*7IsNX2A&EPn^aR_l3B5F8|n&K@-;FFh7^GCap16+aUE+J&vXD|i8DNdgHK`0RtRn4IwYozdmaNj$4^^izy-kLR4g~Tv(-GFDZ(TG%DT>GbJe;w+%yJD zH^y;Rc$U2Y3gaezNHeu0P1-^2=FR;bhEHH(4}@@5sC9tI(bgCfNH$Xw0vHL=v8uj9 zBm&o&gTVpw1?CY@Y(bI)P;5bvrU;^r*2Mz>kEgjYo~}y=!hx{I@9}#B8l(cgfk`TLo5SgiNl7X{8g6TXwRUoBGF(%L9enDpt#|#y>66c%Y?(ZC`^e6R zj}M)AX6w3UeqP!=Lc`69O4Id3O51;00%AHVIZ*T444_J?QJ94ihtteL%Y)9gb#=%blBfVB9l%h&NV@EH3``djql>+hjgk-NxAaviw*F>;h#L#`%A$YG3e0&BxZ zypZ?Zkl|oV!c4%>LI%XZkSLxIx`B?-QR|tV&d|Md550o!rbRkUHY8l^QfLc=sj1JqA_)Jr|oZLwk}b&#Ks=gFUvuaU2kKOuiio+E!mzD%Aai{wk> z8S;nZY0`rFYt%-5ME-$%(`pHqF-$r_-i>i|pgHQm4PG&z6{tHG zTzG}&2z*SaHpkT&qDgbmo%rfe=2faF2MMuDWSp;?tz3$chS$gGF1mvb(;>PZgfvTA zXcKKDOXL^i-^r`w$K;>MKaqbV-zR@fzDK@GeusRLd=Tz0eIQ6W(OZ1&EI%ma2bKI_ zaxJav3@8DYP)qAP0hhCdwL4NSN1ZbeQfet)xKc{0-3cW$ML`N~vQ<<~6m2$MxdvV>cssybLIDA? zJAmyfHdsF0s_IZx)s_hcp'$VQccNb$N^wd0*YQ7Wn|p&cj@k42jdt1@yIVHM^L zx578t=;qA1V$loFxeDDe{&?723QL(FZ92PbRS z+NMGwMg!2rHmFmG0r(5Wp%*Lp@u5H}Srm{St?kRhg{OYJTX%7;9Ljuz~wCNPD{hc}6F z{)Wy$#jK&^V~R|W7uUde)6pT^g3hN9?+|2(a!_?#kshybBXFZ2oRmZWRtPxM4-rq@Ns5E!5pXGeQmwxziVHb#z0RakcsxDQwo;PLt}Ksv6aJPMeJYkw9BzNWrED3Z?&_$op zefyqEE-Wy^6Ze)+#afzc=}mUO+aZ@XxPs_FG+LxLIYG~yhky5Ky3k*Kb@+~9v`2=% zO@L{cqzxye1aYOubd*?xus48#_6$+X#jtM3ZNTIOg z7eU^1w_PuCa_;nciXg=f*$G^W12z*7L#1s5eK;01xARQxE_fQfb-5PJEF}l#W@q;9 zxnlRO%eQaadfE8qv5_^s@BwK}r)ol8SU{Z)RU&n?&X2wahSml$nFK_uScXS1+LfV5 z`?!FcNTx9o+`Go|2mp2KSW5xV#)Uetav*Z`+${%QIWm`UAqW?8fs|-HNhgKjw+nJd zz5ARy)uxKkk!ZBBsfI1oq*8*St4j;cpsYESQ<~@!(oV-YzUo01Tw$+GJB=6Rf4FyU z?%ug;PfkspoXRJY7f3@-LqiWeFDUs$UAHP3Mt!7wHrm)2r870D@_w7k7Ie}XxL}}{ zePXi%(h~$lPt0$J>ZmegHh1s;LuOMa&nFM_yc(eNk_$6nx92fv>AUhYvN>O$(l*)#I~mAwQ3iPyL|_9TBftbi zVYIEaJJ;IR*4NyWZb%pvcn88-9gD(8WRP-sP6@~^;6N4kBi=xNx;ifuv>D0_rV1DG zj{n_9d{p@P&oR_g*2FFlhwpqB&K9=Q&z=6lk@4{(;|rNWB-@pZM6&Gs!^d)6g1q!9 z(?C-McOvOI{#DEovD`=hRG`7O(Cn#Gvu$5Ms_`T5D`X-(6_SGHtc+;`N3(1^1GrBC zWdUKrYqS}KyMuRWK)RAM*Z-P z^40n4+#<)>UN;cZuj=mdE5EvP|7cYoN>(3sVD5mtkpQ%}Jh{@`!`W~w>W4ba642WW zjD~0er$FyA-n&pIK>M*!fUH6Mc$0-9iTUna7v~l&&Gk^Q!yz|($RwK`6sbU!hOPqF zhzp)>n3jOV(4ImbYeWh4C{Wvg{{;LuXCcLg;4gZgY43zSyrzQ_2q5#^C$ob?p_H530M|+4K9C)Pj^el) z79sBr31o zSm`C?TR{I|QR*T$zp;v?PVfv+a9WUUAA54Lw|BCas;~Vllt_dGH-2BTy8tMqxvU`x zP7N{^y~gSH>q|_xvFByjXy^>m^iEPW5nj43oJfS(z2QXpZ4Oy7EP({A5a~&mtNa&C zvpGSCmtMuhRmtTS)(Kx=Un5PV2Uer~(1I4A2YiG)ZhrPU7>g!ARZjr*>@65R(4Z}& zBN0q6AP+<~ckZ}M5FG=sXljZK(~+bzos(upbVdL}Q=M>Kfdb-z9mD}_Q-eaQ*)Ru* z;KUU4QYUe%PIu8m6{5mdt4LhB?wTMjmp(;wmp*#?ZM!c2;DhhG|MaQbe*5;{zV((H zZ#a6*fw{eVF5kav|J3BBjpjgCM=Dtx3qj(5Q>qI<4@V|J4dMa_UAdrP1cYMPy zFhh`eXk47|!Pd#KM_@o)>&1`&lu*ETQy3eM6&o2ym7%MMK=5?sKCzsKuA}KfRV!Y{ zmEV*stX7RVSXn`%ph63eeZl_yuPMqmf%!o?m4!e1I+q0F?Zc8^n#*1$z<{8XU+dYE z8E#y6`QFEJvedbwYs=N?;MXh>@~LOP&Hxhr&BvEMt=jD_yQDr31QOz^U3gAXZQQ0L zxjOWS*WMV@BR;#YPOkC!oC@?3_DD0G+aU}K=e~JW{lGCVL{C{| zqxx&#-ue0F%t+?){^rj=~ZhgzuggrrIv zxDVewiruc<54mOp6H!=bSVJP}2^ z8ll1FFcbrB9;1uK2Yqx`sQkh8^iar*K=xO|q2>r^p#$a1f;CXS&!-N5N!K&>Tn7U_{&kJU2xjx2-HdY9*`ga0CG_Q6TwIc z@P*w)R2a%92qgM#L{vqPqv1*(4q&El$V9NKSYQ8jE=4nP*~FId&6_rE7#kfK9$McW z%-7^Rft=eN;+}2Y7CMTV4F@-$CGig^d0(!f;=3J(ww(ez%B6q!6|{-4x+WAj@cU9i zPDuH3f^jw(Ib#pHwX@CbsW7dP>`+kP@z2_t%I}m^yL3hZg%JLj>K;e=WoSZ{az{Jp z6F-W@?yU{R|GYL3XX_dxNzEN}G}bPCF_L7^YoV^%WHve~+cBj;Wu(TXN2t@o^(L-+ zLV+4F%W?Wb<%^-gELp_Zn3l}w2ZGV>_gJE}B7jWsuA=kU6o5s*H^{(A5l}O?*NKyu zXW|GUJ}-n#JC`s#st-Qze6Iqxq$WHKnF6STC*@)0d03Aw5VlYr3O(>Z=$OGL&3R@R zOJ~_kH-B`rTti>JSeLWN(oY7=waazEj5blee5hI#NI$<(RV26wWR(B1D&MoJLSHV| z@HKbz!ac(K*did6TG0B8S>M!{NjKD|k_n?O?w}AhLDRV`!_`4TM|bp~L^U^sxn4doAl=qk5-zu%wqC!_wL zTlTg=B62c(5Sdh=zm7Bfv3$_rmOw4c$lw6Xl%yFWV$ zn@PBL>$?VSOgUT*JVl8gQxDC3Ql>MvJ^SU`_uQyN#>~rlGpI7geYwtcq?xQS3k?p` zx!!QXvq|3MkQxwRX)EK7Ph~#T&=-@jqz>zX}jpi-?9jJC4>ntV}Xr%!o z6ciQ&cQ%zjv#-2B7YbXNTQ;ZC0b}&DcbC6Q8>v`KnQ~3@)Kn^85I=T-Tp(we&*#6a zcYp&iiYlwV8~5D)2FJgaV+pcM?70fNSk6ZYL(cCX#PX3hS!i;G7deDGTj?zp%S;$UeWTNoa~b_iUk zvHO-a`)}C4=J@f2X+(SAYI?T1(P8PY=1T|pu8C@FYn)89cM)qs!|ZA^TihVT13o7( zA^=MORIs%L-Z6}f<3iY0kQ>5=y)|&?LiH1NnvjGBNeE?>LMBlNB@|(?{Mg~c<;Q6F zC;-~Pv9@o2d*^qlyloqmze{hY1LZG2SN`%>zCs6n^uZ7Q{DD_r#TLJnK37N$Ns|pG zh)~6XpixPM@FmIIeMDiR0{0OMvcY8;v(eOxOSm=`b?a)4R^xNqSG$o`y0|MYLOWvc z0;&2i=Toa(MbU}qoysl_^v}A)Pk);D+0RzFg3g!zyfkm^9O>qL$lm!g9);KR;+#=n zM~ZPDD9mZ#RTAb1m&50lo5RgSz?*PkbQ?EvjA?2tS`+cO)vy-!xs^*R&HdOagHIEI z#HDpz8SwHG@R1;wRCM(q(|eNEI4{p@UdNSvYH#X_yIh@1TyZUVad|GTY{I!@?)}nA zV2uo1*e84$_BIbN_+~SMMO5(x1{HV{2+jc)Bj%|>aO`!s4+9gfLU7O)gn)3x(&j)q z=I(D{zu(f|?}F{cw$v|U3PVDS2iS9}+kssSFSujrz|v;Ku;RV;H#XQqAiQZdyUd;o z#3h@7}pd3*ZD0xVYPz@_J72`&G&h`u_&n ze|va^*uQR^Vr1AfbudOZP)}yU!GR7EAfdo^E$D}v*sv@tD%AET8w;p`($l@X>%&kw{(s*$o%R4|qrWcMM2i+;&ddu!3s3V2W zxlA*{W&m=;fJG}L!f6Hi#?9QTXv6C%!X;Dy*FdU4>3)N~(BHEB z))5MLbi1^4eEB5`Gsz5Fq#SdVpMX;vG=o)g9{bcPQI4K}>{At4E%X?d)%XH1fY;sx zX%}M-6pvApqf&#|0X6{Phnqt<%*U-d9HS?em7DPJxntApCue3pIXiJ?e>jr)>O1jj z-NAd=+4*ya4tr0X@*duF$4u|cC%^p3nSo;)l#}-#Ja_1_dk=z&vQ>1%#mC&HU>d*( zzztK7tuB>35FLVtH-M?uz(tM*E_^gV;s|Bvv?XgCrQxdVvB;&3o!@?@B56FwrH*g? z+XFxU056kVFhDpBj8BWjsX01m0X7&AagJ};f@Zdp59AbPA8aQ>!2l(Img@p7!4{Wp zQ{heQSJ6|zI+OvH>%ypUYRbI^x(0-TE~JvcoH-tgu4Clj7vHl@5KcUE{4=iroqErY z&un}69ar`+Hgf!f+pCWRW9waiFn{CMPL_Z1RAX;%z{zv4fdE|lHP5@87Y#nwTw#DJD^?A68 zJV==)nZyQ|#Kt|Gu{)8?+4-b^N?7DV7KQap;_?8WAGoYckSD+J!4ItM?e1)8Oc{Wg zf*!X`BQEN4SkncXF*h9m0qXJbJj-bxa}E@Hm@6OLRmSIXgQU7&#XttUJmz=}Nu z zY)9evWD}N-$g=&YG~M*b56=2h-Rnl{ukCzc$JN{JnR@)SCq{lqUFo@=YtKG%ZNuog z?v!s8-8Mk;8_Xo%=PvTi3Y_6ChnQ!x15i|r+5iqE}ELeczUO3Md z*$lKq`3Zuj#5#dZ^S8zY-8l8&;SwU0mV4_gv(-BIgyr6wU(u_P~#)j%+bEL4B%$ zr0WB_SE&<}&?K;M3`V?6=ExB&iwf7nKp^R*`#I1{0vV13EmvbNq%nW|nbI@401HN$<$~ZNsQ9i%8VA2J;uyocmnR$VfXJFtV^ei-be!ceP zm+A3`b}#0dXs-NcO$)iZ(9#vXD?$>aful=F$XE@4vY5&132_UUDNIFxG-2$3*f@cX z<9v^DzE_{Bi$`m~`64uet#+J5VS|vLyYX^H2ddLOAXMeOjFj*&lAGOC-?L^-Pp~uJ zx3;c&cl6AER5kJQWj?Hr)O6Js&OCIc5U7v(w93uh*Q`lYm2m$eAMcg^_mVjI9hjDm zjhE7ZOJ^Z4)=Ek(OjA-_l-0;m4X4g=8Y6P7m;k{RxZH0`GSQ$BuNWzYsTba*%nQ>3 z_&W|PCE-<>uRv9Yay`;9FV-GDpq<9~=n+x*nJyfdDsL z1oYA3`YjlkIt&D%Jv0XZH3>o-qi#6BLiokNE|J&Bf0CcV|LGsdi{yLcui%vRmvG?v zDx9{y1b3~c$Y;o7K9VH@Sn{O5RC+i`)nowS#0g7Uvd#&tqf+%&-s6 ziCv@>ti29CR0({cz*#PAd-2IYWv`q&51<0`ZZuoh3Tb3y> zA&5ep#c`0Bp8&v_JXlVe!|Spi42RoYEs+3mIY$guSRS5MBXA>(WpAmzg!P1b>LMv# zSmjjsVh>IxXv1zVP?#h(u5lRxaga$WX_aS{j-yDd>SRy>&P1(uyuQ34)pwl9!qn5v ztI1#GI=Dv!^0K5kUc6OBR0j-EtW>YE^DThsQ|%f=2{7hwNE*&wXT;n4$hCdF&O7%u zZ{D@J<+E{L)aBRpRvjbm6YWmfR~z&92WlnNp{trl@$na}y6$s10**Skhp86q&Eoz# zJOC5I&azf#(C_le9-A*#>tE-ON8#7u)0=rRzbopC`=gE^bH$C20T^1?5-bD0 zaH6gqhX{!MiaivrbI0vo{be&$UA&fYv`Ntc(W_`RUNpJ9y5AAxpeNc4cP0t_f_nu(gtwB^r>IC7s0Hlr zi@JGNAeGPQ_r+rVy0{*4PR89~#p}1*0$#=Ea9C|?O~ko#olQlLgq#kaB(+Mq*Law@3*Yb?6;5gk;g?#6D8~t!{pE=aM9E$0!OvcXpO3- zk~PiIW-uhL>QOo4_2OUqp!1jEfUvK^9+R$EZTYs=Ty=kZTBw4@@KIY) zyJs#z=f+z4jWnCB?+SQB5qQH;r%_Wg*6H&3V}219yNjCn>v3XMjP^F|ZA}FmJb`pm zEvg%CtLs`@KI4nQ{4UwCy##HCq_YTI$YhI4Q*a(gp!S-Lc4a(ziL}ObCli4sKmKR2fqvjlbbLq(04kX6OJy^Mh1*04{ zOL3{39}& zB!f|%7fd>XIqm`{&scj1M$I9(7r~#MW$6 zBZQHRkqHOgaZj8hcRG+CzHx&i0hOWc#vw|U1rjI_-!@cznigLdjs7e49K-{ImIGP& zS)1Dya4CHEjth;*r_=O1tKQQQL=D6{E!Q;-aa{pfgFj&)W<6<$t$K~-^5qK}K_J(5 zz$B2Uc>KrPLrfFK2bc{WVv^cP6{)qE0k$`zTz;$`EwmB~n*E!^GFKwJX*SCzv9$Be z;_$u3RzDCaLBoM7IOj;Epf4(Ri>VSe>H;QJu=x+ZzvA+VEA5D-F^#}CqnZw6$fmMi zn#}x73&O?&*XE5wW_`9h6>RGCa^Ea~1eP!f9&8!oxi}D^IqvAf#ZAtO1@5}&$-@?E zxx!d(Mb`Te=gI|ko`L*1FoZR6E$UTbiCnPR1m7{7xkg`eUfquXS_yC5A`w=N(hj4I2d3H0SzUcyKhaSrPx#*e% zEB}$=6*3j5&4L2hHWc_3x3 zmLnl5atLi%jO057`AKq6HC73deCHO2O{}+Ehy>;P6%r($M->s0Zy85E+^GktAVv11 zv26=tY$u*zt_f2Y#kFQQfma1CXOII08W&40N^9JgJL<)D5gkGec95({XXw= zBmsv^2;erd3h#7Tf(i=_ah$94fc8Z?$|Vaw%q4CO9+q1hEmWi zFm>b=Vc@XK=c~0C{ea=5X+;luyn(LzS(c`E<;H3*wxfKLpO2kvQx)MKj6^e}>8RV2 z4y0Q5zGH1yydCXY;dyRYH{cN}!b-y-(+Mj8n4bGs!GS_kg8}Z=q@vmt^X4)yTjpLy zHNc`(epO*oj99mHrox6+{c;S{yzmX!tWQ`xHw0CWbKN{yONO!MW;?k8qgzUVCR_!Q z!LUysZl8h;`;fsSAf?$gS+iS1pz$G4B;{~8#QfHNq5$`;0tur<7jdE+ zU|s*(HGRF@UzN)c4fT*5tdBc_sr)**fW7Yi_3uNlG52&Q{UJpa>WFjo;QF1A zebxI6)I$D*Jz)t;Yr50v?)1c}aJeEyRbJGw#M0l>Mf$Oiv4M|$jM6XBrN3th`XwHI zhVq+9OODDRlXUme%d2i^aMg{?P~C3TDF4iWiU*lW6%Ca&S~s8{{1$@12<$FTvp)sm zk%4?Zf*p!`;m3Ikxtn?`yX^OcaLk=x!wIQQhD|s7Fnb_`g05o=88{f!5-mVw%no3W zV24ftAf!D=Z8+TkE}0SPmRxQa>-<#2F1#Y~=(=Zucs%-47%p8pwx-Wm1=t=+Cz#S2+?G)fw>556nI-*3dUUBXMoFl_^6S$mmcmc)`;dL*qeHeHy3J)#)tq9y0 zB!aU)u0Dux;{99Msmc6-;^5b%zty2zuoQlmgqD6!G#!X`L}9_V`&^pl0v*&ME&Z|f zLPr$OZ7#?t8jitrV`~|F?N;6(eatW5p~i-w;mdGz)csam-TzY=+lzHS_KD;7r~X<$ z{^&#f&4F~(6KjtJ8e;BKm7?4}SNZ<_W<0b?#8aD9ZB;$+6|-!@oEu@^Ek&XO}>iseDc0*4J)Z{?h&q zdPT?5_aK`>*A87cCHy0M5}H>M(AOYYXRfKzgw`ya+UnwdoUUV8(?Vb@CNJ^LOn~k2 zP%C%m;YQ9vrehs;9zzOcO2`r%ph?N_Z_jta1+HSvfunn^5XX#wam6~RNBHLUoq;2V zr|9~lAJ|qnyk{aB>nc6}nFA2F3^s}2|3%PX?D$hhk1h5r#SRCzZx2!fKSvISDckBK{u1IB_);tnRDk8wM1MmRP`S8xww#=-++huCb|)yzPqi_A74q@YGj7vcFa> z`#Pr0hBIF|b7p_jSmX39)8WQmYJ>-d2Xl2TBa;*T6O$v&CpL@+Uq}z_?mTesyU^$;J$Wh0RSR-uSsZ{90s1NJo z^;!Cpi}gW0SE{pW%xbxZLC}lJpf;$qb$-)fL?9MX;IoyIv6w%V0x4|3xzyP5iN&7a z2g&gT4#@|!fWzlK^c^rDhP!V};VTD?mZ*e|eAz!sF1YWQgs{uz4 zN=9pAsg!_2B5>kml@sG!;sL&igCk+qxngoE&F(-wRt<=NodXz=H&z4|eUXpl#j2na z;ujuef6Zac%e+%n_G=g!#AbTqD@yl~s{gLPmB*`D(&r2)-f8y|EX`qLl)vtT6W;Yvljv z9J2|ZlTORJ{Bh-!x}bhlyFvSz?PlBO?6BrL{@wXE`bpOw&)2880RriTXr;Vo&0kWUPL^{#5-d4R@tU`liecncr`Gu1RmYx#_9q=d$kX zK=$d@jjeyz`fqJ|Te@wa?Nr-0+Jo(T+HbN(WG}thGL(UYz@)YVCqY0+(H=y*_{TvW ztd1K$>uq@q@gHsA4xNOLfPTb|Co3%CX|5WUklWg7n8&^iF_AHzxXF8}VTSxaR1FI- z>3y;q77^#C)vyE;;Du^fhGXQJ!~2gPn?HW+kb|;y4pI7HOBH= z1UqxBot>>+9i92*hnF9??)t;Wj~Shay4E;(a(?!0CyyUGeC(vrctb~9Uw4zydX3R* zv|eZAJB-#1Mpp+eHyNGXM(d46azoN+oi|#qU(OBQ_xs6l9G@|7{hq`=f&ssV`694AOENXBPZx12PF@y|E&>N6jn`JF+!hI`-*&w}E=sNu7t$MZMa3fyJ zj_Tb_xa-8S;qh<8ZxZj5*4@1I%jhoOX zIp&b{9`mqzU4EXc+*i|eRnv7Xr^{8}_f*sORMYoV)AuaD@3!*ERm;g$%gJ?A;=u@9 zd0)*pSIsw9%{N!gC)ZQSr@NX@cQv2xYChf7e7ZZ9#nBjuC%ASyPCdQ|L$tPz#>#BuiBpO<@WSc z>)BJSXHT`9LN)(FHUB~-eZJcMe6{`gYWwrm_UEhZ&v#Vv%~#u>@2IpR-%-gwUme$c zwcqpA_5xe9>Y1;$J6~-_zFPl$wf^~Pz4JZQe5>`&_g3ni@2%83-&?JBZ>3-Iy_J5= z_g2g4t+YGeTg|7p7weDW{~>a{VR?3uE+Gu<6?}X7S|Zt!F*Dy}vr%%r! z%H;G6o)}gn9_rzto|)(j{?C?ZiL?}psS=r-K2R*SmRQz6K4QZxsvr$dPM4(AP)SY= zMH7i)iO#f^glr1+G3L%mR}C5b&Eq!g*G(WeY@9YuBfE1QQp4$~>6yvs?6%@`s)%>y z_G!F`^4eF6YAuP`l8U?)d5@9!@;JI}cxI>+JP<>Tq%7X?O0m)XB|3W5 z%t&iVUVcVeQs+dmVa6Ceotov{X0?(;c~6v#D9T$dup~63W=D`#$)1y>(Gs0SSk0nM z2D)f?Gw%TeQbWa(o!@Q4ogH_rB`s?_DUz%B&wi9ratzNHr)P|kBQ=z2E!nc;JEqSm zbfj2cavn(C)LOD<$ET*pw^trU6L{{ko;$MVh;w-7^f{+<7{w2jw3Z@oHftEFw)mV4 z;d40ec&J2if-$O$Rv?DhFmxJyi?Y?`L<(t_!x%j)J@T;L715FnsQ-qU(!y0MJ$4Qo z4^ty0I$Rdu~H{OZY`6ZqAeJty+34;{;|{_HuKUjx~53cm)k=Tv?TWzT8+8qSuK zmS3~%2+9s4O%2NC*C@*7*BHv?*IJa#uW^*kuXQM!Uk#MauL+dRuSt~6uc<6rs?Qk1 z=*1b{b@-c_P8t2UO_jU{Vtk&rmg=*mR7)w<+*)eL8pa09kmbpjn(a*)r*}@j{vpP> zwUoZtr8HP-XfDw}ht-3b)h)jCRb$r3TkEPROG-jzhGVHLm&b!7_&JMyj0~iD&o$Bj zYSo-I`cZ@BSTmRgv%RgQmTX(7zqOQoleZZB{fNGbIhsSQ{> z(^sJlC5i=|rO;MUN*h*L5R(soR+N%F+H&A@Tgou{Pb07PmDfgFC6AKGsl{lEQJUea z$()*gf*FDleFB?1Yl=fdn9~}_1j<8+sj-=oIE;ykwM1Gfw2BSS%%w`g@a!CBJ{z8m zB0N*XLO`@x6bzb}8k_BnrjXAVA3kl^$_rUkvO)=<3AjO@w3H+)3yG&iI#5Co3Z6TD zK>?$wL~$iYj9v$CkAX6zbhSOHel)YwdR)@5NDN~vg??+nBxo&lSZ?Ac-=} zRw$3qK5N$CaSv{;%$7PY#-8CfR_s|T#A9D&g?QBc*;3cVsB`?rih95b@u>4wh(|q` zE#)poJ;ZOUsE4f(k9x!k@u*j4TT1GIl2AW+6DQvQC&!;8U)?s1BdYE#{(%bhdcOf8 zIRfUKI#JR`4Fm7>sqvD$efM;!J6dWi&Oq+k3F=i{=2w+iYUBx=q9L|CVYBmJ-G$%c z<6@&Wx(#ofve4)z!pONazk|%dZy{aa^CZ1+XGy&0oCKJJkpB;f C=Z*>h literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..56407fc --- /dev/null +++ b/index.html @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/js/mui.js b/js/mui.js new file mode 100644 index 0000000..485edfa --- /dev/null +++ b/js/mui.js @@ -0,0 +1,8386 @@ +/*! + * ===================================================== + * Mui v3.7.2 (http://dev.dcloud.net.cn/mui) + * ===================================================== + */ +/** + * MUI核心JS + * @type _L4.$|Function + */ +var mui = (function(document, undefined) { + var readyRE = /complete|loaded|interactive/; + var idSelectorRE = /^#([\w-]+)$/; + var classSelectorRE = /^\.([\w-]+)$/; + var tagSelectorRE = /^[\w-]+$/; + var translateRE = /translate(?:3d)?\((.+?)\)/; + var translateMatrixRE = /matrix(3d)?\((.+?)\)/; + + var $ = function(selector, context) { + context = context || document; + if (!selector) + return wrap(); + if (typeof selector === 'object') + if ($.isArrayLike(selector)) { + return wrap($.slice.call(selector), null); + } else { + return wrap([selector], null); + } + if (typeof selector === 'function') + return $.ready(selector); + if (typeof selector === 'string') { + try { + selector = selector.trim(); + if (idSelectorRE.test(selector)) { + var found = document.getElementById(RegExp.$1); + return wrap(found ? [found] : []); + } + return wrap($.qsa(selector, context), selector); + } catch (e) {} + } + return wrap(); + }; + + var wrap = function(dom, selector) { + dom = dom || []; + Object.setPrototypeOf(dom, $.fn); + dom.selector = selector || ''; + return dom; + }; + + $.uuid = 0; + + $.data = {}; + /** + * extend(simple) + * @param {type} target + * @param {type} source + * @param {type} deep + * @returns {unresolved} + */ + $.extend = function() { //from jquery2 + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + if (typeof target === "boolean") { + deep = target; + + target = arguments[i] || {}; + i++; + } + + if (typeof target !== "object" && !$.isFunction(target)) { + target = {}; + } + + if (i === length) { + target = this; + i--; + } + + for (; i < length; i++) { + if ((options = arguments[i]) != null) { + for (name in options) { + src = target[name]; + copy = options[name]; + + if (target === copy) { + continue; + } + + if (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone = src && $.isArray(src) ? src : []; + + } else { + clone = src && $.isPlainObject(src) ? src : {}; + } + + target[name] = $.extend(deep, clone, copy); + + } else if (copy !== undefined) { + target[name] = copy; + } + } + } + } + + return target; + }; + /** + * mui noop(function) + */ + $.noop = function() {}; + /** + * mui slice(array) + */ + $.slice = [].slice; + /** + * mui filter(array) + */ + $.filter = [].filter; + + $.type = function(obj) { + return obj == null ? String(obj) : class2type[{}.toString.call(obj)] || "object"; + }; + /** + * mui isArray + */ + $.isArray = Array.isArray || + function(object) { + return object instanceof Array; + }; + /** + * mui isArrayLike + * @param {Object} obj + */ + $.isArrayLike = function(obj) { + var length = !!obj && "length" in obj && obj.length; + var type = $.type(obj); + if (type === "function" || $.isWindow(obj)) { + return false; + } + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && (length - 1) in obj; + }; + /** + * mui isWindow(需考虑obj为undefined的情况) + */ + $.isWindow = function(obj) { + return obj != null && obj === obj.window; + }; + /** + * mui isObject + */ + $.isObject = function(obj) { + return $.type(obj) === "object"; + }; + /** + * mui isPlainObject + */ + $.isPlainObject = function(obj) { + return $.isObject(obj) && !$.isWindow(obj) && Object.getPrototypeOf(obj) === Object.prototype; + }; + /** + * mui isEmptyObject + * @param {Object} o + */ + $.isEmptyObject = function(o) { + for (var p in o) { + if (p !== undefined) { + return false; + } + } + return true; + }; + /** + * mui isFunction + */ + $.isFunction = function(value) { + return $.type(value) === "function"; + }; + /** + * mui querySelectorAll + * @param {type} selector + * @param {type} context + * @returns {Array} + */ + $.qsa = function(selector, context) { + context = context || document; + return $.slice.call(classSelectorRE.test(selector) ? context.getElementsByClassName(RegExp.$1) : tagSelectorRE.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector)); + }; + /** + * ready(DOMContentLoaded) + * @param {type} callback + * @returns {_L6.$} + */ + $.ready = function(callback) { + if (readyRE.test(document.readyState)) { + callback($); + } else { + document.addEventListener('DOMContentLoaded', function() { + callback($); + }, false); + } + return this; + }; + /** + * 将 fn 缓存一段时间后, 再被调用执行 + * 此方法为了避免在 ms 段时间内, 执行 fn 多次. 常用于 resize , scroll , mousemove 等连续性事件中; + * 当 ms 设置为 -1, 表示立即执行 fn, 即和直接调用 fn 一样; + * 调用返回函数的 stop 停止最后一次的 buffer 效果 + * @param {Object} fn + * @param {Object} ms + * @param {Object} context + */ + $.buffer = function(fn, ms, context) { + var timer; + var lastStart = 0; + var lastEnd = 0; + var ms = ms || 150; + + function run() { + if (timer) { + timer.cancel(); + timer = 0; + } + lastStart = $.now(); + fn.apply(context || this, arguments); + lastEnd = $.now(); + } + + return $.extend(function() { + if ( + (!lastStart) || // 从未运行过 + (lastEnd >= lastStart && $.now() - lastEnd > ms) || // 上次运行成功后已经超过ms毫秒 + (lastEnd < lastStart && $.now() - lastStart > ms * 8) // 上次运行或未完成,后8*ms毫秒 + ) { + run.apply(this, arguments); + } else { + if (timer) { + timer.cancel(); + } + timer = $.later(run, ms, null, $.slice.call(arguments)); + } + }, { + stop: function() { + if (timer) { + timer.cancel(); + timer = 0; + } + } + }); + }; + /** + * each + * @param {type} elements + * @param {type} callback + * @returns {_L8.$} + */ + $.each = function(elements, callback, hasOwnProperty) { + if (!elements) { + return this; + } + if (typeof elements.length === 'number') { + [].every.call(elements, function(el, idx) { + return callback.call(el, idx, el) !== false; + }); + } else { + for (var key in elements) { + if (hasOwnProperty) { + if (elements.hasOwnProperty(key)) { + if (callback.call(elements[key], key, elements[key]) === false) return elements; + } + } else { + if (callback.call(elements[key], key, elements[key]) === false) return elements; + } + } + } + return this; + }; + $.focus = function(element) { + if ($.os.ios) { + setTimeout(function() { + element.focus(); + }, 10); + } else { + element.focus(); + } + }; + /** + * trigger event + * @param {type} element + * @param {type} eventType + * @param {type} eventData + * @returns {_L8.$} + */ + $.trigger = function(element, eventType, eventData) { + element.dispatchEvent(new CustomEvent(eventType, { + detail: eventData, + bubbles: true, + cancelable: true + })); + return this; + }; + /** + * getStyles + * @param {type} element + * @param {type} property + * @returns {styles} + */ + $.getStyles = function(element, property) { + var styles = element.ownerDocument.defaultView.getComputedStyle(element, null); + if (property) { + return styles.getPropertyValue(property) || styles[property]; + } + return styles; + }; + /** + * parseTranslate + * @param {type} translateString + * @param {type} position + * @returns {Object} + */ + $.parseTranslate = function(translateString, position) { + var result = translateString.match(translateRE || ''); + if (!result || !result[1]) { + result = ['', '0,0,0']; + } + result = result[1].split(","); + result = { + x: parseFloat(result[0]), + y: parseFloat(result[1]), + z: parseFloat(result[2]) + }; + if (position && result.hasOwnProperty(position)) { + return result[position]; + } + return result; + }; + /** + * parseTranslateMatrix + * @param {type} translateString + * @param {type} position + * @returns {Object} + */ + $.parseTranslateMatrix = function(translateString, position) { + var matrix = translateString.match(translateMatrixRE); + var is3D = matrix && matrix[1]; + if (matrix) { + matrix = matrix[2].split(","); + if (is3D === "3d") + matrix = matrix.slice(12, 15); + else { + matrix.push(0); + matrix = matrix.slice(4, 7); + } + } else { + matrix = [0, 0, 0]; + } + var result = { + x: parseFloat(matrix[0]), + y: parseFloat(matrix[1]), + z: parseFloat(matrix[2]) + }; + if (position && result.hasOwnProperty(position)) { + return result[position]; + } + return result; + }; + $.hooks = {}; + $.addAction = function(type, hook) { + var hooks = $.hooks[type]; + if (!hooks) { + hooks = []; + } + hook.index = hook.index || 1000; + hooks.push(hook); + hooks.sort(function(a, b) { + return a.index - b.index; + }); + $.hooks[type] = hooks; + return $.hooks[type]; + }; + $.doAction = function(type, callback) { + if ($.isFunction(callback)) { //指定了callback + $.each($.hooks[type], callback); + } else { //未指定callback,直接执行 + $.each($.hooks[type], function(index, hook) { + return !hook.handle(); + }); + } + }; + /** + * setTimeout封装 + * @param {Object} fn + * @param {Object} when + * @param {Object} context + * @param {Object} data + */ + $.later = function(fn, when, context, data) { + when = when || 0; + var m = fn; + var d = data; + var f; + var r; + + if (typeof fn === 'string') { + m = context[fn]; + } + + f = function() { + m.apply(context, $.isArray(d) ? d : [d]); + }; + + r = setTimeout(f, when); + + return { + id: r, + cancel: function() { + clearTimeout(r); + } + }; + }; + $.now = Date.now || function() { + return +new Date(); + }; + var class2type = {}; + $.each(['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Object', 'Error'], function(i, name) { + class2type["[object " + name + "]"] = name.toLowerCase(); + }); + if (window.JSON) { + $.parseJSON = JSON.parse; + } + /** + * $.fn + */ + $.fn = { + each: function(callback) { + [].every.call(this, function(el, idx) { + return callback.call(el, idx, el) !== false; + }); + return this; + } + }; + + /** + * 兼容 AMD 模块 + **/ + if (typeof define === 'function' && define.amd) { + define('mui', [], function() { + return $; + }); + } + + return $; +})(document); +//window.mui = mui; +//'$' in window || (window.$ = mui); +/** + * $.os + * @param {type} $ + * @returns {undefined} + */ +(function($, window) { + function detect(ua) { + this.os = {}; + var funcs = [ + + function() { //wechat + var wechat = ua.match(/(MicroMessenger)\/([\d\.]+)/i); + if (wechat) { //wechat + this.os.wechat = { + version: wechat[2].replace(/_/g, '.') + }; + } + return false; + }, + function() { //android + var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); + if (android) { + this.os.android = true; + this.os.version = android[2]; + + this.os.isBadAndroid = !(/Chrome\/\d/.test(window.navigator.appVersion)); + } + return this.os.android === true; + }, + function() { //ios + var iphone = ua.match(/(iPhone\sOS)\s([\d_]+)/); + if (iphone) { //iphone + this.os.ios = this.os.iphone = true; + this.os.version = iphone[2].replace(/_/g, '.'); + } else { + var ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + if (ipad) { //ipad + this.os.ios = this.os.ipad = true; + this.os.version = ipad[2].replace(/_/g, '.'); + } + } + return this.os.ios === true; + } + ]; + [].every.call(funcs, function(func) { + return !func.call($); + }); + } + detect.call($, navigator.userAgent); +})(mui, window); +/** + * $.os.plus + * @param {type} $ + * @returns {undefined} + */ +(function($, document) { + function detect(ua) { + this.os = this.os || {}; + var plus = ua.match(/Html5Plus/i); //TODO 5\+Browser? + if (plus) { + this.os.plus = true; + $(function() { + document.body.classList.add('mui-plus'); + }); + if (ua.match(/StreamApp/i)) { //TODO 最好有流应用自己的标识 + this.os.stream = true; + $(function() { + document.body.classList.add('mui-plus-stream'); + }); + } + } + } + detect.call($, navigator.userAgent); +})(mui, document); +/** + * 仅提供简单的on,off(仅支持事件委托,不支持当前元素绑定,当前元素绑定请直接使用addEventListener,removeEventListener) + * @param {Object} $ + */ +(function($) { + if ('ontouchstart' in window) { + $.isTouchable = true; + $.EVENT_START = 'touchstart'; + $.EVENT_MOVE = 'touchmove'; + $.EVENT_END = 'touchend'; + } else { + $.isTouchable = false; + $.EVENT_START = 'mousedown'; + $.EVENT_MOVE = 'mousemove'; + $.EVENT_END = 'mouseup'; + } + $.EVENT_CANCEL = 'touchcancel'; + $.EVENT_CLICK = 'click'; + + var _mid = 1; + var delegates = {}; + //需要wrap的函数 + var eventMethods = { + preventDefault: 'isDefaultPrevented', + stopImmediatePropagation: 'isImmediatePropagationStopped', + stopPropagation: 'isPropagationStopped' + }; + //默认true返回函数 + var returnTrue = function() { + return true + }; + //默认false返回函数 + var returnFalse = function() { + return false + }; + //wrap浏览器事件 + var compatible = function(event, target) { + if (!event.detail) { + event.detail = { + currentTarget: target + }; + } else { + event.detail.currentTarget = target; + } + $.each(eventMethods, function(name, predicate) { + var sourceMethod = event[name]; + event[name] = function() { + this[predicate] = returnTrue; + return sourceMethod && sourceMethod.apply(event, arguments) + } + event[predicate] = returnFalse; + }, true); + return event; + }; + //简单的wrap对象_mid + var mid = function(obj) { + return obj && (obj._mid || (obj._mid = _mid++)); + }; + //事件委托对象绑定的事件回调列表 + var delegateFns = {}; + //返回事件委托的wrap事件回调 + var delegateFn = function(element, event, selector, callback) { + return function(e) { + //same event + var callbackObjs = delegates[element._mid][event]; + var handlerQueue = []; + var target = e.target; + var selectorAlls = {}; + for (; target && target !== document; target = target.parentNode) { + if (target === element) { + break; + } + if (~['click', 'tap', 'doubletap', 'longtap', 'hold'].indexOf(event) && (target.disabled || target.classList.contains('mui-disabled'))) { + break; + } + var matches = {}; + $.each(callbackObjs, function(selector, callbacks) { //same selector + selectorAlls[selector] || (selectorAlls[selector] = $.qsa(selector, element)); + if (selectorAlls[selector] && ~(selectorAlls[selector]).indexOf(target)) { + if (!matches[selector]) { + matches[selector] = callbacks; + } + } + }, true); + if (!$.isEmptyObject(matches)) { + handlerQueue.push({ + element: target, + handlers: matches + }); + } + } + selectorAlls = null; + e = compatible(e); //compatible event + $.each(handlerQueue, function(index, handler) { + target = handler.element; + var tagName = target.tagName; + if (event === 'tap' && (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && tagName !== 'SELECT')) { + e.preventDefault(); + e.detail && e.detail.gesture && e.detail.gesture.preventDefault(); + } + $.each(handler.handlers, function(index, handler) { + $.each(handler, function(index, callback) { + if (callback.call(target, e) === false) { + e.preventDefault(); + e.stopPropagation(); + } + }, true); + }, true) + if (e.isPropagationStopped()) { + return false; + } + }, true); + }; + }; + var findDelegateFn = function(element, event) { + var delegateCallbacks = delegateFns[mid(element)]; + var result = []; + if (delegateCallbacks) { + result = []; + if (event) { + var filterFn = function(fn) { + return fn.type === event; + } + return delegateCallbacks.filter(filterFn); + } else { + result = delegateCallbacks; + } + } + return result; + }; + var preventDefaultException = /^(INPUT|TEXTAREA|BUTTON|SELECT)$/; + /** + * mui delegate events + * @param {type} event + * @param {type} selector + * @param {type} callback + * @returns {undefined} + */ + $.fn.on = function(event, selector, callback) { //仅支持简单的事件委托,主要是tap事件使用,类似mouse,focus之类暂不封装支持 + return this.each(function() { + var element = this; + mid(element); + mid(callback); + var isAddEventListener = false; + var delegateEvents = delegates[element._mid] || (delegates[element._mid] = {}); + var delegateCallbackObjs = delegateEvents[event] || ((delegateEvents[event] = {})); + if ($.isEmptyObject(delegateCallbackObjs)) { + isAddEventListener = true; + } + var delegateCallbacks = delegateCallbackObjs[selector] || (delegateCallbackObjs[selector] = []); + delegateCallbacks.push(callback); + if (isAddEventListener) { + var delegateFnArray = delegateFns[mid(element)]; + if (!delegateFnArray) { + delegateFnArray = []; + } + var delegateCallback = delegateFn(element, event, selector, callback); + delegateFnArray.push(delegateCallback); + delegateCallback.i = delegateFnArray.length - 1; + delegateCallback.type = event; + delegateFns[mid(element)] = delegateFnArray; + element.addEventListener(event, delegateCallback); + if (event === 'tap') { //TODO 需要找个更好的解决方案 + element.addEventListener('click', function(e) { + if (e.target) { + var tagName = e.target.tagName; + if (!preventDefaultException.test(tagName)) { + if (tagName === 'A') { + var href = e.target.href; + if (!(href && ~href.indexOf('tel:'))) { + e.preventDefault(); + } + } else { + e.preventDefault(); + } + } + } + }); + } + } + }); + }; + $.fn.off = function(event, selector, callback) { + return this.each(function() { + var _mid = mid(this); + if (!event) { //mui(selector).off(); + delegates[_mid] && delete delegates[_mid]; + } else if (!selector) { //mui(selector).off(event); + delegates[_mid] && delete delegates[_mid][event]; + } else if (!callback) { //mui(selector).off(event,selector); + delegates[_mid] && delegates[_mid][event] && delete delegates[_mid][event][selector]; + } else { //mui(selector).off(event,selector,callback); + var delegateCallbacks = delegates[_mid] && delegates[_mid][event] && delegates[_mid][event][selector]; + $.each(delegateCallbacks, function(index, delegateCallback) { + if (mid(delegateCallback) === mid(callback)) { + delegateCallbacks.splice(index, 1); + return false; + } + }, true); + } + if (delegates[_mid]) { + //如果off掉了所有当前element的指定的event事件,则remove掉当前element的delegate回调 + if ((!delegates[_mid][event] || $.isEmptyObject(delegates[_mid][event]))) { + findDelegateFn(this, event).forEach(function(fn) { + this.removeEventListener(fn.type, fn); + delete delegateFns[_mid][fn.i]; + }.bind(this)); + } + } else { + //如果delegates[_mid]已不存在,删除所有 + findDelegateFn(this).forEach(function(fn) { + this.removeEventListener(fn.type, fn); + delete delegateFns[_mid][fn.i]; + }.bind(this)); + } + }); + + }; +})(mui); +/** + * mui target(action>popover>modal>tab>toggle) + */ +(function($, window, document) { + /** + * targets + */ + $.targets = {}; + /** + * target handles + */ + $.targetHandles = []; + /** + * register target + * @param {type} target + * @returns {$.targets} + */ + $.registerTarget = function(target) { + + target.index = target.index || 1000; + + $.targetHandles.push(target); + + $.targetHandles.sort(function(a, b) { + return a.index - b.index; + }); + + return $.targetHandles; + }; + window.addEventListener($.EVENT_START, function(event) { + var target = event.target; + var founds = {}; + for (; target && target !== document; target = target.parentNode) { + var isFound = false; + $.each($.targetHandles, function(index, targetHandle) { + var name = targetHandle.name; + if (!isFound && !founds[name] && targetHandle.hasOwnProperty('handle')) { + $.targets[name] = targetHandle.handle(event, target); + if ($.targets[name]) { + founds[name] = true; + if (targetHandle.isContinue !== true) { + isFound = true; + } + } + } else { + if (!founds[name]) { + if (targetHandle.isReset !== false) + $.targets[name] = false; + } + } + }); + if (isFound) { + break; + } + } + }); + window.addEventListener('click', function(event) { //解决touch与click的target不一致的问题(比如链接边缘点击时,touch的target为html,而click的target为A) + var target = event.target; + var isFound = false; + for (; target && target !== document; target = target.parentNode) { + if (target.tagName === 'A') { + $.each($.targetHandles, function(index, targetHandle) { + var name = targetHandle.name; + if (targetHandle.hasOwnProperty('handle')) { + if (targetHandle.handle(event, target)) { + isFound = true; + event.preventDefault(); + return false; + } + } + }); + if (isFound) { + break; + } + } + } + }); +})(mui, window, document); +/** + * fixed trim + * @param {type} undefined + * @returns {undefined} + */ +(function(undefined) { + if (String.prototype.trim === undefined) { // fix for iOS 3.2 + String.prototype.trim = function() { + return this.replace(/^\s+|\s+$/g, ''); + }; + } + Object.setPrototypeOf = Object.setPrototypeOf || function(obj, proto) { + obj['__proto__'] = proto; + return obj; + }; + +})(); +/** + * fixed CustomEvent + */ +(function() { + if (typeof window.CustomEvent === 'undefined') { + function CustomEvent(event, params) { + params = params || { + bubbles: false, + cancelable: false, + detail: undefined + }; + var evt = document.createEvent('Events'); + var bubbles = true; + for (var name in params) { + (name === 'bubbles') ? (bubbles = !!params[name]) : (evt[name] = params[name]); + } + evt.initEvent(event, bubbles, true); + return evt; + }; + CustomEvent.prototype = window.Event.prototype; + window.CustomEvent = CustomEvent; + } +})(); +/* + A shim for non ES5 supporting browsers. + Adds function bind to Function prototype, so that you can do partial application. + Works even with the nasty thing, where the first word is the opposite of extranet, the second one is the profession of Columbus, and the version number is 9, flipped 180 degrees. +*/ + +Function.prototype.bind = Function.prototype.bind || function(to) { + // Make an array of our arguments, starting from second argument + var partial = Array.prototype.splice.call(arguments, 1), + // We'll need the original function. + fn = this; + var bound = function() { + // Join the already applied arguments to the now called ones (after converting to an array again). + var args = partial.concat(Array.prototype.splice.call(arguments, 0)); + // If not being called as a constructor + if (!(this instanceof bound)) { + // return the result of the function called bound to target and partially applied. + return fn.apply(to, args); + } + // If being called as a constructor, apply the function bound to self. + fn.apply(this, args); + } + // Attach the prototype of the function to our newly created function. + bound.prototype = fn.prototype; + return bound; +}; +/** + * mui fixed classList + * @param {type} document + * @returns {undefined} + */ +(function(document) { + if (!("classList" in document.documentElement) && Object.defineProperty && typeof HTMLElement !== 'undefined') { + + Object.defineProperty(HTMLElement.prototype, 'classList', { + get: function() { + var self = this; + function update(fn) { + return function(value) { + var classes = self.className.split(/\s+/), + index = classes.indexOf(value); + + fn(classes, index, value); + self.className = classes.join(" "); + }; + } + + var ret = { + add: update(function(classes, index, value) { + ~index || classes.push(value); + }), + remove: update(function(classes, index) { + ~index && classes.splice(index, 1); + }), + toggle: update(function(classes, index, value) { + ~index ? classes.splice(index, 1) : classes.push(value); + }), + contains: function(value) { + return !!~self.className.split(/\s+/).indexOf(value); + }, + item: function(i) { + return self.className.split(/\s+/)[i] || null; + } + }; + + Object.defineProperty(ret, 'length', { + get: function() { + return self.className.split(/\s+/).length; + } + }); + + return ret; + } + }); + } +})(document); + +/** + * mui fixed requestAnimationFrame + * @param {type} window + * @returns {undefined} + */ +(function(window) { + if (!window.requestAnimationFrame) { + var lastTime = 0; + window.requestAnimationFrame = window.webkitRequestAnimationFrame || function(callback, element) { + var currTime = new Date().getTime(); + var timeToCall = Math.max(0, 16.7 - (currTime - lastTime)); + var id = window.setTimeout(function() { + callback(currTime + timeToCall); + }, timeToCall); + lastTime = currTime + timeToCall; + return id; + }; + window.cancelAnimationFrame = window.webkitCancelAnimationFrame || window.webkitCancelRequestAnimationFrame || function(id) { + clearTimeout(id); + }; + }; +}(window)); +/** + * fastclick(only for radio,checkbox) + */ +(function($, window, name) { + if (!$.os.android && !$.os.ios) { //目前仅识别android和ios + return; + } + if (window.FastClick) { + return; + } + + var handle = function(event, target) { + if (target.tagName === 'LABEL') { + if (target.parentNode) { + target = target.parentNode.querySelector('input'); + } + } + if (target && (target.type === 'radio' || target.type === 'checkbox')) { + if (!target.disabled) { //disabled + return target; + } + } + return false; + }; + + $.registerTarget({ + name: name, + index: 40, + handle: handle, + target: false + }); + var dispatchEvent = function(event) { + var targetElement = $.targets.click; + if (targetElement) { + var clickEvent, touch; + // On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect + if (document.activeElement && document.activeElement !== targetElement) { + document.activeElement.blur(); + } + touch = event.detail.gesture.changedTouches[0]; + // Synthesise a click event, with an extra attribute so it can be tracked + clickEvent = document.createEvent('MouseEvents'); + clickEvent.initMouseEvent('click', true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null); + clickEvent.forwardedTouchEvent = true; + targetElement.dispatchEvent(clickEvent); + event.detail && event.detail.gesture.preventDefault(); + } + }; + window.addEventListener('tap', dispatchEvent); + window.addEventListener('doubletap', dispatchEvent); + //捕获 + window.addEventListener('click', function(event) { + if ($.targets.click) { + if (!event.forwardedTouchEvent) { //stop click + if (event.stopImmediatePropagation) { + event.stopImmediatePropagation(); + } else { + // Part of the hack for browsers that don't support Event#stopImmediatePropagation + event.propagationStopped = true; + } + event.stopPropagation(); + event.preventDefault(); + return false; + } + } + }, true); + +})(mui, window, 'click'); +(function($, document) { + $(function() { + if (!$.os.ios) { + return; + } + var CLASS_FOCUSIN = 'mui-focusin'; + var CLASS_BAR_TAB = 'mui-bar-tab'; + var CLASS_BAR_FOOTER = 'mui-bar-footer'; + var CLASS_BAR_FOOTER_SECONDARY = 'mui-bar-footer-secondary'; + var CLASS_BAR_FOOTER_SECONDARY_TAB = 'mui-bar-footer-secondary-tab'; + // var content = document.querySelector('.' + CLASS_CONTENT); + // if (content) { + // document.body.insertBefore(content, document.body.firstElementChild); + // } + document.addEventListener('focusin', function(e) { + if ($.os.plus) { //在父webview里边不fix + if (window.plus) { + if (plus.webview.currentWebview().children().length > 0) { + return; + } + } + } + var target = e.target; + //TODO 需考虑所有键盘弹起的情况 + if (target.tagName && (target.tagName === 'TEXTAREA' || (target.tagName === 'INPUT' && (target.type === 'text' || target.type === 'search' || target.type === 'number')))) { + if (target.disabled || target.readOnly) { + return; + } + document.body.classList.add(CLASS_FOCUSIN); + var isFooter = false; + for (; target && target !== document; target = target.parentNode) { + var classList = target.classList; + if (classList && classList.contains(CLASS_BAR_TAB) || classList.contains(CLASS_BAR_FOOTER) || classList.contains(CLASS_BAR_FOOTER_SECONDARY) || classList.contains(CLASS_BAR_FOOTER_SECONDARY_TAB)) { + isFooter = true; + break; + } + } + if (isFooter) { + var scrollTop = document.body.scrollHeight; + var scrollLeft = document.body.scrollLeft; + setTimeout(function() { + window.scrollTo(scrollLeft, scrollTop); + }, 20); + } + } + }); + document.addEventListener('focusout', function(e) { + var classList = document.body.classList; + if (classList.contains(CLASS_FOCUSIN)) { + classList.remove(CLASS_FOCUSIN); + setTimeout(function() { + window.scrollTo(document.body.scrollLeft, document.body.scrollTop); + }, 20); + } + }); + }); +})(mui, document); +/** + * mui namespace(optimization) + * @param {type} $ + * @returns {undefined} + */ +(function($) { + $.namespace = 'mui'; + $.classNamePrefix = $.namespace + '-'; + $.classSelectorPrefix = '.' + $.classNamePrefix; + /** + * 返回正确的className + * @param {type} className + * @returns {String} + */ + $.className = function(className) { + return $.classNamePrefix + className; + }; + /** + * 返回正确的classSelector + * @param {type} classSelector + * @returns {String} + */ + $.classSelector = function(classSelector) { + return classSelector.replace(/\./g, $.classSelectorPrefix); + }; + /** + * 返回正确的eventName + * @param {type} event + * @param {type} module + * @returns {String} + */ + $.eventName = function(event, module) { + return event + ($.namespace ? ('.' + $.namespace) : '') + ( module ? ('.' + module) : ''); + }; +})(mui); + +/** + * mui gestures + * @param {type} $ + * @param {type} window + * @returns {undefined} + */ +(function($, window) { + $.gestures = { + session: {} + }; + /** + * Gesture preventDefault + * @param {type} e + * @returns {undefined} + */ + $.preventDefault = function(e) { + e.preventDefault(); + }; + /** + * Gesture stopPropagation + * @param {type} e + * @returns {undefined} + */ + $.stopPropagation = function(e) { + e.stopPropagation(); + }; + + /** + * register gesture + * @param {type} gesture + * @returns {$.gestures} + */ + $.addGesture = function(gesture) { + return $.addAction('gestures', gesture); + + }; + + var round = Math.round; + var abs = Math.abs; + var sqrt = Math.sqrt; + var atan = Math.atan; + var atan2 = Math.atan2; + /** + * distance + * @param {type} p1 + * @param {type} p2 + * @returns {Number} + */ + var getDistance = function(p1, p2, props) { + if(!props) { + props = ['x', 'y']; + } + var x = p2[props[0]] - p1[props[0]]; + var y = p2[props[1]] - p1[props[1]]; + return sqrt((x * x) + (y * y)); + }; + /** + * scale + * @param {Object} starts + * @param {Object} moves + */ + var getScale = function(starts, moves) { + if(starts.length >= 2 && moves.length >= 2) { + var props = ['pageX', 'pageY']; + return getDistance(moves[1], moves[0], props) / getDistance(starts[1], starts[0], props); + } + return 1; + }; + /** + * angle + * @param {type} p1 + * @param {type} p2 + * @returns {Number} + */ + var getAngle = function(p1, p2, props) { + if(!props) { + props = ['x', 'y']; + } + var x = p2[props[0]] - p1[props[0]]; + var y = p2[props[1]] - p1[props[1]]; + return atan2(y, x) * 180 / Math.PI; + }; + /** + * direction + * @param {Object} x + * @param {Object} y + */ + var getDirection = function(x, y) { + if(x === y) { + return ''; + } + if(abs(x) >= abs(y)) { + return x > 0 ? 'left' : 'right'; + } + return y > 0 ? 'up' : 'down'; + }; + /** + * rotation + * @param {Object} start + * @param {Object} end + */ + var getRotation = function(start, end) { + var props = ['pageX', 'pageY']; + return getAngle(end[1], end[0], props) - getAngle(start[1], start[0], props); + }; + /** + * px per ms + * @param {Object} deltaTime + * @param {Object} x + * @param {Object} y + */ + var getVelocity = function(deltaTime, x, y) { + return { + x: x / deltaTime || 0, + y: y / deltaTime || 0 + }; + }; + /** + * detect gestures + * @param {type} event + * @param {type} touch + * @returns {undefined} + */ + var detect = function(event, touch) { + if($.gestures.stoped) { + return; + } + $.doAction('gestures', function(index, gesture) { + if(!$.gestures.stoped) { + if($.options.gestureConfig[gesture.name] !== false) { + gesture.handle(event, touch); + } + } + }); + }; + /** + * 暂时无用 + * @param {Object} node + * @param {Object} parent + */ + var hasParent = function(node, parent) { + while(node) { + if(node == parent) { + return true; + } + node = node.parentNode; + } + return false; + }; + + var uniqueArray = function(src, key, sort) { + var results = []; + var values = []; + var i = 0; + + while(i < src.length) { + var val = key ? src[i][key] : src[i]; + if(values.indexOf(val) < 0) { + results.push(src[i]); + } + values[i] = val; + i++; + } + + if(sort) { + if(!key) { + results = results.sort(); + } else { + results = results.sort(function sortUniqueArray(a, b) { + return a[key] > b[key]; + }); + } + } + + return results; + }; + var getMultiCenter = function(touches) { + var touchesLength = touches.length; + if(touchesLength === 1) { + return { + x: round(touches[0].pageX), + y: round(touches[0].pageY) + }; + } + + var x = 0; + var y = 0; + var i = 0; + while(i < touchesLength) { + x += touches[i].pageX; + y += touches[i].pageY; + i++; + } + + return { + x: round(x / touchesLength), + y: round(y / touchesLength) + }; + }; + var multiTouch = function() { + return $.options.gestureConfig.pinch; + }; + var copySimpleTouchData = function(touch) { + var touches = []; + var i = 0; + while(i < touch.touches.length) { + touches[i] = { + pageX: round(touch.touches[i].pageX), + pageY: round(touch.touches[i].pageY) + }; + i++; + } + return { + timestamp: $.now(), + gesture: touch.gesture, + touches: touches, + center: getMultiCenter(touch.touches), + deltaX: touch.deltaX, + deltaY: touch.deltaY + }; + }; + + var calDelta = function(touch) { + var session = $.gestures.session; + var center = touch.center; + var offset = session.offsetDelta || {}; + var prevDelta = session.prevDelta || {}; + var prevTouch = session.prevTouch || {}; + + if(touch.gesture.type === $.EVENT_START || touch.gesture.type === $.EVENT_END) { + prevDelta = session.prevDelta = { + x: prevTouch.deltaX || 0, + y: prevTouch.deltaY || 0 + }; + + offset = session.offsetDelta = { + x: center.x, + y: center.y + }; + } + touch.deltaX = prevDelta.x + (center.x - offset.x); + touch.deltaY = prevDelta.y + (center.y - offset.y); + }; + var calTouchData = function(touch) { + var session = $.gestures.session; + var touches = touch.touches; + var touchesLength = touches.length; + + if(!session.firstTouch) { + session.firstTouch = copySimpleTouchData(touch); + } + + if(multiTouch() && touchesLength > 1 && !session.firstMultiTouch) { + session.firstMultiTouch = copySimpleTouchData(touch); + } else if(touchesLength === 1) { + session.firstMultiTouch = false; + } + + var firstTouch = session.firstTouch; + var firstMultiTouch = session.firstMultiTouch; + var offsetCenter = firstMultiTouch ? firstMultiTouch.center : firstTouch.center; + + var center = touch.center = getMultiCenter(touches); + touch.timestamp = $.now(); + touch.deltaTime = touch.timestamp - firstTouch.timestamp; + + touch.angle = getAngle(offsetCenter, center); + touch.distance = getDistance(offsetCenter, center); + + calDelta(touch); + + touch.offsetDirection = getDirection(touch.deltaX, touch.deltaY); + + touch.scale = firstMultiTouch ? getScale(firstMultiTouch.touches, touches) : 1; + touch.rotation = firstMultiTouch ? getRotation(firstMultiTouch.touches, touches) : 0; + + calIntervalTouchData(touch); + + }; + var CAL_INTERVAL = 25; + var calIntervalTouchData = function(touch) { + var session = $.gestures.session; + var last = session.lastInterval || touch; + var deltaTime = touch.timestamp - last.timestamp; + var velocity; + var velocityX; + var velocityY; + var direction; + + if(touch.gesture.type != $.EVENT_CANCEL && (deltaTime > CAL_INTERVAL || last.velocity === undefined)) { + var deltaX = last.deltaX - touch.deltaX; + var deltaY = last.deltaY - touch.deltaY; + + var v = getVelocity(deltaTime, deltaX, deltaY); + velocityX = v.x; + velocityY = v.y; + velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y; + direction = getDirection(deltaX, deltaY) || last.direction; + + session.lastInterval = touch; + } else { + velocity = last.velocity; + velocityX = last.velocityX; + velocityY = last.velocityY; + direction = last.direction; + } + + touch.velocity = velocity; + touch.velocityX = velocityX; + touch.velocityY = velocityY; + touch.direction = direction; + }; + var targetIds = {}; + var convertTouches = function(touches) { + for(var i = 0; i < touches.length; i++) { + !touches['identifier'] && (touches['identifier'] = 0); + } + return touches; + }; + var getTouches = function(event, touch) { + var allTouches = convertTouches($.slice.call(event.touches || [event])); + + var type = event.type; + + var targetTouches = []; + var changedTargetTouches = []; + + //当touchstart或touchmove且touches长度为1,直接获得all和changed + if((type === $.EVENT_START || type === $.EVENT_MOVE) && allTouches.length === 1) { + targetIds[allTouches[0].identifier] = true; + targetTouches = allTouches; + changedTargetTouches = allTouches; + touch.target = event.target; + } else { + var i = 0; + var targetTouches = []; + var changedTargetTouches = []; + var changedTouches = convertTouches($.slice.call(event.changedTouches || [event])); + + touch.target = event.target; + var sessionTarget = $.gestures.session.target || event.target; + targetTouches = allTouches.filter(function(touch) { + return hasParent(touch.target, sessionTarget); + }); + + if(type === $.EVENT_START) { + i = 0; + while(i < targetTouches.length) { + targetIds[targetTouches[i].identifier] = true; + i++; + } + } + + i = 0; + while(i < changedTouches.length) { + if(targetIds[changedTouches[i].identifier]) { + changedTargetTouches.push(changedTouches[i]); + } + if(type === $.EVENT_END || type === $.EVENT_CANCEL) { + delete targetIds[changedTouches[i].identifier]; + } + i++; + } + + if(!changedTargetTouches.length) { + return false; + } + } + targetTouches = uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true); + var touchesLength = targetTouches.length; + var changedTouchesLength = changedTargetTouches.length; + if(type === $.EVENT_START && touchesLength - changedTouchesLength === 0) { //first + touch.isFirst = true; + $.gestures.touch = $.gestures.session = { + target: event.target + }; + } + touch.isFinal = ((type === $.EVENT_END || type === $.EVENT_CANCEL) && (touchesLength - changedTouchesLength === 0)); + + touch.touches = targetTouches; + touch.changedTouches = changedTargetTouches; + return true; + + }; + var handleTouchEvent = function(event) { + var touch = { + gesture: event + }; + var touches = getTouches(event, touch); + if(!touches) { + return; + } + calTouchData(touch); + detect(event, touch); + $.gestures.session.prevTouch = touch; + if(event.type === $.EVENT_END && !$.isTouchable) { + $.gestures.touch = $.gestures.session = {}; + } + }; + var supportsPassive = (function checkPassiveListener() { + var supportsPassive = false; + try { + var opts = Object.defineProperty({}, 'passive', { + get: function get() { + supportsPassive = true; + }, + }); + window.addEventListener('testPassiveListener', null, opts); + } catch(e) { + // No support + } + return supportsPassive; + }()) + window.addEventListener($.EVENT_START, handleTouchEvent); + window.addEventListener($.EVENT_MOVE, handleTouchEvent, supportsPassive ? { + passive: false, + capture: false + } : false); + window.addEventListener($.EVENT_END, handleTouchEvent); + window.addEventListener($.EVENT_CANCEL, handleTouchEvent); + //fixed hashchange(android) + window.addEventListener($.EVENT_CLICK, function(e) { + //TODO 应该判断当前target是不是在targets.popover内部,而不是非要相等 + if(($.os.android || $.os.ios) && (($.targets.popover && e.target === $.targets.popover) || ($.targets.tab) || $.targets.offcanvas || $.targets.modal)) { + e.preventDefault(); + } + }, true); + + //增加原生滚动识别 + $.isScrolling = false; + var scrollingTimeout = null; + window.addEventListener('scroll', function() { + $.isScrolling = true; + scrollingTimeout && clearTimeout(scrollingTimeout); + scrollingTimeout = setTimeout(function() { + $.isScrolling = false; + }, 250); + }); +})(mui, window); +/** + * mui gesture flick[left|right|up|down] + * @param {type} $ + * @param {type} name + * @returns {undefined} + */ +(function($, name) { + var flickStartTime = 0; + var handle = function(event, touch) { + var session = $.gestures.session; + var options = this.options; + var now = $.now(); + switch (event.type) { + case $.EVENT_MOVE: + if (now - flickStartTime > 300) { + flickStartTime = now; + session.flickStart = touch.center; + } + break; + case $.EVENT_END: + case $.EVENT_CANCEL: + touch.flick = false; + if (session.flickStart && options.flickMaxTime > (now - flickStartTime) && touch.distance > options.flickMinDistince) { + touch.flick = true; + touch.flickTime = now - flickStartTime; + touch.flickDistanceX = touch.center.x - session.flickStart.x; + touch.flickDistanceY = touch.center.y - session.flickStart.y; + $.trigger(session.target, name, touch); + $.trigger(session.target, name + touch.direction, touch); + } + break; + } + + }; + /** + * mui gesture flick + */ + $.addGesture({ + name: name, + index: 5, + handle: handle, + options: { + flickMaxTime: 200, + flickMinDistince: 10 + } + }); +})(mui, 'flick'); +/** + * mui gesture swipe[left|right|up|down] + * @param {type} $ + * @param {type} name + * @returns {undefined} + */ +(function($, name) { + var handle = function(event, touch) { + var session = $.gestures.session; + if (event.type === $.EVENT_END || event.type === $.EVENT_CANCEL) { + var options = this.options; + touch.swipe = false; + //TODO 后续根据velocity计算 + if (touch.direction && options.swipeMaxTime > touch.deltaTime && touch.distance > options.swipeMinDistince) { + touch.swipe = true; + $.trigger(session.target, name, touch); + $.trigger(session.target, name + touch.direction, touch); + } + } + }; + /** + * mui gesture swipe + */ + $.addGesture({ + name: name, + index: 10, + handle: handle, + options: { + swipeMaxTime: 300, + swipeMinDistince: 18 + } + }); +})(mui, 'swipe'); +/** + * mui gesture drag[start|left|right|up|down|end] + * @param {type} $ + * @param {type} name + * @returns {undefined} + */ +(function($, name) { + var handle = function(event, touch) { + var session = $.gestures.session; + switch (event.type) { + case $.EVENT_START: + break; + case $.EVENT_MOVE: + if (!touch.direction || !session.target) { + return; + } + //修正direction,可在session期间自行锁定拖拽方向,方便开发scroll类不同方向拖拽插件嵌套 + if (session.lockDirection && session.startDirection) { + if (session.startDirection && session.startDirection !== touch.direction) { + if (session.startDirection === 'up' || session.startDirection === 'down') { + touch.direction = touch.deltaY < 0 ? 'up' : 'down'; + } else { + touch.direction = touch.deltaX < 0 ? 'left' : 'right'; + } + } + } + + if (!session.drag) { + session.drag = true; + $.trigger(session.target, name + 'start', touch); + } + $.trigger(session.target, name, touch); + $.trigger(session.target, name + touch.direction, touch); + break; + case $.EVENT_END: + case $.EVENT_CANCEL: + if (session.drag && touch.isFinal) { + $.trigger(session.target, name + 'end', touch); + } + break; + } + }; + /** + * mui gesture drag + */ + $.addGesture({ + name: name, + index: 20, + handle: handle, + options: { + fingers: 1 + } + }); +})(mui, 'drag'); +/** + * mui gesture tap and doubleTap + * @param {type} $ + * @param {type} name + * @returns {undefined} + */ +(function($, name) { + var lastTarget; + var lastTapTime; + var handle = function(event, touch) { + var session = $.gestures.session; + var options = this.options; + switch (event.type) { + case $.EVENT_END: + if (!touch.isFinal) { + return; + } + var target = session.target; + if (!target || (target.disabled || (target.classList && target.classList.contains('mui-disabled')))) { + return; + } + if (touch.distance < options.tapMaxDistance && touch.deltaTime < options.tapMaxTime) { + if ($.options.gestureConfig.doubletap && lastTarget && (lastTarget === target)) { //same target + if (lastTapTime && (touch.timestamp - lastTapTime) < options.tapMaxInterval) { + $.trigger(target, 'doubletap', touch); + lastTapTime = $.now(); + lastTarget = target; + return; + } + } + $.trigger(target, name, touch); + lastTapTime = $.now(); + lastTarget = target; + } + break; + } + }; + /** + * mui gesture tap + */ + $.addGesture({ + name: name, + index: 30, + handle: handle, + options: { + fingers: 1, + tapMaxInterval: 300, + tapMaxDistance: 5, + tapMaxTime: 250 + } + }); +})(mui, 'tap'); +/** + * mui gesture longtap + * @param {type} $ + * @param {type} name + * @returns {undefined} + */ +(function($, name) { + var timer; + var handle = function(event, touch) { + var session = $.gestures.session; + var options = this.options; + switch (event.type) { + case $.EVENT_START: + clearTimeout(timer); + timer = setTimeout(function() { + $.trigger(session.target, name, touch); + }, options.holdTimeout); + break; + case $.EVENT_MOVE: + if (touch.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; + case $.EVENT_END: + case $.EVENT_CANCEL: + clearTimeout(timer); + break; + } + }; + /** + * mui gesture longtap + */ + $.addGesture({ + name: name, + index: 10, + handle: handle, + options: { + fingers: 1, + holdTimeout: 500, + holdThreshold: 2 + } + }); +})(mui, 'longtap'); +/** + * mui gesture hold + * @param {type} $ + * @param {type} name + * @returns {undefined} + */ +(function($, name) { + var timer; + var handle = function(event, touch) { + var session = $.gestures.session; + var options = this.options; + switch (event.type) { + case $.EVENT_START: + if ($.options.gestureConfig.hold) { + timer && clearTimeout(timer); + timer = setTimeout(function() { + touch.hold = true; + $.trigger(session.target, name, touch); + }, options.holdTimeout); + } + break; + case $.EVENT_MOVE: + break; + case $.EVENT_END: + case $.EVENT_CANCEL: + if (timer) { + clearTimeout(timer) && (timer = null); + $.trigger(session.target, 'release', touch); + } + break; + } + }; + /** + * mui gesture hold + */ + $.addGesture({ + name: name, + index: 10, + handle: handle, + options: { + fingers: 1, + holdTimeout: 0 + } + }); +})(mui, 'hold'); +/** + * mui gesture pinch + * @param {type} $ + * @param {type} name + * @returns {undefined} + */ +(function($, name) { + var handle = function(event, touch) { + var options = this.options; + var session = $.gestures.session; + switch (event.type) { + case $.EVENT_START: + break; + case $.EVENT_MOVE: + if ($.options.gestureConfig.pinch) { + if (touch.touches.length < 2) { + return; + } + if (!session.pinch) { //start + session.pinch = true; + $.trigger(session.target, name + 'start', touch); + } + $.trigger(session.target, name, touch); + var scale = touch.scale; + var rotation = touch.rotation; + var lastScale = typeof touch.lastScale === 'undefined' ? 1 : touch.lastScale; + var scaleDiff = 0.000000000001; //防止scale与lastScale相等,不触发事件的情况。 + if (scale > lastScale) { //out + lastScale = scale - scaleDiff; + $.trigger(session.target, name + 'out', touch); + } //in + else if (scale < lastScale) { + lastScale = scale + scaleDiff; + $.trigger(session.target, name + 'in', touch); + } + if (Math.abs(rotation) > options.minRotationAngle) { + $.trigger(session.target, 'rotate', touch); + } + } + break; + case $.EVENT_END: + case $.EVENT_CANCEL: + if ($.options.gestureConfig.pinch && session.pinch && touch.touches.length === 2) { + session.pinch = false; + $.trigger(session.target, name + 'end', touch); + } + break; + } + }; + /** + * mui gesture pinch + */ + $.addGesture({ + name: name, + index: 10, + handle: handle, + options: { + minRotationAngle: 0 + } + }); +})(mui, 'pinch'); +/** + * mui.init + * @param {type} $ + * @returns {undefined} + */ +(function($) { + $.global = $.options = { + gestureConfig: { + tap: true, + doubletap: false, + longtap: false, + hold: false, + flick: true, + swipe: true, + drag: true, + pinch: false + } + }; + /** + * + * @param {type} options + * @returns {undefined} + */ + $.initGlobal = function(options) { + $.options = $.extend(true, $.global, options); + return this; + }; + var inits = {}; + + /** + * 单页配置 初始化 + * @param {object} options + */ + $.init = function(options) { + $.options = $.extend(true, $.global, options || {}); + $.ready(function() { + $.doAction('inits', function(index, init) { + var isInit = !!(!inits[init.name] || init.repeat); + if (isInit) { + init.handle.call($); + inits[init.name] = true; + } + }); + }); + return this; + }; + + /** + * 增加初始化执行流程 + * @param {function} init + */ + $.addInit = function(init) { + return $.addAction('inits', init); + }; + /** + * 处理html5版本subpages + */ + $.addInit({ + name: 'iframe', + index: 100, + handle: function() { + var options = $.options; + var subpages = options.subpages || []; + if (!$.os.plus && subpages.length) { + //暂时只处理单个subpage。后续可以考虑支持多个subpage + createIframe(subpages[0]); + } + } + }); + var createIframe = function(options) { + var wrapper = document.createElement('div'); + wrapper.className = 'mui-iframe-wrapper'; + var styles = options.styles || {}; + if (typeof styles.top !== 'string') { + styles.top = '0px'; + } + if (typeof styles.bottom !== 'string') { + styles.bottom = '0px'; + } + wrapper.style.top = styles.top; + wrapper.style.bottom = styles.bottom; + var iframe = document.createElement('iframe'); + iframe.src = options.url; + iframe.id = options.id || options.url; + iframe.name = iframe.id; + wrapper.appendChild(iframe); + document.body.appendChild(wrapper); + //目前仅处理微信 + $.os.wechat && handleScroll(wrapper, iframe); + }; + + function handleScroll(wrapper, iframe) { + var key = 'MUI_SCROLL_POSITION_' + document.location.href + '_' + iframe.src; + var scrollTop = (parseFloat(localStorage.getItem(key)) || 0); + if (scrollTop) { + (function(y) { + iframe.onload = function() { + window.scrollTo(0, y); + }; + })(scrollTop); + } + setInterval(function() { + var _scrollTop = window.scrollY; + if (scrollTop !== _scrollTop) { + localStorage.setItem(key, _scrollTop + ''); + scrollTop = _scrollTop; + } + }, 100); + }; + $(function() { + var classList = document.body.classList; + var os = []; + if ($.os.ios) { + os.push({ + os: 'ios', + version: $.os.version + }); + classList.add('mui-ios'); + } else if ($.os.android) { + os.push({ + os: 'android', + version: $.os.version + }); + classList.add('mui-android'); + } + if ($.os.wechat) { + os.push({ + os: 'wechat', + version: $.os.wechat.version + }); + classList.add('mui-wechat'); + } + if (os.length) { + $.each(os, function(index, osObj) { + var version = ''; + var classArray = []; + if (osObj.version) { + $.each(osObj.version.split('.'), function(i, v) { + version = version + (version ? '-' : '') + v; + classList.add($.className(osObj.os + '-' + version)); + }); + } + }); + } + }); +})(mui); +/** + * mui.init 5+ + * @param {type} $ + * @returns {undefined} + */ +(function($) { + var defaultOptions = { + swipeBack: false, + preloadPages: [], //5+ lazyLoad webview + preloadLimit: 10, //预加载窗口的数量限制(一旦超出,先进先出) + keyEventBind: { + backbutton: true, + menubutton: true + }, + titleConfig: { + height: "44px", + backgroundColor: "#f7f7f7", //导航栏背景色 + bottomBorderColor: "#cccccc", //底部边线颜色 + title: { //标题配置 + text: "", //标题文字 + position: { + top: 0, + left: 0, + width: "100%", + height: "100%" + }, + styles: { + color: "#000000", + align: "center", + family: "'Helvetica Neue',Helvetica,sans-serif", + size: "17px", + style: "normal", + weight: "normal", + fontSrc: "" + } + }, + back: { + image: { + base64Data: '', + imgSrc: '', + sprite: { + top: '0px', + left: '0px', + width: '100%', + height: '100%' + }, + position: { + top: "10px", + left: "10px", + width: "24px", + height: "24px" + } + } + } + } + }; + + //默认页面动画 + var defaultShow = { + event:"titleUpdate", + autoShow: true, + duration: 300, + aniShow: 'slide-in-right', + extras:{} + }; + //若执行了显示动画初始化操作,则要覆盖默认配置 + if($.options.show) { + defaultShow = $.extend(true, defaultShow, $.options.show); + } + + $.currentWebview = null; + + $.extend(true, $.global, defaultOptions); + $.extend(true, $.options, defaultOptions); + /** + * 等待动画配置 + * @param {type} options + * @returns {Object} + */ + $.waitingOptions = function(options) { + return $.extend(true, {}, { + autoShow: true, + title: '', + modal: false + }, options); + }; + /** + * 窗口显示配置 + * @param {type} options + * @returns {Object} + */ + $.showOptions = function(options) { + return $.extend(true, {}, defaultShow, options); + }; + /** + * 窗口默认配置 + * @param {type} options + * @returns {Object} + */ + $.windowOptions = function(options) { + return $.extend({ + scalable: false, + bounce: "" //vertical + }, options); + }; + /** + * plusReady + * @param {type} callback + * @returns {_L6.$} + */ + $.plusReady = function(callback) { + if(window.plus) { + setTimeout(function() { //解决callback与plusready事件的执行时机问题(典型案例:showWaiting,closeWaiting) + callback(); + }, 0); + } else { + document.addEventListener("plusready", function() { + callback(); + }, false); + } + return this; + }; + /** + * 5+ event(5+没提供之前我自己实现) + * @param {type} webview + * @param {type} eventType + * @param {type} data + * @returns {undefined} + */ + $.fire = function(webview, eventType, data) { + if(webview) { + if(typeof data === 'undefined') { + data = ''; + } else if(typeof data === 'boolean' || typeof data === 'number') { + webview.evalJS("typeof mui!=='undefined'&&mui.receive('" + eventType + "'," + data + ")"); + return; + } else if($.isPlainObject(data) || $.isArray(data)) { + data = JSON.stringify(data || {}).replace(/\'/g, "\\u0027").replace(/\\/g, "\\u005c"); + } + webview.evalJS("typeof mui!=='undefined'&&mui.receive('" + eventType + "','" + data + "')"); + } + }; + /** + * 5+ event(5+没提供之前我自己实现) + * @param {type} eventType + * @param {type} data + * @returns {undefined} + */ + $.receive = function(eventType, data) { + if(eventType) { + try { + if(data && typeof data === 'string') { + data = JSON.parse(data); + } + } catch(e) {} + $.trigger(document, eventType, data); + } + }; + var triggerPreload = function(webview) { + if(!webview.preloaded) { //保证仅触发一次 + $.fire(webview, 'preload'); + var list = webview.children(); + for(var i = 0; i < list.length; i++) { + $.fire(list[i], 'preload'); + } + webview.preloaded = true; + } + }; + var trigger = function(webview, eventType, timeChecked) { + if(timeChecked) { + if(!webview[eventType + 'ed']) { + $.fire(webview, eventType); + var list = webview.children(); + for(var i = 0; i < list.length; i++) { + $.fire(list[i], eventType); + } + webview[eventType + 'ed'] = true; + } + } else { + $.fire(webview, eventType); + var list = webview.children(); + for(var i = 0; i < list.length; i++) { + $.fire(list[i], eventType); + } + } + + }; + /** + * 打开新窗口 + * @param {string} url 要打开的页面地址 + * @param {string} id 指定页面ID + * @param {object} options 可选:参数,等待,窗口,显示配置{params:{},waiting:{},styles:{},show:{}} + */ + $.openWindow = function(url, id, options) { + if(typeof url === 'object') { + options = url; + url = options.url; + id = options.id || url; + } else { + if(typeof id === 'object') { + options = id; + id = options.id || url; + } else { + id = id || url; + } + } + if(!$.os.plus) { + //TODO 先临时这么处理:手机上顶层跳,PC上parent跳 + if($.os.ios || $.os.android) { + window.top.location.href = url; + } else { + window.parent.location.href = url; + } + return; + } + if(!window.plus) { + return; + } + + options = options || {}; + var params = options.params || {}; + var webview = null, + webviewCache = null, + nShow, nWaiting; + + if($.webviews[id]) { + webviewCache = $.webviews[id]; + //webview真实存在,才能获取 + if(plus.webview.getWebviewById(id)) { + webview = webviewCache.webview; + } + } else if(options.createNew !== true) { + webview = plus.webview.getWebviewById(id); + } + + if(webview) { //已缓存 + //每次show都需要传递动画参数; + //预加载的动画参数优先级:openWindow配置>preloadPages配置>mui默认配置; + nShow = webviewCache ? webviewCache.show : defaultShow; + nShow = options.show ? $.extend(nShow, options.show) : nShow; + nShow.autoShow && webview.show(nShow.aniShow, nShow.duration, function() { + triggerPreload(webview); + trigger(webview, 'pagebeforeshow', false); + }); + if(webviewCache) { + webviewCache.afterShowMethodName && webview.evalJS(webviewCache.afterShowMethodName + '(\'' + JSON.stringify(params) + '\')'); + } + return webview; + } else { //新窗口 + if(!url) { + throw new Error('webview[' + id + '] does not exist'); + } + + //显示waiting + var waitingConfig = $.waitingOptions(options.waiting); + if(waitingConfig.autoShow) { + nWaiting = plus.nativeUI.showWaiting(waitingConfig.title, waitingConfig.options); + } + + //创建页面 + options = $.extend(options, { + id: id, + url: url + }); + + webview = $.createWindow(options); + + //显示 + nShow = $.showOptions(options.show); + if(nShow.autoShow) { + var showWebview = function() { + //关闭等待框 + if(nWaiting) { + nWaiting.close(); + } + //显示页面 + webview.show(nShow.aniShow, nShow.duration, function() {},nShow.extras); + options.afterShowMethodName && webview.evalJS(options.afterShowMethodName + '(\'' + JSON.stringify(params) + '\')'); + }; + //titleUpdate触发时机早于loaded,更换为titleUpdate后,可以更早的显示webview + webview.addEventListener(nShow.event, showWebview, false); + //loaded事件发生后,触发预加载和pagebeforeshow事件 + webview.addEventListener("loaded", function() { + triggerPreload(webview); + trigger(webview, 'pagebeforeshow', false); + }, false); + } + } + return webview; + }; + + $.openWindowWithTitle = function(options, titleConfig) { + options = options || {}; + var url = options.url; + var id = options.id || url; + + if(!$.os.plus) { + //TODO 先临时这么处理:手机上顶层跳,PC上parent跳 + if($.os.ios || $.os.android) { + window.top.location.href = url; + } else { + window.parent.location.href = url; + } + return; + } + if(!window.plus) { + return; + } + + var params = options.params || {}; + var webview = null, + webviewCache = null, + nShow, nWaiting; + + if($.webviews[id]) { + webviewCache = $.webviews[id]; + //webview真实存在,才能获取 + if(plus.webview.getWebviewById(id)) { + webview = webviewCache.webview; + } + } else if(options.createNew !== true) { + webview = plus.webview.getWebviewById(id); + } + + if(webview) { //已缓存 + //每次show都需要传递动画参数; + //预加载的动画参数优先级:openWindow配置>preloadPages配置>mui默认配置; + nShow = webviewCache ? webviewCache.show : defaultShow; + nShow = options.show ? $.extend(nShow, options.show) : nShow; + nShow.autoShow && webview.show(nShow.aniShow, nShow.duration, function() { + triggerPreload(webview); + trigger(webview, 'pagebeforeshow', false); + }); + if(webviewCache) { + webviewCache.afterShowMethodName && webview.evalJS(webviewCache.afterShowMethodName + '(\'' + JSON.stringify(params) + '\')'); + } + return webview; + } else { //新窗口 + if(!url) { + throw new Error('webview[' + id + '] does not exist'); + } + + //显示waiting + var waitingConfig = $.waitingOptions(options.waiting); + if(waitingConfig.autoShow) { + nWaiting = plus.nativeUI.showWaiting(waitingConfig.title, waitingConfig.options); + } + + //创建页面 + options = $.extend(options, { + id: id, + url: url + }); + + webview = $.createWindow(options); + + if(titleConfig) { //处理原生头 + $.extend(true, $.options.titleConfig, titleConfig); + var tid = $.options.titleConfig.id ? $.options.titleConfig.id : id + "_title"; + var view = new plus.nativeObj.View(tid, { + top: 0, + height: $.options.titleConfig.height, + width: "100%", + dock: "top", + position: "dock" + }); + view.drawRect($.options.titleConfig.backgroundColor); //绘制背景色 + var _b = parseInt($.options.titleConfig.height) - 1; + view.drawRect($.options.titleConfig.bottomBorderColor, { + top: _b + "px", + left: "0px" + }); //绘制底部边线 + + //绘制文字 + if($.options.titleConfig.title.text){ + var _title = $.options.titleConfig.title; + view.drawText(_title.text,_title.position , _title.styles); + } + + //返回图标绘制 + var _back = $.options.titleConfig.back; + var backClick = null; + //优先字体 + + //其次是图片 + var _backImage = _back.image; + if(_backImage.base64Data || _backImage.imgSrc) { + //TODO 此处需要处理百分比的情况 + backClick = { + left:parseInt(_backImage.position.left), + right:parseInt(_backImage.position.left) + parseInt(_backImage.position.width) + }; + var bitmap = new plus.nativeObj.Bitmap(id + "_back"); + if(_backImage.base64Data) { //优先base64编码字符串 + bitmap.loadBase64Data(_backImage.base64Data); + } else { //其次加载图片文件 + bitmap.load(_backImage.imgSrc); + } + view.drawBitmap(bitmap,_backImage.sprite , _backImage.position); + } + + //处理点击事件 + view.setTouchEventRect({ + top: "0px", + left: "0px", + width: "100%", + height: "100%" + }); + view.interceptTouchEvent(true); + view.addEventListener("click", function(e) { + var x = e.clientX; + + //返回按钮点击 + if(backClick&& x > backClick.left && x < backClick.right){ + if( _back.click && $.isFunction(_back.click)){ + _back.click(); + }else{ + webview.evalJS("window.mui&&mui.back();"); + } + } + }, false); + webview.append(view); + + } + + //显示 + nShow = $.showOptions(options.show); + if(nShow.autoShow) { + //titleUpdate触发时机早于loaded,更换为titleUpdate后,可以更早的显示webview + webview.addEventListener(nShow.event, function () { + //关闭等待框 + if(nWaiting) { + nWaiting.close(); + } + //显示页面 + webview.show(nShow.aniShow, nShow.duration, function() {},nShow.extras); + }, false); + } + } + return webview; + }; + + /** + * 根据配置信息创建一个webview + * @param {type} options + * @param {type} isCreate + * @returns {webview} + */ + $.createWindow = function(options, isCreate) { + if(!window.plus) { + return; + } + var id = options.id || options.url; + var webview; + if(options.preload) { + if($.webviews[id] && $.webviews[id].webview.getURL()) { //已经cache + webview = $.webviews[id].webview; + } else { //新增预加载窗口 + //判断是否携带createNew参数,默认为false + if(options.createNew !== true) { + webview = plus.webview.getWebviewById(id); + } + + //之前没有,那就新创建 + if(!webview) { + webview = plus.webview.create(options.url, id, $.windowOptions(options.styles), $.extend({ + preload: true + }, options.extras)); + if(options.subpages) { + $.each(options.subpages, function(index, subpage) { + var subpageId = subpage.id || subpage.url; + if(subpageId) { //过滤空对象 + var subWebview = plus.webview.getWebviewById(subpageId); + if(!subWebview) { //如果该webview不存在,则创建 + subWebview = plus.webview.create(subpage.url, subpageId, $.windowOptions(subpage.styles), $.extend({ + preload: true + }, subpage.extras)); + } + webview.append(subWebview); + } + }); + } + } + } + + //TODO 理论上,子webview也应该计算到预加载队列中,但这样就麻烦了,要退必须退整体,否则可能出现问题; + $.webviews[id] = { + webview: webview, //目前仅preload的缓存webview + preload: true, + show: $.showOptions(options.show), + afterShowMethodName: options.afterShowMethodName //就不应该用evalJS。应该是通过事件消息通讯 + }; + //索引该预加载窗口 + var preloads = $.data.preloads; + var index = preloads.indexOf(id); + if(~index) { //删除已存在的(变相调整插入位置) + preloads.splice(index, 1); + } + preloads.push(id); + if(preloads.length > $.options.preloadLimit) { + //先进先出 + var first = $.data.preloads.shift(); + var webviewCache = $.webviews[first]; + if(webviewCache && webviewCache.webview) { + //需要将自己打开的所有页面,全部close; + //关闭该预加载webview + $.closeAll(webviewCache.webview); + } + //删除缓存 + delete $.webviews[first]; + } + } else { + if(isCreate !== false) { //直接创建非预加载窗口 + webview = plus.webview.create(options.url, id, $.windowOptions(options.styles), options.extras); + if(options.subpages) { + $.each(options.subpages, function(index, subpage) { + var subpageId = subpage.id || subpage.url; + var subWebview = plus.webview.getWebviewById(subpageId); + if(!subWebview) { + subWebview = plus.webview.create(subpage.url, subpageId, $.windowOptions(subpage.styles), subpage.extras); + } + webview.append(subWebview); + }); + } + } + } + return webview; + }; + + /** + * 预加载 + */ + $.preload = function(options) { + //调用预加载函数,不管是否传递preload参数,强制变为true + if(!options.preload) { + options.preload = true; + } + return $.createWindow(options); + }; + + /** + *关闭当前webview打开的所有webview; + */ + $.closeOpened = function(webview) { + var opened = webview.opened(); + if(opened) { + for(var i = 0, len = opened.length; i < len; i++) { + var openedWebview = opened[i]; + var open_open = openedWebview.opened(); + if(open_open && open_open.length > 0) { + //关闭打开的webview + $.closeOpened(openedWebview); + //关闭自己 + openedWebview.close("none"); + } else { + //如果直接孩子节点,就不用关闭了,因为父关闭的时候,会自动关闭子; + if(openedWebview.parent() !== webview) { + openedWebview.close('none'); + } + } + } + } + }; + $.closeAll = function(webview, aniShow) { + $.closeOpened(webview); + if(aniShow) { + webview.close(aniShow); + } else { + webview.close(); + } + }; + + /** + * 批量创建webview + * @param {type} options + * @returns {undefined} + */ + $.createWindows = function(options) { + $.each(options, function(index, option) { + //初始化预加载窗口(创建)和非预加载窗口(仅配置,不创建) + $.createWindow(option, false); + }); + }; + /** + * 创建当前页面的子webview + * @param {type} options + * @returns {webview} + */ + $.appendWebview = function(options) { + if(!window.plus) { + return; + } + var id = options.id || options.url; + var webview; + if(!$.webviews[id]) { //保证执行一遍 + //TODO 这里也有隐患,比如某个webview不是作为subpage创建的,而是作为target webview的话; + if(!plus.webview.getWebviewById(id)) { + webview = plus.webview.create(options.url, id, options.styles, options.extras); + } + //之前的实现方案:子窗口loaded之后再append到父窗口中; + //问题:部分子窗口loaded事件发生较晚,此时执行父窗口的children方法会返回空,导致父子通讯失败; + // 比如父页面执行完preload事件后,需触发子页面的preload事件,此时未append的话,就无法触发; + //修改方式:不再监控loaded事件,直接append + //by chb@20150521 + // webview.addEventListener('loaded', function() { + plus.webview.currentWebview().append(webview); + // }); + $.webviews[id] = options; + + } + return webview; + }; + + //全局webviews + $.webviews = {}; + //预加载窗口索引 + $.data.preloads = []; + //$.currentWebview + $.plusReady(function() { + $.currentWebview = plus.webview.currentWebview(); + }); + $.addInit({ + name: '5+', + index: 100, + handle: function() { + var options = $.options; + var subpages = options.subpages || []; + if($.os.plus) { + $.plusReady(function() { + //TODO 这里需要判断一下,最好等子窗口加载完毕后,再调用主窗口的show方法; + //或者:在openwindow方法中,监听实现; + $.each(subpages, function(index, subpage) { + $.appendWebview(subpage); + }); + //判断是否首页 + if(plus.webview.currentWebview() === plus.webview.getWebviewById(plus.runtime.appid)) { + //首页需要自己激活预加载; + //timeout因为子页面loaded之后才append的,防止子页面尚未append、从而导致其preload未触发的问题; + setTimeout(function() { + triggerPreload(plus.webview.currentWebview()); + }, 300); + } + //设置ios顶部状态栏颜色; + if($.os.ios && $.options.statusBarBackground) { + plus.navigator.setStatusBarBackground($.options.statusBarBackground); + } + if($.os.android && parseFloat($.os.version) < 4.4) { + //解决Android平台4.4版本以下,resume后,父窗体标题延迟渲染的问题; + if(plus.webview.currentWebview().parent() == null) { + document.addEventListener("resume", function() { + var body = document.body; + body.style.display = 'none'; + setTimeout(function() { + body.style.display = ''; + }, 10); + }); + } + } + }); + } else { + //已支持iframe嵌入 + // if (subpages.length > 0) { + // var err = document.createElement('div'); + // err.className = 'mui-error'; + // //文字描述 + // var span = document.createElement('span'); + // span.innerHTML = '在该浏览器下,不支持创建子页面,具体参考'; + // err.appendChild(span); + // var a = document.createElement('a'); + // a.innerHTML = '"mui框架适用场景"'; + // a.href = 'http://ask.dcloud.net.cn/article/113'; + // err.appendChild(a); + // document.body.appendChild(err); + // console.log('在该浏览器下,不支持创建子页面'); + // } + + } + + } + }); + window.addEventListener('preload', function() { + //处理预加载部分 + var webviews = $.options.preloadPages || []; + $.plusReady(function() { + $.each(webviews, function(index, webview) { + $.createWindow($.extend(webview, { + preload: true + })); + }); + + }); + }); + $.supportStatusbarOffset = function() { + return $.os.plus && $.os.ios && parseFloat($.os.version) >= 7; + }; + $.ready(function() { + //标识当前环境支持statusbar + if($.supportStatusbarOffset()) { + document.body.classList.add('mui-statusbar'); + } + }); +})(mui); + +/** + * mui back + * @param {type} $ + * @param {type} window + * @returns {undefined} + */ +(function($, window) { + /** + * register back + * @param {type} back + * @returns {$.gestures} + */ + $.addBack = function(back) { + return $.addAction('backs', back); + }; + /** + * default + */ + $.addBack({ + name: 'browser', + index: 100, + handle: function() { + if (window.history.length > 1) { + window.history.back(); + return true; + } + return false; + } + }); + /** + * 后退 + */ + $.back = function() { + if (typeof $.options.beforeback === 'function') { + if ($.options.beforeback() === false) { + return; + } + } + $.doAction('backs'); + }; + window.addEventListener('tap', function(e) { + var action = $.targets.action; + if (action && action.classList.contains('mui-action-back')) { + $.back(); + $.targets.action = false; + } + }); + window.addEventListener('swiperight', function(e) { + var detail = e.detail; + if ($.options.swipeBack === true && Math.abs(detail.angle) < 3) { + $.back(); + } + }); + +})(mui, window); +/** + * mui back 5+ + * @param {type} $ + * @param {type} window + * @returns {undefined} + */ +(function($, window) { + if ($.os.plus && $.os.android) { + $.addBack({ + name: 'mui', + index: 5, + handle: function() { + //后续重新设计此处,将back放到各个空间内部实现 + //popover + if ($.targets._popover && $.targets._popover.classList.contains('mui-active')) { + $($.targets._popover).popover('hide'); + return true; + } + //offcanvas + var offCanvas = document.querySelector('.mui-off-canvas-wrap.mui-active'); + if (offCanvas) { + $(offCanvas).offCanvas('close'); + return true; + } + var previewImage = $.isFunction($.getPreviewImage) && $.getPreviewImage(); + if (previewImage && previewImage.isShown()) { + previewImage.close(); + return true; + } + //popup + return $.closePopup(); + } + }); + } + //首次按下back按键的时间 + $.__back__first = null; + /** + * 5+ back + */ + $.addBack({ + name: '5+', + index: 10, + handle: function() { + if (!window.plus) { + return false; + } + var wobj = plus.webview.currentWebview(); + var parent = wobj.parent(); + if (parent) { + parent.evalJS('mui&&mui.back();'); + } else { + wobj.canBack(function(e) { + //by chb 暂时注释,在碰到类似popover之类的锚点的时候,需多次点击才能返回; + if (e.canBack) { //webview history back + window.history.back(); + } else { //webview close or hide + //fixed by fxy 此处不应该用opener判断,因为用户有可能自己close掉当前窗口的opener。这样的话。opener就为空了,导致不能执行close + if (wobj.id === plus.runtime.appid) { //首页 + //首页不存在opener的情况下,后退实际上应该是退出应用; + //首次按键,提示‘再按一次退出应用’ + if (!$.__back__first) { + $.__back__first = new Date().getTime(); + mui.toast('再按一次退出应用'); + setTimeout(function() { + $.__back__first = null; + }, 2000); + } else { + if (new Date().getTime() - $.__back__first < 2000) { + plus.runtime.quit(); + } + } + } else { //其他页面, + if (wobj.preload) { + wobj.hide("auto"); + } else { + //关闭页面时,需要将其打开的所有子页面全部关闭; + $.closeAll(wobj); + } + } + } + }); + } + return true; + } + }); + + + $.menu = function() { + var menu = document.querySelector('.mui-action-menu'); + if (menu) { + $.trigger(menu, $.EVENT_START); //临时处理menu无touchstart的话,找不到当前targets的问题 + $.trigger(menu, 'tap'); + } else { //执行父窗口的menu + if (window.plus) { + var wobj = $.currentWebview; + var parent = wobj.parent(); + if (parent) { //又得evalJS + parent.evalJS('mui&&mui.menu();'); + } + } + } + }; + var __back = function() { + $.back(); + }; + var __menu = function() { + $.menu(); + }; + //默认监听 + $.plusReady(function() { + if ($.options.keyEventBind.backbutton) { + plus.key.addEventListener('backbutton', __back, false); + } + if ($.options.keyEventBind.menubutton) { + plus.key.addEventListener('menubutton', __menu, false); + } + }); + //处理按键监听事件 + $.addInit({ + name: 'keyEventBind', + index: 1000, + handle: function() { + $.plusReady(function() { + //如果不为true,则移除默认监听 + if (!$.options.keyEventBind.backbutton) { + plus.key.removeEventListener('backbutton', __back); + } + if (!$.options.keyEventBind.menubutton) { + plus.key.removeEventListener('menubutton', __menu); + } + }); + } + }); +})(mui, window); +/** + * mui.init pulldownRefresh + * @param {type} $ + * @returns {undefined} + */ +(function($) { + $.addInit({ + name: 'pullrefresh', + index: 1000, + handle: function() { + var options = $.options; + var pullRefreshOptions = options.pullRefresh || {}; + var hasPulldown = pullRefreshOptions.down && pullRefreshOptions.down.hasOwnProperty('callback'); + var hasPullup = pullRefreshOptions.up && pullRefreshOptions.up.hasOwnProperty('callback'); + if(hasPulldown || hasPullup) { + var container = pullRefreshOptions.container; + if(container) { + var $container = $(container); + if($container.length === 1) { + if($.os.plus) { //5+环境 + if(hasPulldown && pullRefreshOptions.down.style == "circle") { //原生转圈 + $.plusReady(function() { + //这里改写$.fn.pullRefresh + $.fn.pullRefresh = $.fn.pullRefresh_native; + $container.pullRefresh(pullRefreshOptions); + }); + + } else if($.os.android) { //非原生转圈,但是Android环境 + $.plusReady(function() { + //这里改写$.fn.pullRefresh + $.fn.pullRefresh = $.fn.pullRefresh_native + var webview = plus.webview.currentWebview(); + if(window.__NWin_Enable__ === false) { //不支持多webview + $container.pullRefresh(pullRefreshOptions); + } else { + if(hasPullup) { + //当前页面初始化pullup + var upOptions = {}; + upOptions.up = pullRefreshOptions.up; + upOptions.webviewId = webview.id || webview.getURL(); + $container.pullRefresh(upOptions); + } + if(hasPulldown) { + var parent = webview.parent(); + var id = webview.id || webview.getURL(); + if(parent) { + if(!hasPullup) { //如果没有上拉加载,需要手动初始化一个默认的pullRefresh,以便当前页面容器可以调用endPulldownToRefresh等方法 + $container.pullRefresh({ + webviewId: id + }); + } + var downOptions = { + webviewId: id//子页面id + }; + downOptions.down = $.extend({}, pullRefreshOptions.down); + downOptions.down.callback = '_CALLBACK'; + //改写父页面的$.fn.pullRefresh + parent.evalJS("mui.fn.pullRefresh=mui.fn.pullRefresh_native"); + //父页面初始化pulldown + parent.evalJS("mui&&mui(document.querySelector('.mui-content')).pullRefresh('" + JSON.stringify(downOptions) + "')"); + } + } + } + }); + } else { //非原生转圈,iOS环境 + $container.pullRefresh(pullRefreshOptions); + } + } else { + $container.pullRefresh(pullRefreshOptions); + } + } + } + } + } + }); +})(mui); +/** + * mui ajax + * @param {type} $ + * @returns {undefined} + */ +(function($, window, undefined) { + + var jsonType = 'application/json'; + var htmlType = 'text/html'; + var rscript = /)<[^<]*)*<\/script>/gi; + var scriptTypeRE = /^(?:text|application)\/javascript/i; + var xmlTypeRE = /^(?:text|application)\/xml/i; + var blankRE = /^\s*$/; + + $.ajaxSettings = { + type: 'GET', + beforeSend: $.noop, + success: $.noop, + error: $.noop, + complete: $.noop, + context: null, + xhr: function(protocol) { + return new window.XMLHttpRequest(); + }, + accepts: { + script: 'text/javascript, application/javascript, application/x-javascript', + json: jsonType, + xml: 'application/xml, text/xml', + html: htmlType, + text: 'text/plain' + }, + timeout: 0, + processData: true, + cache: true + }; + var ajaxBeforeSend = function(xhr, settings) { + var context = settings.context + if(settings.beforeSend.call(context, xhr, settings) === false) { + return false; + } + }; + var ajaxSuccess = function(data, xhr, settings) { + settings.success.call(settings.context, data, 'success', xhr); + ajaxComplete('success', xhr, settings); + }; + // type: "timeout", "error", "abort", "parsererror" + var ajaxError = function(error, type, xhr, settings) { + settings.error.call(settings.context, xhr, type, error); + ajaxComplete(type, xhr, settings); + }; + // status: "success", "notmodified", "error", "timeout", "abort", "parsererror" + var ajaxComplete = function(status, xhr, settings) { + settings.complete.call(settings.context, xhr, status); + }; + + var serialize = function(params, obj, traditional, scope) { + var type, array = $.isArray(obj), + hash = $.isPlainObject(obj); + $.each(obj, function(key, value) { + type = $.type(value); + if(scope) { + key = traditional ? scope : + scope + '[' + (hash || type === 'object' || type === 'array' ? key : '') + ']'; + } + // handle data in serializeArray() format + if(!scope && array) { + params.add(value.name, value.value); + } + // recurse into nested objects + else if(type === "array" || (!traditional && type === "object")) { + serialize(params, value, traditional, key); + } else { + params.add(key, value); + } + }); + }; + var serializeData = function(options) { + if(options.processData && options.data && typeof options.data !== "string") { + var contentType = options.contentType; + if(!contentType && options.headers) { + contentType = options.headers['Content-Type']; + } + if(contentType && ~contentType.indexOf(jsonType)) { //application/json + options.data = JSON.stringify(options.data); + } else { + options.data = $.param(options.data, options.traditional); + } + } + if(options.data && (!options.type || options.type.toUpperCase() === 'GET')) { + options.url = appendQuery(options.url, options.data); + options.data = undefined; + } + }; + var appendQuery = function(url, query) { + if(query === '') { + return url; + } + return(url + '&' + query).replace(/[&?]{1,2}/, '?'); + }; + var mimeToDataType = function(mime) { + if(mime) { + mime = mime.split(';', 2)[0]; + } + return mime && (mime === htmlType ? 'html' : + mime === jsonType ? 'json' : + scriptTypeRE.test(mime) ? 'script' : + xmlTypeRE.test(mime) && 'xml') || 'text'; + }; + var parseArguments = function(url, data, success, dataType) { + if($.isFunction(data)) { + dataType = success, success = data, data = undefined; + } + if(!$.isFunction(success)) { + dataType = success, success = undefined; + } + return { + url: url, + data: data, + success: success, + dataType: dataType + }; + }; + $.ajax = function(url, options) { + if(typeof url === "object") { + options = url; + url = undefined; + } + var settings = options || {}; + settings.url = url || settings.url; + for(var key in $.ajaxSettings) { + if(settings[key] === undefined) { + settings[key] = $.ajaxSettings[key]; + } + } + serializeData(settings); + var dataType = settings.dataType; + + if(settings.cache === false || ((!options || options.cache !== true) && ('script' === dataType))) { + settings.url = appendQuery(settings.url, '_=' + $.now()); + } + var mime = settings.accepts[dataType && dataType.toLowerCase()]; + var headers = {}; + var setHeader = function(name, value) { + headers[name.toLowerCase()] = [name, value]; + }; + var protocol = /^([\w-]+:)\/\//.test(settings.url) ? RegExp.$1 : window.location.protocol; + var xhr = settings.xhr(settings); + var nativeSetHeader = xhr.setRequestHeader; + var abortTimeout; + + setHeader('X-Requested-With', 'XMLHttpRequest'); + setHeader('Accept', mime || '*/*'); + if(!!(mime = settings.mimeType || mime)) { + if(mime.indexOf(',') > -1) { + mime = mime.split(',', 2)[0]; + } + xhr.overrideMimeType && xhr.overrideMimeType(mime); + } + if(settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() !== 'GET')) { + setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded'); + } + if(settings.headers) { + for(var name in settings.headers) + setHeader(name, settings.headers[name]); + } + xhr.setRequestHeader = setHeader; + + xhr.onreadystatechange = function() { + if(xhr.readyState === 4) { + xhr.onreadystatechange = $.noop; + clearTimeout(abortTimeout); + var result, error = false; + var isLocal = protocol === 'file:'; + if((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304 || (xhr.status === 0 && isLocal && xhr.responseText)) { + dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type')); + result = xhr.responseText; + try { + // http://perfectionkills.com/global-eval-what-are-the-options/ + if(dataType === 'script') { + (1, eval)(result); + } else if(dataType === 'xml') { + result = xhr.responseXML; + } else if(dataType === 'json') { + result = blankRE.test(result) ? null : $.parseJSON(result); + } + } catch(e) { + error = e; + } + + if(error) { + ajaxError(error, 'parsererror', xhr, settings); + } else { + ajaxSuccess(result, xhr, settings); + } + } else { + var status = xhr.status ? 'error' : 'abort'; + var statusText = xhr.statusText || null; + if(isLocal) { + status = 'error'; + statusText = '404'; + } + ajaxError(statusText, status, xhr, settings); + } + } + }; + if(ajaxBeforeSend(xhr, settings) === false) { + xhr.abort(); + ajaxError(null, 'abort', xhr, settings); + return xhr; + } + + if(settings.xhrFields) { + for(var name in settings.xhrFields) { + xhr[name] = settings.xhrFields[name]; + } + } + + var async = 'async' in settings ? settings.async : true; + + xhr.open(settings.type.toUpperCase(), settings.url, async, settings.username, settings.password); + + for(var name in headers) { + if(headers.hasOwnProperty(name)) { + nativeSetHeader.apply(xhr, headers[name]); + } + } + if(settings.timeout > 0) { + abortTimeout = setTimeout(function() { + xhr.onreadystatechange = $.noop; + xhr.abort(); + ajaxError(null, 'timeout', xhr, settings); + }, settings.timeout); + } + xhr.send(settings.data ? settings.data : null); + return xhr; + }; + + $.param = function(obj, traditional) { + var params = []; + params.add = function(k, v) { + this.push(encodeURIComponent(k) + '=' + encodeURIComponent(v)); + }; + serialize(params, obj, traditional); + return params.join('&').replace(/%20/g, '+'); + }; + $.get = function( /* url, data, success, dataType */ ) { + return $.ajax(parseArguments.apply(null, arguments)); + }; + + $.post = function( /* url, data, success, dataType */ ) { + var options = parseArguments.apply(null, arguments); + options.type = 'POST'; + return $.ajax(options); + }; + + $.getJSON = function( /* url, data, success */ ) { + var options = parseArguments.apply(null, arguments); + options.dataType = 'json'; + return $.ajax(options); + }; + + $.fn.load = function(url, data, success) { + if(!this.length) + return this; + var self = this, + parts = url.split(/\s/), + selector, + options = parseArguments(url, data, success), + callback = options.success; + if(parts.length > 1) + options.url = parts[0], selector = parts[1]; + options.success = function(response) { + if(selector) { + var div = document.createElement('div'); + div.innerHTML = response.replace(rscript, ""); + var selectorDiv = document.createElement('div'); + var childs = div.querySelectorAll(selector); + if(childs && childs.length > 0) { + for(var i = 0, len = childs.length; i < len; i++) { + selectorDiv.appendChild(childs[i]); + } + } + self[0].innerHTML = selectorDiv.innerHTML; + } else { + self[0].innerHTML = response; + } + callback && callback.apply(self, arguments); + }; + $.ajax(options); + return this; + }; + +})(mui, window); +/** + * 5+ ajax + */ +(function($) { + var originAnchor = document.createElement('a'); + originAnchor.href = window.location.href; + $.plusReady(function() { + $.ajaxSettings = $.extend($.ajaxSettings, { + xhr: function(settings) { + if (settings.crossDomain) { //强制使用plus跨域 + return new plus.net.XMLHttpRequest(); + } + //仅在webview的url为远程文件,且ajax请求的资源不同源下使用plus.net.XMLHttpRequest + if (originAnchor.protocol !== 'file:') { + var urlAnchor = document.createElement('a'); + urlAnchor.href = settings.url; + urlAnchor.href = urlAnchor.href; + settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host); + if (settings.crossDomain) { + return new plus.net.XMLHttpRequest(); + } + } + if ($.os.ios && window.webkit && window.webkit.messageHandlers) { //wkwebview下同样使用5+ xhr + return new plus.net.XMLHttpRequest(); + } + return new window.XMLHttpRequest(); + } + }); + }); +})(mui); +/** + * mui layout(offset[,position,width,height...]) + * @param {type} $ + * @param {type} window + * @param {type} undefined + * @returns {undefined} + */ +(function($, window, undefined) { + $.offset = function(element) { + var box = { + top : 0, + left : 0 + }; + if ( typeof element.getBoundingClientRect !== undefined) { + box = element.getBoundingClientRect(); + } + return { + top : box.top + window.pageYOffset - element.clientTop, + left : box.left + window.pageXOffset - element.clientLeft + }; + }; +})(mui, window); +/** + * mui animation + */ +(function($, window) { + /** + * scrollTo + */ + $.scrollTo = function(scrollTop, duration, callback) { + duration = duration || 1000; + var scroll = function(duration) { + if (duration <= 0) { + window.scrollTo(0, scrollTop); + callback && callback(); + return; + } + var distaince = scrollTop - window.scrollY; + setTimeout(function() { + window.scrollTo(0, window.scrollY + distaince / duration * 10); + scroll(duration - 10); + }, 16.7); + }; + scroll(duration); + }; + $.animationFrame = function(cb) { + var args, isQueued, context; + return function() { + args = arguments; + context = this; + if (!isQueued) { + isQueued = true; + requestAnimationFrame(function() { + cb.apply(context, args); + isQueued = false; + }); + } + }; + }; + +})(mui, window); +(function($) { + var initializing = false, + fnTest = /xyz/.test(function() { + xyz; + }) ? /\b_super\b/ : /.*/; + + var Class = function() {}; + Class.extend = function(prop) { + var _super = this.prototype; + initializing = true; + var prototype = new this(); + initializing = false; + for (var name in prop) { + prototype[name] = typeof prop[name] == "function" && + typeof _super[name] == "function" && fnTest.test(prop[name]) ? + (function(name, fn) { + return function() { + var tmp = this._super; + + this._super = _super[name]; + + var ret = fn.apply(this, arguments); + this._super = tmp; + + return ret; + }; + })(name, prop[name]) : + prop[name]; + } + function Class() { + if (!initializing && this.init) + this.init.apply(this, arguments); + } + Class.prototype = prototype; + Class.prototype.constructor = Class; + Class.extend = arguments.callee; + return Class; + }; + $.Class = Class; +})(mui); +(function($, document, undefined) { + var CLASS_PULL_TOP_POCKET = 'mui-pull-top-pocket'; + var CLASS_PULL_BOTTOM_POCKET = 'mui-pull-bottom-pocket'; + var CLASS_PULL = 'mui-pull'; + var CLASS_PULL_LOADING = 'mui-pull-loading'; + var CLASS_PULL_CAPTION = 'mui-pull-caption'; + var CLASS_PULL_CAPTION_DOWN = 'mui-pull-caption-down'; + var CLASS_PULL_CAPTION_REFRESH = 'mui-pull-caption-refresh'; + var CLASS_PULL_CAPTION_NOMORE = 'mui-pull-caption-nomore'; + + var CLASS_ICON = 'mui-icon'; + var CLASS_SPINNER = 'mui-spinner'; + var CLASS_ICON_PULLDOWN = 'mui-icon-pulldown'; + + var CLASS_BLOCK = 'mui-block'; + var CLASS_HIDDEN = 'mui-hidden'; + var CLASS_VISIBILITY = 'mui-visibility'; + + var CLASS_LOADING_UP = CLASS_PULL_LOADING + ' ' + CLASS_ICON + ' ' + CLASS_ICON_PULLDOWN; + var CLASS_LOADING_DOWN = CLASS_PULL_LOADING + ' ' + CLASS_ICON + ' ' + CLASS_ICON_PULLDOWN; + var CLASS_LOADING = CLASS_PULL_LOADING + ' ' + CLASS_ICON + ' ' + CLASS_SPINNER; + + var pocketHtml = ['
', '
', '
{contentrefresh}
', '
'].join(''); + + var PullRefresh = { + init: function(element, options) { + this._super(element, $.extend(true, { + scrollY: true, + scrollX: false, + indicators: true, + deceleration: 0.003, + down: { + height: 50, + contentinit: '下拉可以刷新', + contentdown: '下拉可以刷新', + contentover: '释放立即刷新', + contentrefresh: '正在刷新...' + }, + up: { + height: 50, + auto: false, + contentinit: '上拉显示更多', + contentdown: '上拉显示更多', + contentrefresh: '正在加载...', + contentnomore: '没有更多数据了', + duration: 300 + } + }, options)); + }, + _init: function() { + this._super(); + this._initPocket(); + }, + _initPulldownRefresh: function() { + this.pulldown = true; + if (this.topPocket) { + this.pullPocket = this.topPocket; + this.pullPocket.classList.add(CLASS_BLOCK); + this.pullPocket.classList.add(CLASS_VISIBILITY); + this.pullCaption = this.topCaption; + this.pullLoading = this.topLoading; + } + }, + _initPullupRefresh: function() { + this.pulldown = false; + if (this.bottomPocket) { + this.pullPocket = this.bottomPocket; + this.pullPocket.classList.add(CLASS_BLOCK); + this.pullPocket.classList.add(CLASS_VISIBILITY); + this.pullCaption = this.bottomCaption; + this.pullLoading = this.bottomLoading; + } + }, + _initPocket: function() { + var options = this.options; + if (options.down && options.down.hasOwnProperty('callback')) { + this.topPocket = this.scroller.querySelector('.' + CLASS_PULL_TOP_POCKET); + if (!this.topPocket) { + this.topPocket = this._createPocket(CLASS_PULL_TOP_POCKET, options.down, CLASS_LOADING_DOWN); + this.wrapper.insertBefore(this.topPocket, this.wrapper.firstChild); + } + this.topLoading = this.topPocket.querySelector('.' + CLASS_PULL_LOADING); + this.topCaption = this.topPocket.querySelector('.' + CLASS_PULL_CAPTION); + } + if (options.up && options.up.hasOwnProperty('callback')) { + this.bottomPocket = this.scroller.querySelector('.' + CLASS_PULL_BOTTOM_POCKET); + if (!this.bottomPocket) { + this.bottomPocket = this._createPocket(CLASS_PULL_BOTTOM_POCKET, options.up, CLASS_LOADING); + this.scroller.appendChild(this.bottomPocket); + } + this.bottomLoading = this.bottomPocket.querySelector('.' + CLASS_PULL_LOADING); + this.bottomCaption = this.bottomPocket.querySelector('.' + CLASS_PULL_CAPTION); + //TODO only for h5 + this.wrapper.addEventListener('scrollbottom', this); + } + }, + _createPocket: function(clazz, options, iconClass) { + var pocket = document.createElement('div'); + pocket.className = clazz; + pocket.innerHTML = pocketHtml.replace('{contentrefresh}', options.contentinit).replace('{icon}', iconClass); + return pocket; + }, + _resetPullDownLoading: function() { + var loading = this.pullLoading; + if (loading) { + this.pullCaption.innerHTML = this.options.down.contentdown; + loading.style.webkitTransition = ""; + loading.style.webkitTransform = ""; + loading.style.webkitAnimation = ""; + loading.className = CLASS_LOADING_DOWN; + } + }, + _setCaptionClass: function(isPulldown, caption, title) { + if (!isPulldown) { + switch (title) { + case this.options.up.contentdown: + caption.className = CLASS_PULL_CAPTION + ' ' + CLASS_PULL_CAPTION_DOWN; + break; + case this.options.up.contentrefresh: + caption.className = CLASS_PULL_CAPTION + ' ' + CLASS_PULL_CAPTION_REFRESH + break; + case this.options.up.contentnomore: + caption.className = CLASS_PULL_CAPTION + ' ' + CLASS_PULL_CAPTION_NOMORE; + break; + } + } + }, + _setCaption: function(title, reset) { + if (this.loading) { + return; + } + var options = this.options; + var pocket = this.pullPocket; + var caption = this.pullCaption; + var loading = this.pullLoading; + var isPulldown = this.pulldown; + var self = this; + if (pocket) { + if (reset) { + setTimeout(function() { + caption.innerHTML = self.lastTitle = title; + if (isPulldown) { + loading.className = CLASS_LOADING_DOWN; + } else { + self._setCaptionClass(false, caption, title); + loading.className = CLASS_LOADING; + } + loading.style.webkitAnimation = ""; + loading.style.webkitTransition = ""; + loading.style.webkitTransform = ""; + }, 100); + } else { + if (title !== this.lastTitle) { + caption.innerHTML = title; + if (isPulldown) { + if (title === options.down.contentrefresh) { + loading.className = CLASS_LOADING; + loading.style.webkitAnimation = "spinner-spin 1s step-end infinite"; + } else if (title === options.down.contentover) { + loading.className = CLASS_LOADING_UP; + loading.style.webkitTransition = "-webkit-transform 0.3s ease-in"; + loading.style.webkitTransform = "rotate(180deg)"; + } else if (title === options.down.contentdown) { + loading.className = CLASS_LOADING_DOWN; + loading.style.webkitTransition = "-webkit-transform 0.3s ease-in"; + loading.style.webkitTransform = "rotate(0deg)"; + } + } else { + if (title === options.up.contentrefresh) { + loading.className = CLASS_LOADING + ' ' + CLASS_VISIBILITY; + } else { + loading.className = CLASS_LOADING + ' ' + CLASS_HIDDEN; + } + self._setCaptionClass(false, caption, title); + } + this.lastTitle = title; + } + } + + } + } + }; + $.PullRefresh = PullRefresh; +})(mui, document); +(function($, window, document, undefined) { + var CLASS_SCROLL = 'mui-scroll'; + var CLASS_SCROLLBAR = 'mui-scrollbar'; + var CLASS_INDICATOR = 'mui-scrollbar-indicator'; + var CLASS_SCROLLBAR_VERTICAL = CLASS_SCROLLBAR + '-vertical'; + var CLASS_SCROLLBAR_HORIZONTAL = CLASS_SCROLLBAR + '-horizontal'; + + var CLASS_ACTIVE = 'mui-active'; + + var ease = { + quadratic: { + style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)', + fn: function(k) { + return k * (2 - k); + } + }, + circular: { + style: 'cubic-bezier(0.1, 0.57, 0.1, 1)', + fn: function(k) { + return Math.sqrt(1 - (--k * k)); + } + }, + outCirc: { + style: 'cubic-bezier(0.075, 0.82, 0.165, 1)' + }, + outCubic: { + style: 'cubic-bezier(0.165, 0.84, 0.44, 1)' + } + } + var Scroll = $.Class.extend({ + init: function(element, options) { + this.wrapper = this.element = element; + this.scroller = this.wrapper.children[0]; + this.scrollerStyle = this.scroller && this.scroller.style; + this.stopped = false; + + this.options = $.extend(true, { + scrollY: true, //是否竖向滚动 + scrollX: false, //是否横向滚动 + startX: 0, //初始化时滚动至x + startY: 0, //初始化时滚动至y + + indicators: true, //是否显示滚动条 + stopPropagation: false, + hardwareAccelerated: true, + fixedBadAndorid: false, + preventDefaultException: { + tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT|VIDEO)$/ + }, + momentum: true, + + snapX: 0.5, //横向切换距离(以当前容器宽度为基准) + snap: false, //图片轮播,拖拽式选项卡 + + bounce: true, //是否启用回弹 + bounceTime: 500, //回弹动画时间 + bounceEasing: ease.outCirc, //回弹动画曲线 + + scrollTime: 500, + scrollEasing: ease.outCubic, //轮播动画曲线 + + directionLockThreshold: 5, + + parallaxElement: false, //视差元素 + parallaxRatio: 0.5 + }, options); + + this.x = 0; + this.y = 0; + this.translateZ = this.options.hardwareAccelerated ? ' translateZ(0)' : ''; + + this._init(); + if (this.scroller) { + this.refresh(); + // if (this.options.startX !== 0 || this.options.startY !== 0) { //需要判断吗?后续根据实际情况再看看 + this.scrollTo(this.options.startX, this.options.startY); + // } + } + }, + _init: function() { + this._initParallax(); + this._initIndicators(); + this._initEvent(); + }, + _initParallax: function() { + if (this.options.parallaxElement) { + this.parallaxElement = document.querySelector(this.options.parallaxElement); + this.parallaxStyle = this.parallaxElement.style; + this.parallaxHeight = this.parallaxElement.offsetHeight; + this.parallaxImgStyle = this.parallaxElement.querySelector('img').style; + } + }, + _initIndicators: function() { + var self = this; + self.indicators = []; + if (!this.options.indicators) { + return; + } + var indicators = [], + indicator; + + // Vertical scrollbar + if (self.options.scrollY) { + indicator = { + el: this._createScrollBar(CLASS_SCROLLBAR_VERTICAL), + listenX: false + }; + + this.wrapper.appendChild(indicator.el); + indicators.push(indicator); + } + + // Horizontal scrollbar + if (this.options.scrollX) { + indicator = { + el: this._createScrollBar(CLASS_SCROLLBAR_HORIZONTAL), + listenY: false + }; + + this.wrapper.appendChild(indicator.el); + indicators.push(indicator); + } + + for (var i = indicators.length; i--;) { + this.indicators.push(new Indicator(this, indicators[i])); + } + + }, + _initSnap: function() { + this.currentPage = {}; + this.pages = []; + var snaps = this.snaps; + var length = snaps.length; + var m = 0; + var n = -1; + var x = 0; + var leftX = 0; + var rightX = 0; + var snapX = 0; + for (var i = 0; i < length; i++) { + var snap = snaps[i]; + var offsetLeft = snap.offsetLeft; + var offsetWidth = snap.offsetWidth; + if (i === 0 || offsetLeft <= snaps[i - 1].offsetLeft) { + m = 0; + n++; + } + if (!this.pages[m]) { + this.pages[m] = []; + } + x = this._getSnapX(offsetLeft); + snapX = Math.round((offsetWidth) * this.options.snapX); + leftX = x - snapX; + rightX = x - offsetWidth + snapX; + this.pages[m][n] = { + x: x, + leftX: leftX, + rightX: rightX, + pageX: m, + element: snap + } + if (snap.classList.contains(CLASS_ACTIVE)) { + this.currentPage = this.pages[m][0]; + } + if (x >= this.maxScrollX) { + m++; + } + } + this.options.startX = this.currentPage.x || 0; + }, + _getSnapX: function(offsetLeft) { + return Math.max(Math.min(0, -offsetLeft + (this.wrapperWidth / 2)), this.maxScrollX); + }, + _gotoPage: function(index) { + this.currentPage = this.pages[Math.min(index, this.pages.length - 1)][0]; + for (var i = 0, len = this.snaps.length; i < len; i++) { + if (i === index) { + this.snaps[i].classList.add(CLASS_ACTIVE); + } else { + this.snaps[i].classList.remove(CLASS_ACTIVE); + } + } + this.scrollTo(this.currentPage.x, 0, this.options.scrollTime); + }, + _nearestSnap: function(x) { + if (!this.pages.length) { + return { + x: 0, + pageX: 0 + }; + } + var i = 0; + var length = this.pages.length; + if (x > 0) { + x = 0; + } else if (x < this.maxScrollX) { + x = this.maxScrollX; + } + for (; i < length; i++) { + var nearestX = this.direction === 'left' ? this.pages[i][0].leftX : this.pages[i][0].rightX; + if (x >= nearestX) { + return this.pages[i][0]; + } + } + return { + x: 0, + pageX: 0 + }; + }, + _initEvent: function(detach) { + var action = detach ? 'removeEventListener' : 'addEventListener'; + window[action]('orientationchange', this); + window[action]('resize', this); + + this.scroller[action]('webkitTransitionEnd', this); + + this.wrapper[action]($.EVENT_START, this); + this.wrapper[action]($.EVENT_CANCEL, this); + this.wrapper[action]($.EVENT_END, this); + this.wrapper[action]('drag', this); + this.wrapper[action]('dragend', this); + this.wrapper[action]('flick', this); + this.wrapper[action]('scrollend', this); + if (this.options.scrollX) { + this.wrapper[action]('swiperight', this); + } + var segmentedControl = this.wrapper.querySelector('.mui-segmented-control'); + if (segmentedControl) { //靠,这个bug排查了一下午,阻止hash跳转,一旦hash跳转会导致可拖拽选项卡的tab不见 + mui(segmentedControl)[detach ? 'off' : 'on']('click', 'a', $.preventDefault); + } + + this.wrapper[action]('scrollstart', this); + this.wrapper[action]('refresh', this); + }, + _handleIndicatorScrollend: function() { + this.indicators.map(function(indicator) { + indicator.fade(); + }); + }, + _handleIndicatorScrollstart: function() { + this.indicators.map(function(indicator) { + indicator.fade(1); + }); + }, + _handleIndicatorRefresh: function() { + this.indicators.map(function(indicator) { + indicator.refresh(); + }); + }, + handleEvent: function(e) { + if (this.stopped) { + this.resetPosition(); + return; + } + + switch (e.type) { + case $.EVENT_START: + this._start(e); + break; + case 'drag': + this.options.stopPropagation && e.stopPropagation(); + this._drag(e); + break; + case 'dragend': + case 'flick': + this.options.stopPropagation && e.stopPropagation(); + this._flick(e); + break; + case $.EVENT_CANCEL: + case $.EVENT_END: + this._end(e); + break; + case 'webkitTransitionEnd': + this.transitionTimer && this.transitionTimer.cancel(); + this._transitionEnd(e); + break; + case 'scrollstart': + this._handleIndicatorScrollstart(e); + break; + case 'scrollend': + this._handleIndicatorScrollend(e); + this._scrollend(e); + e.stopPropagation(); + break; + case 'orientationchange': + case 'resize': + this._resize(); + break; + case 'swiperight': + e.stopPropagation(); + break; + case 'refresh': + this._handleIndicatorRefresh(e); + break; + + } + }, + _start: function(e) { + this.moved = this.needReset = false; + this._transitionTime(); + if (this.isInTransition) { + this.needReset = true; + this.isInTransition = false; + var pos = $.parseTranslateMatrix($.getStyles(this.scroller, 'webkitTransform')); + this.setTranslate(Math.round(pos.x), Math.round(pos.y)); + // this.resetPosition(); //reset + $.trigger(this.scroller, 'scrollend', this); + // e.stopPropagation(); + e.preventDefault(); + } + this.reLayout(); + $.trigger(this.scroller, 'beforescrollstart', this); + }, + _getDirectionByAngle: function(angle) { + if (angle < -80 && angle > -100) { + return 'up'; + } else if (angle >= 80 && angle < 100) { + return 'down'; + } else if (angle >= 170 || angle <= -170) { + return 'left'; + } else if (angle >= -35 && angle <= 10) { + return 'right'; + } + return null; + }, + _drag: function(e) { + // if (this.needReset) { + // e.stopPropagation(); //disable parent drag(nested scroller) + // return; + // } + var detail = e.detail; + if (this.options.scrollY || detail.direction === 'up' || detail.direction === 'down') { //如果是竖向滚动或手势方向是上或下 + //ios8 hack + if ($.os.ios && parseFloat($.os.version) >= 8) { //多webview时,离开当前webview会导致后续touch事件不触发 + var clientY = detail.gesture.touches[0].clientY; + //下拉刷新 or 上拉加载 + if ((clientY + 10) > window.innerHeight || clientY < 10) { + this.resetPosition(this.options.bounceTime); + return; + } + } + } + var isPreventDefault = isReturn = false; + var direction = this._getDirectionByAngle(detail.angle); + if (detail.direction === 'left' || detail.direction === 'right') { + if (this.options.scrollX) { + isPreventDefault = true; + if (!this.moved) { //识别角度(该角度导致轮播不灵敏) + // if (direction !== 'left' && direction !== 'right') { + // isReturn = true; + // } else { + $.gestures.session.lockDirection = true; //锁定方向 + $.gestures.session.startDirection = detail.direction; + // } + } + } else if (this.options.scrollY && !this.moved) { + isReturn = true; + } + } else if (detail.direction === 'up' || detail.direction === 'down') { + if (this.options.scrollY) { + isPreventDefault = true; + // if (!this.moved) { //识别角度,竖向滚动似乎没必要进行小角度验证 + // if (direction !== 'up' && direction !== 'down') { + // isReturn = true; + // } + // } + if (!this.moved) { + $.gestures.session.lockDirection = true; //锁定方向 + $.gestures.session.startDirection = detail.direction; + } + } else if (this.options.scrollX && !this.moved) { + isReturn = true; + } + } else { + isReturn = true; + } + if (this.moved || isPreventDefault) { + e.stopPropagation(); //阻止冒泡(scroll类嵌套) + detail.gesture && detail.gesture.preventDefault(); + } + if (isReturn) { //禁止非法方向滚动 + return; + } + if (!this.moved) { + $.trigger(this.scroller, 'scrollstart', this); + } else { + e.stopPropagation(); //move期间阻止冒泡(scroll嵌套) + } + var deltaX = 0; + var deltaY = 0; + if (!this.moved) { //start + deltaX = detail.deltaX; + deltaY = detail.deltaY; + } else { //move + deltaX = detail.deltaX - $.gestures.session.prevTouch.deltaX; + deltaY = detail.deltaY - $.gestures.session.prevTouch.deltaY; + } + var absDeltaX = Math.abs(detail.deltaX); + var absDeltaY = Math.abs(detail.deltaY); + if (absDeltaX > absDeltaY + this.options.directionLockThreshold) { + deltaY = 0; + } else if (absDeltaY >= absDeltaX + this.options.directionLockThreshold) { + deltaX = 0; + } + + deltaX = this.hasHorizontalScroll ? deltaX : 0; + deltaY = this.hasVerticalScroll ? deltaY : 0; + var newX = this.x + deltaX; + var newY = this.y + deltaY; + // Slow down if outside of the boundaries + if (newX > 0 || newX < this.maxScrollX) { + newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX; + } + if (newY > 0 || newY < this.maxScrollY) { + newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY; + } + + if (!this.requestAnimationFrame) { + this._updateTranslate(); + } + this.direction = detail.deltaX > 0 ? 'right' : 'left'; + this.moved = true; + this.x = newX; + this.y = newY; + $.trigger(this.scroller, 'scroll', this); + }, + _flick: function(e) { + // if (!this.moved || this.needReset) { + // return; + // } + if (!this.moved) { + return; + } + e.stopPropagation(); + var detail = e.detail; + this._clearRequestAnimationFrame(); + if (e.type === 'dragend' && detail.flick) { //dragend + return; + } + + var newX = Math.round(this.x); + var newY = Math.round(this.y); + + this.isInTransition = false; + // reset if we are outside of the boundaries + if (this.resetPosition(this.options.bounceTime)) { + return; + } + + this.scrollTo(newX, newY); // ensures that the last position is rounded + + if (e.type === 'dragend') { //dragend + $.trigger(this.scroller, 'scrollend', this); + return; + } + var time = 0; + var easing = ''; + // start momentum animation if needed + if (this.options.momentum && detail.flickTime < 300) { + momentumX = this.hasHorizontalScroll ? this._momentum(this.x, detail.flickDistanceX, detail.flickTime, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { + destination: newX, + duration: 0 + }; + momentumY = this.hasVerticalScroll ? this._momentum(this.y, detail.flickDistanceY, detail.flickTime, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { + destination: newY, + duration: 0 + }; + newX = momentumX.destination; + newY = momentumY.destination; + time = Math.max(momentumX.duration, momentumY.duration); + this.isInTransition = true; + } + + if (newX != this.x || newY != this.y) { + if (newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY) { + easing = ease.quadratic; + } + this.scrollTo(newX, newY, time, easing); + return; + } + + $.trigger(this.scroller, 'scrollend', this); + // e.stopPropagation(); + }, + _end: function(e) { + this.needReset = false; + if ((!this.moved && this.needReset) || e.type === $.EVENT_CANCEL) { + this.resetPosition(); + } + }, + _transitionEnd: function(e) { + if (e.target != this.scroller || !this.isInTransition) { + return; + } + this._transitionTime(); + if (!this.resetPosition(this.options.bounceTime)) { + this.isInTransition = false; + $.trigger(this.scroller, 'scrollend', this); + } + }, + _scrollend: function(e) { + if ((this.y === 0 && this.maxScrollY === 0) || (Math.abs(this.y) > 0 && this.y <= this.maxScrollY)) { + $.trigger(this.scroller, 'scrollbottom', this); + } + }, + _resize: function() { + var that = this; + clearTimeout(that.resizeTimeout); + that.resizeTimeout = setTimeout(function() { + that.refresh(); + }, that.options.resizePolling); + }, + _transitionTime: function(time) { + time = time || 0; + this.scrollerStyle['webkitTransitionDuration'] = time + 'ms'; + if (this.parallaxElement && this.options.scrollY) { //目前仅支持竖向视差效果 + this.parallaxStyle['webkitTransitionDuration'] = time + 'ms'; + } + if (this.options.fixedBadAndorid && !time && $.os.isBadAndroid) { + this.scrollerStyle['webkitTransitionDuration'] = '0.001s'; + if (this.parallaxElement && this.options.scrollY) { //目前仅支持竖向视差效果 + this.parallaxStyle['webkitTransitionDuration'] = '0.001s'; + } + } + if (this.indicators) { + for (var i = this.indicators.length; i--;) { + this.indicators[i].transitionTime(time); + } + } + if (time) { //自定义timer,保证webkitTransitionEnd始终触发 + this.transitionTimer && this.transitionTimer.cancel(); + this.transitionTimer = $.later(function() { + $.trigger(this.scroller, 'webkitTransitionEnd'); + }, time + 100, this); + } + }, + _transitionTimingFunction: function(easing) { + this.scrollerStyle['webkitTransitionTimingFunction'] = easing; + if (this.parallaxElement && this.options.scrollY) { //目前仅支持竖向视差效果 + this.parallaxStyle['webkitTransitionDuration'] = easing; + } + if (this.indicators) { + for (var i = this.indicators.length; i--;) { + this.indicators[i].transitionTimingFunction(easing); + } + } + }, + _translate: function(x, y) { + this.x = x; + this.y = y; + }, + _clearRequestAnimationFrame: function() { + if (this.requestAnimationFrame) { + cancelAnimationFrame(this.requestAnimationFrame); + this.requestAnimationFrame = null; + } + }, + _updateTranslate: function() { + var self = this; + if (self.x !== self.lastX || self.y !== self.lastY) { + self.setTranslate(self.x, self.y); + } + self.requestAnimationFrame = requestAnimationFrame(function() { + self._updateTranslate(); + }); + }, + _createScrollBar: function(clazz) { + var scrollbar = document.createElement('div'); + var indicator = document.createElement('div'); + scrollbar.className = CLASS_SCROLLBAR + ' ' + clazz; + indicator.className = CLASS_INDICATOR; + scrollbar.appendChild(indicator); + if (clazz === CLASS_SCROLLBAR_VERTICAL) { + this.scrollbarY = scrollbar; + this.scrollbarIndicatorY = indicator; + } else if (clazz === CLASS_SCROLLBAR_HORIZONTAL) { + this.scrollbarX = scrollbar; + this.scrollbarIndicatorX = indicator; + } + this.wrapper.appendChild(scrollbar); + return scrollbar; + }, + _preventDefaultException: function(el, exceptions) { + for (var i in exceptions) { + if (exceptions[i].test(el[i])) { + return true; + } + } + return false; + }, + _reLayout: function() { + if (!this.hasHorizontalScroll) { + this.maxScrollX = 0; + this.scrollerWidth = this.wrapperWidth; + } + + if (!this.hasVerticalScroll) { + this.maxScrollY = 0; + this.scrollerHeight = this.wrapperHeight; + } + + this.indicators.map(function(indicator) { + indicator.refresh(); + }); + + //以防slider类嵌套使用 + if (this.options.snap && typeof this.options.snap === 'string') { + var items = this.scroller.querySelectorAll(this.options.snap); + this.itemLength = 0; + this.snaps = []; + for (var i = 0, len = items.length; i < len; i++) { + var item = items[i]; + if (item.parentNode === this.scroller) { + this.itemLength++; + this.snaps.push(item); + } + } + this._initSnap(); //需要每次都_initSnap么。其实init的时候执行一次,后续resize的时候执行一次就行了吧.先这么做吧,如果影响性能,再调整 + } + }, + _momentum: function(current, distance, time, lowerMargin, wrapperSize, deceleration) { + var speed = parseFloat(Math.abs(distance) / time), + destination, + duration; + + deceleration = deceleration === undefined ? 0.0006 : deceleration; + destination = current + (speed * speed) / (2 * deceleration) * (distance < 0 ? -1 : 1); + duration = speed / deceleration; + if (destination < lowerMargin) { + destination = wrapperSize ? lowerMargin - (wrapperSize / 2.5 * (speed / 8)) : lowerMargin; + distance = Math.abs(destination - current); + duration = distance / speed; + } else if (destination > 0) { + destination = wrapperSize ? wrapperSize / 2.5 * (speed / 8) : 0; + distance = Math.abs(current) + destination; + duration = distance / speed; + } + + return { + destination: Math.round(destination), + duration: duration + }; + }, + _getTranslateStr: function(x, y) { + if (this.options.hardwareAccelerated) { + return 'translate3d(' + x + 'px,' + y + 'px,0px) ' + this.translateZ; + } + return 'translate(' + x + 'px,' + y + 'px) '; + }, + //API + setStopped: function(stopped) { + // this.stopped = !!stopped; + + // fixed ios双webview模式下拉刷新 + if(stopped) { + this.disablePullupToRefresh(); + this.disablePulldownToRefresh(); + } else { + this.enablePullupToRefresh(); + this.enablePulldownToRefresh(); + } + }, + setTranslate: function(x, y) { + this.x = x; + this.y = y; + this.scrollerStyle['webkitTransform'] = this._getTranslateStr(x, y); + if (this.parallaxElement && this.options.scrollY) { //目前仅支持竖向视差效果 + var parallaxY = y * this.options.parallaxRatio; + var scale = 1 + parallaxY / ((this.parallaxHeight - parallaxY) / 2); + if (scale > 1) { + this.parallaxImgStyle['opacity'] = 1 - parallaxY / 100 * this.options.parallaxRatio; + this.parallaxStyle['webkitTransform'] = this._getTranslateStr(0, -parallaxY) + ' scale(' + scale + ',' + scale + ')'; + } else { + this.parallaxImgStyle['opacity'] = 1; + this.parallaxStyle['webkitTransform'] = this._getTranslateStr(0, -1) + ' scale(1,1)'; + } + } + if (this.indicators) { + for (var i = this.indicators.length; i--;) { + this.indicators[i].updatePosition(); + } + } + this.lastX = this.x; + this.lastY = this.y; + $.trigger(this.scroller, 'scroll', this); + }, + reLayout: function() { + this.wrapper.offsetHeight; + + var paddingLeft = parseFloat($.getStyles(this.wrapper, 'padding-left')) || 0; + var paddingRight = parseFloat($.getStyles(this.wrapper, 'padding-right')) || 0; + var paddingTop = parseFloat($.getStyles(this.wrapper, 'padding-top')) || 0; + var paddingBottom = parseFloat($.getStyles(this.wrapper, 'padding-bottom')) || 0; + + var clientWidth = this.wrapper.clientWidth; + var clientHeight = this.wrapper.clientHeight; + + this.scrollerWidth = this.scroller.offsetWidth; + this.scrollerHeight = this.scroller.offsetHeight; + + this.wrapperWidth = clientWidth - paddingLeft - paddingRight; + this.wrapperHeight = clientHeight - paddingTop - paddingBottom; + + this.maxScrollX = Math.min(this.wrapperWidth - this.scrollerWidth, 0); + this.maxScrollY = Math.min(this.wrapperHeight - this.scrollerHeight, 0); + this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0; + this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0; + this._reLayout(); + }, + resetPosition: function(time) { + var x = this.x, + y = this.y; + + time = time || 0; + if (!this.hasHorizontalScroll || this.x > 0) { + x = 0; + } else if (this.x < this.maxScrollX) { + x = this.maxScrollX; + } + + if (!this.hasVerticalScroll || this.y > 0) { + y = 0; + } else if (this.y < this.maxScrollY) { + y = this.maxScrollY; + } + + if (x == this.x && y == this.y) { + return false; + } + this.scrollTo(x, y, time, this.options.scrollEasing); + + return true; + }, + _reInit: function() { + var groups = this.wrapper.querySelectorAll('.' + CLASS_SCROLL); + for (var i = 0, len = groups.length; i < len; i++) { + if (groups[i].parentNode === this.wrapper) { + this.scroller = groups[i]; + break; + } + } + this.scrollerStyle = this.scroller && this.scroller.style; + }, + refresh: function() { + this._reInit(); + this.reLayout(); + $.trigger(this.scroller, 'refresh', this); + this.resetPosition(); + }, + scrollTo: function(x, y, time, easing) { + var easing = easing || ease.circular; + // this.isInTransition = time > 0 && (this.lastX != x || this.lastY != y); + //暂不严格判断x,y,否则会导致部分版本上不正常触发轮播 + this.isInTransition = time > 0; + if (this.isInTransition) { + this._clearRequestAnimationFrame(); + this._transitionTimingFunction(easing.style); + this._transitionTime(time); + this.setTranslate(x, y); + } else { + this.setTranslate(x, y); + } + + }, + scrollToBottom: function(time, easing) { + time = time || this.options.scrollTime; + this.scrollTo(0, this.maxScrollY, time, easing); + }, + gotoPage: function(index) { + this._gotoPage(index); + }, + destroy: function() { + this._initEvent(true); //detach + delete $.data[this.wrapper.getAttribute('data-scroll')]; + this.wrapper.setAttribute('data-scroll', ''); + } + }); + //Indicator + var Indicator = function(scroller, options) { + this.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el; + this.wrapperStyle = this.wrapper.style; + this.indicator = this.wrapper.children[0]; + this.indicatorStyle = this.indicator.style; + this.scroller = scroller; + + this.options = $.extend({ + listenX: true, + listenY: true, + fade: false, + speedRatioX: 0, + speedRatioY: 0 + }, options); + + this.sizeRatioX = 1; + this.sizeRatioY = 1; + this.maxPosX = 0; + this.maxPosY = 0; + + if (this.options.fade) { + this.wrapperStyle['webkitTransform'] = this.scroller.translateZ; + this.wrapperStyle['webkitTransitionDuration'] = this.options.fixedBadAndorid && $.os.isBadAndroid ? '0.001s' : '0ms'; + this.wrapperStyle.opacity = '0'; + } + } + Indicator.prototype = { + handleEvent: function(e) { + + }, + transitionTime: function(time) { + time = time || 0; + this.indicatorStyle['webkitTransitionDuration'] = time + 'ms'; + if (this.scroller.options.fixedBadAndorid && !time && $.os.isBadAndroid) { + this.indicatorStyle['webkitTransitionDuration'] = '0.001s'; + } + }, + transitionTimingFunction: function(easing) { + this.indicatorStyle['webkitTransitionTimingFunction'] = easing; + }, + refresh: function() { + this.transitionTime(); + + if (this.options.listenX && !this.options.listenY) { + this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none'; + } else if (this.options.listenY && !this.options.listenX) { + this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none'; + } else { + this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none'; + } + + this.wrapper.offsetHeight; // force refresh + + if (this.options.listenX) { + this.wrapperWidth = this.wrapper.clientWidth; + this.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8); + this.indicatorStyle.width = this.indicatorWidth + 'px'; + + this.maxPosX = this.wrapperWidth - this.indicatorWidth; + + this.minBoundaryX = 0; + this.maxBoundaryX = this.maxPosX; + + this.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX)); + } + + if (this.options.listenY) { + this.wrapperHeight = this.wrapper.clientHeight; + this.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8); + this.indicatorStyle.height = this.indicatorHeight + 'px'; + + this.maxPosY = this.wrapperHeight - this.indicatorHeight; + + this.minBoundaryY = 0; + this.maxBoundaryY = this.maxPosY; + + this.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY)); + } + + this.updatePosition(); + }, + + updatePosition: function() { + var x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0, + y = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0; + + if (x < this.minBoundaryX) { + this.width = Math.max(this.indicatorWidth + x, 8); + this.indicatorStyle.width = this.width + 'px'; + x = this.minBoundaryX; + } else if (x > this.maxBoundaryX) { + this.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8); + this.indicatorStyle.width = this.width + 'px'; + x = this.maxPosX + this.indicatorWidth - this.width; + } else if (this.width != this.indicatorWidth) { + this.width = this.indicatorWidth; + this.indicatorStyle.width = this.width + 'px'; + } + + if (y < this.minBoundaryY) { + this.height = Math.max(this.indicatorHeight + y * 3, 8); + this.indicatorStyle.height = this.height + 'px'; + y = this.minBoundaryY; + } else if (y > this.maxBoundaryY) { + this.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8); + this.indicatorStyle.height = this.height + 'px'; + y = this.maxPosY + this.indicatorHeight - this.height; + } else if (this.height != this.indicatorHeight) { + this.height = this.indicatorHeight; + this.indicatorStyle.height = this.height + 'px'; + } + + this.x = x; + this.y = y; + + this.indicatorStyle['webkitTransform'] = this.scroller._getTranslateStr(x, y); + + }, + fade: function(val, hold) { + if (hold && !this.visible) { + return; + } + + clearTimeout(this.fadeTimeout); + this.fadeTimeout = null; + + var time = val ? 250 : 500, + delay = val ? 0 : 300; + + val = val ? '1' : '0'; + + this.wrapperStyle['webkitTransitionDuration'] = time + 'ms'; + + this.fadeTimeout = setTimeout((function(val) { + this.wrapperStyle.opacity = val; + this.visible = +val; + }).bind(this, val), delay); + } + }; + + $.Scroll = Scroll; + + $.fn.scroll = function(options) { + var scrollApis = []; + this.each(function() { + var scrollApi = null; + var self = this; + var id = self.getAttribute('data-scroll'); + if (!id) { + id = ++$.uuid; + var _options = $.extend({}, options); + if (self.classList.contains('mui-segmented-control')) { + _options = $.extend(_options, { + scrollY: false, + scrollX: true, + indicators: false, + snap: '.mui-control-item' + }); + } + $.data[id] = scrollApi = new Scroll(self, _options); + self.setAttribute('data-scroll', id); + } else { + scrollApi = $.data[id]; + } + scrollApis.push(scrollApi); + }); + return scrollApis.length === 1 ? scrollApis[0] : scrollApis; + }; +})(mui, window, document); +(function($, window, document, undefined) { + + var CLASS_VISIBILITY = 'mui-visibility'; + var CLASS_HIDDEN = 'mui-hidden'; + + var PullRefresh = $.Scroll.extend($.extend({ + handleEvent: function(e) { + this._super(e); + if (e.type === 'scrollbottom') { + if (e.target === this.scroller) { + this._scrollbottom(); + } + } + }, + _scrollbottom: function() { + if (!this.pulldown && !this.loading) { + this.pulldown = false; + this._initPullupRefresh(); + this.pullupLoading(); + } + }, + _start: function(e) { + //仅下拉刷新在start阻止默认事件 + if (e.touches && e.touches.length && e.touches[0].clientX > 30) { + e.target && !this._preventDefaultException(e.target, this.options.preventDefaultException) && e.preventDefault(); + } + if (!this.loading) { + this.pulldown = this.pullPocket = this.pullCaption = this.pullLoading = false + } + this._super(e); + }, + _drag: function(e) { + if (this.y >= 0 && this.disablePulldown && e.detail.direction === 'down') { //禁用下拉刷新 + return; + } + this._super(e); + if (!this.pulldown && !this.loading && this.topPocket && e.detail.direction === 'down' && this.y >= 0) { + this._initPulldownRefresh(); + } + if (this.pulldown) { + this._setCaption(this.y > this.options.down.height ? this.options.down.contentover : this.options.down.contentdown); + } + }, + + _reLayout: function() { + this.hasVerticalScroll = true; + this._super(); + }, + //API + resetPosition: function(time) { + if (this.pulldown && !this.disablePulldown) { + if (this.y >= this.options.down.height) { + this.pulldownLoading(undefined, time || 0); + return true; + } else { + !this.loading && this.topPocket.classList.remove(CLASS_VISIBILITY); + } + } + return this._super(time); + }, + pulldownLoading: function(y, time) { + typeof y === 'undefined' && (y = this.options.down.height); //默认高度 + this.scrollTo(0, y, time, this.options.bounceEasing); + if (this.loading) { + return; + } + // if (!this.pulldown) { + this._initPulldownRefresh(); + // } + this._setCaption(this.options.down.contentrefresh); + this.loading = true; + this.indicators.map(function(indicator) { + indicator.fade(0); + }); + var callback = this.options.down.callback; + callback && callback.call(this); + }, + endPulldownToRefresh: function() { + var self = this; + if (self.topPocket && self.loading && this.pulldown) { + self.scrollTo(0, 0, self.options.bounceTime, self.options.bounceEasing); + self.loading = false; + self._setCaption(self.options.down.contentdown, true); + setTimeout(function() { + self.loading || self.topPocket.classList.remove(CLASS_VISIBILITY); + }, 350); + } + }, + pullupLoading: function(callback, x, time) { + x = x || 0; + this.scrollTo(x, this.maxScrollY, time, this.options.bounceEasing); + if (this.loading) { + return; + } + this._initPullupRefresh(); + this._setCaption(this.options.up.contentrefresh); + this.indicators.map(function(indicator) { + indicator.fade(0); + }); + this.loading = true; + callback = callback || this.options.up.callback; + callback && callback.call(this); + }, + endPullupToRefresh: function(finished) { + var self = this; + if (self.bottomPocket) { // && self.loading && !this.pulldown + self.loading = false; + if (finished) { + this.finished = true; + self._setCaption(self.options.up.contentnomore); + // self.bottomPocket.classList.remove(CLASS_VISIBILITY); + // self.bottomPocket.classList.add(CLASS_HIDDEN); + self.wrapper.removeEventListener('scrollbottom', self); + } else { + self._setCaption(self.options.up.contentdown); + // setTimeout(function() { + self.loading || self.bottomPocket.classList.remove(CLASS_VISIBILITY); + // }, 300); + } + } + }, + disablePullupToRefresh: function() { + this._initPullupRefresh(); + this.bottomPocket.className = 'mui-pull-bottom-pocket' + ' ' + CLASS_HIDDEN; + this.wrapper.removeEventListener('scrollbottom', this); + }, + disablePulldownToRefresh: function() { + this._initPulldownRefresh(); + this.topPocket.className = 'mui-pull-top-pocket' + ' ' + CLASS_HIDDEN; + this.disablePulldown = true; + }, + enablePulldownToRefresh: function() { + this._initPulldownRefresh(); + this.topPocket.classList.remove(CLASS_HIDDEN); + this._setCaption(this.options.down.contentdown); + this.disablePulldown = false; + }, + enablePullupToRefresh: function() { + this._initPullupRefresh(); + this.bottomPocket.classList.remove(CLASS_HIDDEN); + this._setCaption(this.options.up.contentdown); + this.wrapper.addEventListener('scrollbottom', this); + }, + refresh: function(isReset) { + if (isReset && this.finished) { + this.enablePullupToRefresh(); + this.finished = false; + } + this._super(); + }, + }, $.PullRefresh)); + $.fn.pullRefresh = function(options) { + if (this.length === 1) { + var self = this[0]; + var pullRefreshApi = null; + var id = self.getAttribute('data-pullrefresh'); + if (!id && typeof options === 'undefined') { + return false; + } + options = options || {}; + if (!id) { + id = ++$.uuid; + $.data[id] = pullRefreshApi = new PullRefresh(self, options); + self.setAttribute('data-pullrefresh', id); + } else { + pullRefreshApi = $.data[id]; + } + if (options.down && options.down.auto) { //如果设置了auto,则自动下拉一次 + pullRefreshApi.pulldownLoading(options.down.autoY); + } else if (options.up && options.up.auto) { //如果设置了auto,则自动上拉一次 + pullRefreshApi.pullupLoading(); + } + //暂不提供这种调用方式吧 + // if (typeof options === 'string') { + // var methodValue = pullRefreshApi[options].apply(pullRefreshApi, $.slice.call(arguments, 1)); + // if (methodValue !== undefined) { + // return methodValue; + // } + // } + return pullRefreshApi; + } + }; +})(mui, window, document); +/** + * snap 重构 + * @param {Object} $ + * @param {Object} window + */ +(function($, window) { + var CLASS_SLIDER = 'mui-slider'; + var CLASS_SLIDER_GROUP = 'mui-slider-group'; + var CLASS_SLIDER_LOOP = 'mui-slider-loop'; + var CLASS_SLIDER_INDICATOR = 'mui-slider-indicator'; + var CLASS_ACTION_PREVIOUS = 'mui-action-previous'; + var CLASS_ACTION_NEXT = 'mui-action-next'; + var CLASS_SLIDER_ITEM = 'mui-slider-item'; + + var CLASS_ACTIVE = 'mui-active'; + + var SELECTOR_SLIDER_ITEM = '.' + CLASS_SLIDER_ITEM; + var SELECTOR_SLIDER_INDICATOR = '.' + CLASS_SLIDER_INDICATOR; + var SELECTOR_SLIDER_PROGRESS_BAR = '.mui-slider-progress-bar'; + + var Slider = $.Slider = $.Scroll.extend({ + init: function(element, options) { + this._super(element, $.extend(true, { + fingers: 1, + interval: 0, //设置为0,则不定时轮播 + scrollY: false, + scrollX: true, + indicators: false, + scrollTime: 1000, + startX: false, + slideTime: 0, //滑动动画时间 + snap: SELECTOR_SLIDER_ITEM + }, options)); + if (this.options.startX) { + // $.trigger(this.wrapper, 'scrollend', this); + } + }, + _init: function() { + this._reInit(); + if (this.scroller) { + this.scrollerStyle = this.scroller.style; + this.progressBar = this.wrapper.querySelector(SELECTOR_SLIDER_PROGRESS_BAR); + if (this.progressBar) { + this.progressBarWidth = this.progressBar.offsetWidth; + this.progressBarStyle = this.progressBar.style; + } + //忘记这个代码是干什么的了? + // this.x = this._getScroll(); + // if (this.options.startX === false) { + // this.options.startX = this.x; + // } + //根据active修正startX + + this._super(); + this._initTimer(); + } + }, + _triggerSlide: function() { + var self = this; + self.isInTransition = false; + var page = self.currentPage; + self.slideNumber = self._fixedSlideNumber(); + if (self.loop) { + if (self.slideNumber === 0) { + self.setTranslate(self.pages[1][0].x, 0); + } else if (self.slideNumber === self.itemLength - 3) { + self.setTranslate(self.pages[self.itemLength - 2][0].x, 0); + } + } + if (self.lastSlideNumber != self.slideNumber) { + self.lastSlideNumber = self.slideNumber; + self.lastPage = self.currentPage; + $.trigger(self.wrapper, 'slide', { + slideNumber: self.slideNumber + }); + } + self._initTimer(); + }, + _handleSlide: function(e) { + var self = this; + if (e.target !== self.wrapper) { + return; + } + var detail = e.detail; + detail.slideNumber = detail.slideNumber || 0; + var temps = self.scroller.querySelectorAll(SELECTOR_SLIDER_ITEM); + var items = []; + for (var i = 0, len = temps.length; i < len; i++) { + var item = temps[i]; + if (item.parentNode === self.scroller) { + items.push(item); + } + } + var _slideNumber = detail.slideNumber; + if (self.loop) { + _slideNumber += 1; + } + if (!self.wrapper.classList.contains('mui-segmented-control')) { + for (var i = 0, len = items.length; i < len; i++) { + var item = items[i]; + if (item.parentNode === self.scroller) { + if (i === _slideNumber) { + item.classList.add(CLASS_ACTIVE); + } else { + item.classList.remove(CLASS_ACTIVE); + } + } + } + } + var indicatorWrap = self.wrapper.querySelector('.mui-slider-indicator'); + if (indicatorWrap) { + if (indicatorWrap.getAttribute('data-scroll')) { //scroll + $(indicatorWrap).scroll().gotoPage(detail.slideNumber); + } + var indicators = indicatorWrap.querySelectorAll('.mui-indicator'); + if (indicators.length > 0) { //图片轮播 + for (var i = 0, len = indicators.length; i < len; i++) { + indicators[i].classList[i === detail.slideNumber ? 'add' : 'remove'](CLASS_ACTIVE); + } + } else { + var number = indicatorWrap.querySelector('.mui-number span'); + if (number) { //图文表格 + number.innerText = (detail.slideNumber + 1); + } else { //segmented controls + var controlItems = indicatorWrap.querySelectorAll('.mui-control-item'); + for (var i = 0, len = controlItems.length; i < len; i++) { + controlItems[i].classList[i === detail.slideNumber ? 'add' : 'remove'](CLASS_ACTIVE); + } + } + } + } + e.stopPropagation(); + }, + _handleTabShow: function(e) { + var self = this; + self.gotoItem((e.detail.tabNumber || 0), self.options.slideTime); + }, + _handleIndicatorTap: function(event) { + var self = this; + var target = event.target; + if (target.classList.contains(CLASS_ACTION_PREVIOUS) || target.classList.contains(CLASS_ACTION_NEXT)) { + self[target.classList.contains(CLASS_ACTION_PREVIOUS) ? 'prevItem' : 'nextItem'](); + event.stopPropagation(); + } + }, + _initEvent: function(detach) { + var self = this; + self._super(detach); + var action = detach ? 'removeEventListener' : 'addEventListener'; + self.wrapper[action]('slide', this); + self.wrapper[action]($.eventName('shown', 'tab'), this); + }, + handleEvent: function(e) { + this._super(e); + switch (e.type) { + case 'slide': + this._handleSlide(e); + break; + case $.eventName('shown', 'tab'): + if (~this.snaps.indexOf(e.target)) { //避免嵌套监听错误的tab show + this._handleTabShow(e); + } + break; + } + }, + _scrollend: function(e) { + this._super(e); + this._triggerSlide(e); + }, + _drag: function(e) { + this._super(e); + var direction = e.detail.direction; + if (direction === 'left' || direction === 'right') { + //拖拽期间取消定时 + var slidershowTimer = this.wrapper.getAttribute('data-slidershowTimer'); + slidershowTimer && window.clearTimeout(slidershowTimer); + + e.stopPropagation(); + } + }, + _initTimer: function() { + var self = this; + var slider = self.wrapper; + var interval = self.options.interval; + var slidershowTimer = slider.getAttribute('data-slidershowTimer'); + slidershowTimer && window.clearTimeout(slidershowTimer); + if (interval) { + slidershowTimer = window.setTimeout(function() { + if (!slider) { + return; + } + //仅slider显示状态进行自动轮播 + if (!!(slider.offsetWidth || slider.offsetHeight)) { + self.nextItem(true); + //下一个 + } + self._initTimer(); + }, interval); + slider.setAttribute('data-slidershowTimer', slidershowTimer); + } + }, + + _fixedSlideNumber: function(page) { + page = page || this.currentPage; + var slideNumber = page.pageX; + if (this.loop) { + if (page.pageX === 0) { + slideNumber = this.itemLength - 3; + } else if (page.pageX === (this.itemLength - 1)) { + slideNumber = 0; + } else { + slideNumber = page.pageX - 1; + } + } + return slideNumber; + }, + _reLayout: function() { + this.hasHorizontalScroll = true; + this.loop = this.scroller.classList.contains(CLASS_SLIDER_LOOP); + this._super(); + }, + _getScroll: function() { + var result = $.parseTranslateMatrix($.getStyles(this.scroller, 'webkitTransform')); + return result ? result.x : 0; + }, + _transitionEnd: function(e) { + if (e.target !== this.scroller || !this.isInTransition) { + return; + } + this._transitionTime(); + this.isInTransition = false; + $.trigger(this.wrapper, 'scrollend', this); + }, + _flick: function(e) { + if (!this.moved) { //无moved + return; + } + var detail = e.detail; + var direction = detail.direction; + this._clearRequestAnimationFrame(); + this.isInTransition = true; + // if (direction === 'up' || direction === 'down') { + // this.resetPosition(this.options.bounceTime); + // return; + // } + if (e.type === 'flick') { + if (detail.deltaTime < 200) { //flick,太容易触发,额外校验一下deltaTime + this.x = this._getPage((this.slideNumber + (direction === 'right' ? -1 : 1)), true).x; + } + this.resetPosition(this.options.bounceTime); + } else if (e.type === 'dragend' && !detail.flick) { + this.resetPosition(this.options.bounceTime); + } + e.stopPropagation(); + }, + _initSnap: function() { + this.scrollerWidth = this.itemLength * this.scrollerWidth; + this.maxScrollX = Math.min(this.wrapperWidth - this.scrollerWidth, 0); + this._super(); + if (!this.currentPage.x) { + //当slider处于隐藏状态时,导致snap计算是错误的,临时先这么判断一下,后续要考虑解决所有scroll在隐藏状态下初始化属性不正确的问题 + var currentPage = this.pages[this.loop ? 1 : 0]; + currentPage = currentPage || this.pages[0]; + if (!currentPage) { + return; + } + this.currentPage = currentPage[0]; + this.slideNumber = 0; + this.lastSlideNumber = typeof this.lastSlideNumber === 'undefined' ? 0 : this.lastSlideNumber; + } else { + this.slideNumber = this._fixedSlideNumber(); + this.lastSlideNumber = typeof this.lastSlideNumber === 'undefined' ? this.slideNumber : this.lastSlideNumber; + } + this.options.startX = this.currentPage.x || 0; + }, + _getSnapX: function(offsetLeft) { + return Math.max(-offsetLeft, this.maxScrollX); + }, + _getPage: function(slideNumber, isFlick) { + if (this.loop) { + if (slideNumber > (this.itemLength - (isFlick ? 2 : 3))) { + slideNumber = 1; + time = 0; + } else if (slideNumber < (isFlick ? -1 : 0)) { + slideNumber = this.itemLength - 2; + time = 0; + } else { + slideNumber += 1; + } + } else { + if (!isFlick) { + if (slideNumber > (this.itemLength - 1)) { + slideNumber = 0; + time = 0; + } else if (slideNumber < 0) { + slideNumber = this.itemLength - 1; + time = 0; + } + } + slideNumber = Math.min(Math.max(0, slideNumber), this.itemLength - 1); + } + return this.pages[slideNumber][0]; + }, + _gotoItem: function(slideNumber, time) { + this.currentPage = this._getPage(slideNumber, true); //此处传true。可保证程序切换时,动画与人手操作一致(第一张,最后一张的切换动画) + this.scrollTo(this.currentPage.x, 0, time, this.options.scrollEasing); + if (time === 0) { + $.trigger(this.wrapper, 'scrollend', this); + } + }, + //API + setTranslate: function(x, y) { + this._super(x, y); + var progressBar = this.progressBar; + if (progressBar) { + this.progressBarStyle.webkitTransform = this._getTranslateStr((-x * (this.progressBarWidth / this.wrapperWidth)), 0); + } + }, + resetPosition: function(time) { + time = time || 0; + if (this.x > 0) { + this.x = 0; + } else if (this.x < this.maxScrollX) { + this.x = this.maxScrollX; + } + this.currentPage = this._nearestSnap(this.x); + this.scrollTo(this.currentPage.x, 0, time, this.options.scrollEasing); + return true; + }, + gotoItem: function(slideNumber, time) { + this._gotoItem(slideNumber, typeof time === 'undefined' ? this.options.scrollTime : time); + }, + nextItem: function() { + this._gotoItem(this.slideNumber + 1, this.options.scrollTime); + }, + prevItem: function() { + this._gotoItem(this.slideNumber - 1, this.options.scrollTime); + }, + getSlideNumber: function() { + return this.slideNumber || 0; + }, + _reInit: function() { + var groups = this.wrapper.querySelectorAll('.' + CLASS_SLIDER_GROUP); + for (var i = 0, len = groups.length; i < len; i++) { + if (groups[i].parentNode === this.wrapper) { + this.scroller = groups[i]; + break; + } + } + this.scrollerStyle = this.scroller && this.scroller.style; + if (this.progressBar) { + this.progressBarWidth = this.progressBar.offsetWidth; + this.progressBarStyle = this.progressBar.style; + } + }, + refresh: function(options) { + if (options) { + $.extend(this.options, options); + this._super(); + this._initTimer(); + } else { + this._super(); + } + }, + destroy: function() { + this._initEvent(true); //detach + delete $.data[this.wrapper.getAttribute('data-slider')]; + this.wrapper.setAttribute('data-slider', ''); + } + }); + $.fn.slider = function(options) { + var slider = null; + this.each(function() { + var sliderElement = this; + if (!this.classList.contains(CLASS_SLIDER)) { + sliderElement = this.querySelector('.' + CLASS_SLIDER); + } + if (sliderElement && sliderElement.querySelector(SELECTOR_SLIDER_ITEM)) { + var id = sliderElement.getAttribute('data-slider'); + if (!id) { + id = ++$.uuid; + $.data[id] = slider = new Slider(sliderElement, options); + sliderElement.setAttribute('data-slider', id); + } else { + slider = $.data[id]; + if (slider && options) { + slider.refresh(options); + } + } + } + }); + return slider; + }; + $.ready(function() { + // setTimeout(function() { + $('.mui-slider').slider(); + $('.mui-scroll-wrapper.mui-slider-indicator.mui-segmented-control').scroll({ + scrollY: false, + scrollX: true, + indicators: false, + snap: '.mui-control-item' + }); + // }, 500); //临时处理slider宽度计算不正确的问题(初步确认是scrollbar导致的) + + }); +})(mui, window); +/** + * pullRefresh 5+ + * @param {type} $ + * @returns {undefined} + */ +(function($, document) { + if (!($.os.plus)) { //仅在5+android支持多webview的使用 + return; + } + $.plusReady(function() { + if (window.__NWin_Enable__ === false) { //不支持多webview,则不用5+下拉刷新 + return; + } + var CLASS_PLUS_PULLREFRESH = 'mui-plus-pullrefresh'; + var CLASS_VISIBILITY = 'mui-visibility'; + var CLASS_HIDDEN = 'mui-hidden'; + var CLASS_BLOCK = 'mui-block'; + + var CLASS_PULL_CAPTION = 'mui-pull-caption'; + var CLASS_PULL_CAPTION_DOWN = 'mui-pull-caption-down'; + var CLASS_PULL_CAPTION_REFRESH = 'mui-pull-caption-refresh'; + var CLASS_PULL_CAPTION_NOMORE = 'mui-pull-caption-nomore'; + + var PlusPullRefresh = $.Class.extend({ + init: function(element, options) { + this.element = element; + this.options = options; + this.wrapper = this.scroller = element; + this._init(); + this._initPulldownRefreshEvent(); + }, + _init: function() { + var self = this; + //document.addEventListener('plusscrollbottom', this); + window.addEventListener('dragup', self); + document.addEventListener("plusscrollbottom", self); + self.scrollInterval = window.setInterval(function() { + if (self.isScroll && !self.loading) { + if (window.pageYOffset + window.innerHeight + 10 >= document.documentElement.scrollHeight) { + self.isScroll = false; //放在这里是因为快速滚动的话,有可能检测时,还没到底,所以只要有滚动,没到底之前一直检测高度变化 + if (self.bottomPocket) { + self.pullupLoading(); + } + } + } + }, 100); + }, + _initPulldownRefreshEvent: function() { + var self = this; + $.plusReady(function() { + if (self.options.down.style == "circle") { + //单webview、原生转圈 + self.options.webview = plus.webview.currentWebview(); + self.options.webview.setPullToRefresh({ + support: true, + color: self.options.down.color || '#2BD009', + height: self.options.down.height || '50px', + range: self.options.down.range || '100px', + style: 'circle', + offset: self.options.down.offset || '0px' + }, function() { + self.options.down.callback(); + }); + } else if (self.topPocket && self.options.webviewId) { + var webview = plus.webview.getWebviewById(self.options.webviewId); //子窗口 + if (!webview) { + return; + } + self.options.webview = webview; + var downOptions = self.options.down; + var height = downOptions.height; + webview.addEventListener('close', function() { + var attrWebviewId = self.options.webviewId && self.options.webviewId.replace(/\//g, "_"); //替换所有"/" + self.element.removeAttribute('data-pullrefresh-plus-' + attrWebviewId); + }); + webview.addEventListener("dragBounce", function(e) { + if (!self.pulldown) { + self._initPulldownRefresh(); + } else { + self.pullPocket.classList.add(CLASS_BLOCK); + } + switch (e.status) { + case "beforeChangeOffset": //下拉可刷新状态 + self._setCaption(downOptions.contentdown); + break; + case "afterChangeOffset": //松开可刷新状态 + self._setCaption(downOptions.contentover); + break; + case "dragEndAfterChangeOffset": //正在刷新状态 + //执行下拉刷新所在webview的回调函数 + webview.evalJS("window.mui&&mui.options.pullRefresh.down.callback()"); + self._setCaption(downOptions.contentrefresh); + break; + default: + break; + } + }, false); + + webview.setBounce({ + position: { + top: height * 2 + 'px' + }, + changeoffset: { + top: height + 'px' + } + }); + + } + }); + }, + handleEvent: function(e) { + var self = this; + if (self.stopped) { + return; + } + self.isScroll = false; + if (e.type === 'dragup' || e.type === 'plusscrollbottom') { + self.isScroll = true; + setTimeout(function() { + self.isScroll = false; + }, 1000); + } + } + }).extend($.extend({ + setStopped: function(stopped) { //该方法是子页面调用的 + this.stopped = !!stopped; + // TODO 此处需要设置当前webview的bounce为none,目前5+有BUG + if (this.stopped) { + this.disablePullupToRefresh(); + this.disablePulldownToRefresh(); + } else { + this.enablePullupToRefresh(); + this.enablePulldownToRefresh(); + } + }, + beginPulldown: function() { + var self = this; + $.plusReady(function() { + //这里延时的目的是为了保证下拉刷新组件初始化完成,后续应该做成有状态的 + setTimeout(function() { + if (self.options.down.style == "circle") { //单webview下拉刷新 + plus.webview.currentWebview().beginPullToRefresh(); + } else { //双webview模式 + var webview = self.options.webview; + if (webview) { + webview.setBounce({ + offset: { + top: self.options.down.height + "px" + } + }); + } + } + }, 15); + }.bind(this)); + }, + pulldownLoading: function() { //该方法是子页面调用的,兼容老的历史API + this.beginPulldown(); + }, + _pulldownLoading: function() { //该方法是父页面调用的 + var self = this; + $.plusReady(function() { + var childWebview = plus.webview.getWebviewById(self.options.webviewId); + childWebview && childWebview.setBounce({ + offset: { + top: self.options.down.height + "px" + } + }); + }); + }, + endPulldown: function() { + var _wv = plus.webview.currentWebview(); + //双webview的下拉刷新,需要修改父窗口提示信息 + if (_wv.parent() && this.options.down.style !== "circle") { + _wv.parent().evalJS("mui&&mui(document.querySelector('.mui-content')).pullRefresh('" + JSON.stringify({ + webviewId: _wv.id + }) + "')._endPulldownToRefresh()"); + } else { + _wv.endPullToRefresh(); + } + }, + endPulldownToRefresh: function() { //该方法是子页面调用的,兼容老的历史API + this.endPulldown(); + }, + _endPulldownToRefresh: function() { //该方法是父页面调用的 + var self = this; + if (self.topPocket && self.options.webview) { + self.options.webview.endPullToRefresh(); //下拉刷新所在webview回弹 + self.loading = false; + self._setCaption(self.options.down.contentdown, true); + setTimeout(function() { + self.loading || self.topPocket.classList.remove(CLASS_BLOCK); + }, 350); + } + }, + beginPullup: function(callback) { //开始上拉加载 + var self = this; + if (self.isLoading) return; + self.isLoading = true; + if (self.pulldown !== false) { + self._initPullupRefresh(); + } else { + this.pullPocket.classList.add(CLASS_BLOCK); + } + setTimeout(function() { + self.pullLoading.classList.add(CLASS_VISIBILITY); + self.pullLoading.classList.remove(CLASS_HIDDEN); + self.pullCaption.innerHTML = ''; //修正5+里边第一次加载时,文字显示的bug(还会显示出来个“多”,猜测应该是渲染问题导致的) + self.pullCaption.className = CLASS_PULL_CAPTION + ' ' + CLASS_PULL_CAPTION_REFRESH; + self.pullCaption.innerHTML = self.options.up.contentrefresh; + callback = callback || self.options.up.callback; + callback && callback.call(self); + }, 300); + }, + pullupLoading: function(callback) { //兼容老的API + this.beginPullup(callback); + }, + endPullup: function(finished) { //上拉加载结束 + var self = this; + if (self.pullLoading) { + self.pullLoading.classList.remove(CLASS_VISIBILITY); + self.pullLoading.classList.add(CLASS_HIDDEN); + self.isLoading = false; + if (finished) { + self.finished = true; + self.pullCaption.className = CLASS_PULL_CAPTION + ' ' + CLASS_PULL_CAPTION_NOMORE; + self.pullCaption.innerHTML = self.options.up.contentnomore; + //取消5+的plusscrollbottom事件 + document.removeEventListener('plusscrollbottom', self); + window.removeEventListener('dragup', self); + } else { //初始化时隐藏,后续不再隐藏 + self.pullCaption.className = CLASS_PULL_CAPTION + ' ' + CLASS_PULL_CAPTION_DOWN; + self.pullCaption.innerHTML = self.options.up.contentdown; + } + } + }, + endPullupToRefresh: function(finished) { //上拉加载结束,兼容老的API + this.endPullup(finished); + }, + disablePulldownToRefresh: function() { + var webview = plus.webview.currentWebview(); + if (this.options.down.style && this.options.down.style == 'circle') { // 单webview模式禁止原生下拉刷新 + this.options.webview.setPullToRefresh({ + support: false, + style: 'circle' + }); + } else { // 双webview模式禁止下拉刷新 + webview.setStyle({ + bounce: 'none' + }); + webview.setBounce({ + position: { + top: 'none' + } + }); + } + }, + enablePulldownToRefresh: function() { + var self = this, + webview = plus.webview.currentWebview(), + height = this.options.down.height; + // 单webview模式禁止原生下拉刷新 + if (this.options.down.style && this.options.down.style == 'circle') { + webview.setPullToRefresh({ + support: true, + height: height || '50px', + range: self.options.down.range || '100px', + style: 'circle', + offset: self.options.down.offset || '0px' + }); + } else { // 重新初始化双webview模式下拉刷新 + webview.setStyle({ + bounce: 'vertical' + }); + webview.setBounce({ + position: { + top: height * 2 + 'px' + }, + changeoffset: { + top: height + 'px' + } + }); + } + }, + disablePullupToRefresh: function() { + this._initPullupRefresh(); + this.bottomPocket.className = 'mui-pull-bottom-pocket' + ' ' + CLASS_HIDDEN; + window.removeEventListener('dragup', this); + }, + enablePullupToRefresh: function() { + this._initPullupRefresh(); + this.bottomPocket.classList.remove(CLASS_HIDDEN); + this.pullCaption.className = CLASS_PULL_CAPTION + ' ' + CLASS_PULL_CAPTION_DOWN; + this.pullCaption.innerHTML = this.options.up.contentdown; + document.addEventListener("plusscrollbottom", this); + window.addEventListener('dragup', this); + }, + scrollTo: function(x, y, time) { + $.scrollTo(y, time); + }, + scrollToBottom: function(time) { + $.scrollTo(document.documentElement.scrollHeight, time); + }, + refresh: function(isReset) { + if (isReset && this.finished) { + this.enablePullupToRefresh(); + this.finished = false; + } + } + }, $.PullRefresh)); + + //override h5 pullRefresh + $.fn.pullRefresh_native = function(options) { + var self; + if (this.length === 0) { + self = document.createElement('div'); + self.className = 'mui-content'; + document.body.appendChild(self); + } else { + self = this[0]; + } + var args = options; + //一个父需要支持多个子下拉刷新 + options = options || {} + if (typeof options === 'string') { + options = $.parseJSON(options); + }; + !options.webviewId && (options.webviewId = (plus.webview.currentWebview().id || plus.webview.currentWebview().getURL())); + var pullRefreshApi = null; + var attrWebviewId = options.webviewId && options.webviewId.replace(/\//g, "_"); //替换所有"/" + var id = self.getAttribute('data-pullrefresh-plus-' + attrWebviewId); + if (!id && typeof args === 'undefined') { + return false; + } + if (!id) { //避免重复初始化5+ pullrefresh + id = ++$.uuid; + self.setAttribute('data-pullrefresh-plus-' + attrWebviewId, id); + document.body.classList.add(CLASS_PLUS_PULLREFRESH); + $.data[id] = pullRefreshApi = new PlusPullRefresh(self, options); + } else { + pullRefreshApi = $.data[id]; + } + if (options.down && options.down.auto) { //如果设置了auto,则自动下拉一次 + //pullRefreshApi._pulldownLoading(); //parent webview + pullRefreshApi.beginPulldown(); + } else if (options.up && options.up.auto) { //如果设置了auto,则自动上拉一次 + pullRefreshApi.beginPullup(); + } + return pullRefreshApi; + }; + }); + +})(mui, document); +/** + * off-canvas + * @param {type} $ + * @param {type} window + * @param {type} document + * @param {type} action + * @returns {undefined} + */ +(function($, window, document, name) { + var CLASS_OFF_CANVAS_LEFT = 'mui-off-canvas-left'; + var CLASS_OFF_CANVAS_RIGHT = 'mui-off-canvas-right'; + var CLASS_ACTION_BACKDROP = 'mui-off-canvas-backdrop'; + var CLASS_OFF_CANVAS_WRAP = 'mui-off-canvas-wrap'; + + var CLASS_SLIDE_IN = 'mui-slide-in'; + var CLASS_ACTIVE = 'mui-active'; + + + var CLASS_TRANSITIONING = 'mui-transitioning'; + + var SELECTOR_INNER_WRAP = '.mui-inner-wrap'; + + + var OffCanvas = $.Class.extend({ + init: function(element, options) { + this.wrapper = this.element = element; + this.scroller = this.wrapper.querySelector(SELECTOR_INNER_WRAP); + this.classList = this.wrapper.classList; + if (this.scroller) { + this.options = $.extend(true, { + dragThresholdX: 10, + scale: 0.8, + opacity: 0.1, + preventDefaultException: { + tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT|VIDEO)$/ + }, + }, options); + document.body.classList.add('mui-fullscreen'); //fullscreen + this.refresh(); + this.initEvent(); + } + }, + _preventDefaultException: function(el, exceptions) { + for (var i in exceptions) { + if (exceptions[i].test(el[i])) { + return true; + } + } + return false; + }, + refresh: function(offCanvas) { + // offCanvas && !offCanvas.classList.contains(CLASS_ACTIVE) && this.classList.remove(CLASS_ACTIVE); + this.slideIn = this.classList.contains(CLASS_SLIDE_IN); + this.scalable = this.classList.contains('mui-scalable') && !this.slideIn; + this.scroller = this.wrapper.querySelector(SELECTOR_INNER_WRAP); + // !offCanvas && this.scroller.classList.remove(CLASS_TRANSITIONING); + // !offCanvas && this.scroller.setAttribute('style', ''); + this.offCanvasLefts = this.wrapper.querySelectorAll('.' + CLASS_OFF_CANVAS_LEFT); + this.offCanvasRights = this.wrapper.querySelectorAll('.' + CLASS_OFF_CANVAS_RIGHT); + if (offCanvas) { + if (offCanvas.classList.contains(CLASS_OFF_CANVAS_LEFT)) { + this.offCanvasLeft = offCanvas; + } else if (offCanvas.classList.contains(CLASS_OFF_CANVAS_RIGHT)) { + this.offCanvasRight = offCanvas; + } + } else { + this.offCanvasRight = this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_RIGHT); + this.offCanvasLeft = this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_LEFT); + } + this.offCanvasRightWidth = this.offCanvasLeftWidth = 0; + this.offCanvasLeftSlideIn = this.offCanvasRightSlideIn = false; + if (this.offCanvasRight) { + this.offCanvasRightWidth = this.offCanvasRight.offsetWidth; + this.offCanvasRightSlideIn = this.slideIn && (this.offCanvasRight.parentNode === this.wrapper); + // this.offCanvasRight.classList.remove(CLASS_TRANSITIONING); + // this.offCanvasRight.classList.remove(CLASS_ACTIVE); + // this.offCanvasRight.setAttribute('style', ''); + } + if (this.offCanvasLeft) { + this.offCanvasLeftWidth = this.offCanvasLeft.offsetWidth; + this.offCanvasLeftSlideIn = this.slideIn && (this.offCanvasLeft.parentNode === this.wrapper); + // this.offCanvasLeft.classList.remove(CLASS_TRANSITIONING); + // this.offCanvasLeft.classList.remove(CLASS_ACTIVE); + // this.offCanvasLeft.setAttribute('style', ''); + } + this.backdrop = this.scroller.querySelector('.' + CLASS_ACTION_BACKDROP); + + this.options.dragThresholdX = this.options.dragThresholdX || 10; + + this.visible = false; + this.startX = null; + this.lastX = null; + this.offsetX = null; + this.lastTranslateX = null; + }, + handleEvent: function(e) { + switch (e.type) { + case $.EVENT_START: + e.target && !this._preventDefaultException(e.target, this.options.preventDefaultException) && e.preventDefault(); + break; + case 'webkitTransitionEnd': //有个bug需要处理,需要考虑假设没有触发webkitTransitionEnd的情况 + if (e.target === this.scroller) { + this._dispatchEvent(); + } + break; + case 'drag': + var detail = e.detail; + if (!this.startX) { + this.startX = detail.center.x; + this.lastX = this.startX; + } else { + this.lastX = detail.center.x; + } + if (!this.isDragging && Math.abs(this.lastX - this.startX) > this.options.dragThresholdX && (detail.direction === 'left' || (detail.direction === 'right'))) { + if (this.slideIn) { + this.scroller = this.wrapper.querySelector(SELECTOR_INNER_WRAP); + if (this.classList.contains(CLASS_ACTIVE)) { + if (this.offCanvasRight && this.offCanvasRight.classList.contains(CLASS_ACTIVE)) { + this.offCanvas = this.offCanvasRight; + this.offCanvasWidth = this.offCanvasRightWidth; + } else { + this.offCanvas = this.offCanvasLeft; + this.offCanvasWidth = this.offCanvasLeftWidth; + } + } else { + if (detail.direction === 'left' && this.offCanvasRight) { + this.offCanvas = this.offCanvasRight; + this.offCanvasWidth = this.offCanvasRightWidth; + } else if (detail.direction === 'right' && this.offCanvasLeft) { + this.offCanvas = this.offCanvasLeft; + this.offCanvasWidth = this.offCanvasLeftWidth; + } else { + this.scroller = null; + } + } + } else { + if (this.classList.contains(CLASS_ACTIVE)) { + if (detail.direction === 'left') { + this.offCanvas = this.offCanvasLeft; + this.offCanvasWidth = this.offCanvasLeftWidth; + } else { + this.offCanvas = this.offCanvasRight; + this.offCanvasWidth = this.offCanvasRightWidth; + } + } else { + if (detail.direction === 'right') { + this.offCanvas = this.offCanvasLeft; + this.offCanvasWidth = this.offCanvasLeftWidth; + } else { + this.offCanvas = this.offCanvasRight; + this.offCanvasWidth = this.offCanvasRightWidth; + } + } + } + if (this.offCanvas && this.scroller) { + this.startX = this.lastX; + this.isDragging = true; + + $.gestures.session.lockDirection = true; //锁定方向 + $.gestures.session.startDirection = detail.direction; + + this.offCanvas.classList.remove(CLASS_TRANSITIONING); + this.scroller.classList.remove(CLASS_TRANSITIONING); + this.offsetX = this.getTranslateX(); + this._initOffCanvasVisible(); + } + } + if (this.isDragging) { + this.updateTranslate(this.offsetX + (this.lastX - this.startX)); + detail.gesture.preventDefault(); + e.stopPropagation(); + } + break; + case 'dragend': + if (this.isDragging) { + var detail = e.detail; + var direction = detail.direction; + this.isDragging = false; + this.offCanvas.classList.add(CLASS_TRANSITIONING); + this.scroller.classList.add(CLASS_TRANSITIONING); + var ratio = 0; + var x = this.getTranslateX(); + if (!this.slideIn) { + if (x >= 0) { + ratio = (this.offCanvasLeftWidth && (x / this.offCanvasLeftWidth)) || 0; + } else { + ratio = (this.offCanvasRightWidth && (x / this.offCanvasRightWidth)) || 0; + } + if (ratio === 0) { + this.openPercentage(0); + this._dispatchEvent(); //此处不触发webkitTransitionEnd,所以手动dispatch + return; + } + if (direction === 'right' && ratio >= 0 && (ratio >= 0.5 || detail.swipe)) { //右滑打开 + this.openPercentage(100); + } else if (direction === 'right' && ratio < 0 && (ratio > -0.5 || detail.swipe)) { //右滑关闭 + this.openPercentage(0); + } else if (direction === 'right' && ratio > 0 && ratio < 0.5) { //右滑还原关闭 + this.openPercentage(0); + } else if (direction === 'right' && ratio < 0.5) { //右滑还原打开 + this.openPercentage(-100); + } else if (direction === 'left' && ratio <= 0 && (ratio <= -0.5 || detail.swipe)) { //左滑打开 + this.openPercentage(-100); + } else if (direction === 'left' && ratio > 0 && (ratio <= 0.5 || detail.swipe)) { //左滑关闭 + this.openPercentage(0); + } else if (direction === 'left' && ratio < 0 && ratio >= -0.5) { //左滑还原关闭 + this.openPercentage(0); + } else if (direction === 'left' && ratio > 0.5) { //左滑还原打开 + this.openPercentage(100); + } else { //默认关闭 + this.openPercentage(0); + } + if (ratio === 1 || ratio === -1) { //此处不触发webkitTransitionEnd,所以手动dispatch + this._dispatchEvent(); + } + } else { + if (x >= 0) { + ratio = (this.offCanvasRightWidth && (x / this.offCanvasRightWidth)) || 0; + } else { + ratio = (this.offCanvasLeftWidth && (x / this.offCanvasLeftWidth)) || 0; + } + if (direction === 'right' && ratio <= 0 && (ratio >= -0.5 || detail.swipe)) { //右滑打开 + this.openPercentage(100); + } else if (direction === 'right' && ratio > 0 && (ratio >= 0.5 || detail.swipe)) { //右滑关闭 + this.openPercentage(0); + } else if (direction === 'right' && ratio <= -0.5) { //右滑还原关闭 + this.openPercentage(0); + } else if (direction === 'right' && ratio > 0 && ratio <= 0.5) { //右滑还原打开 + this.openPercentage(-100); + } else if (direction === 'left' && ratio >= 0 && (ratio <= 0.5 || detail.swipe)) { //左滑打开 + this.openPercentage(-100); + } else if (direction === 'left' && ratio < 0 && (ratio <= -0.5 || detail.swipe)) { //左滑关闭 + this.openPercentage(0); + } else if (direction === 'left' && ratio >= 0.5) { //左滑还原关闭 + this.openPercentage(0); + } else if (direction === 'left' && ratio >= -0.5 && ratio < 0) { //左滑还原打开 + this.openPercentage(100); + } else { + this.openPercentage(0); + } + if (ratio === 1 || ratio === -1 || ratio === 0) { + this._dispatchEvent(); + return; + } + + } + } + break; + } + }, + _dispatchEvent: function() { + if (this.classList.contains(CLASS_ACTIVE)) { + $.trigger(this.wrapper, 'shown', this); + } else { + $.trigger(this.wrapper, 'hidden', this); + } + }, + _initOffCanvasVisible: function() { + if (!this.visible) { + this.visible = true; + if (this.offCanvasLeft) { + this.offCanvasLeft.style.visibility = 'visible'; + } + if (this.offCanvasRight) { + this.offCanvasRight.style.visibility = 'visible'; + } + } + }, + initEvent: function() { + var self = this; + if (self.backdrop) { + self.backdrop.addEventListener('tap', function(e) { + self.close(); + e.detail.gesture.preventDefault(); + }); + } + if (this.classList.contains('mui-draggable')) { + this.wrapper.addEventListener($.EVENT_START, this); //临时处理 + this.wrapper.addEventListener('drag', this); + this.wrapper.addEventListener('dragend', this); + } + this.wrapper.addEventListener('webkitTransitionEnd', this); + }, + openPercentage: function(percentage) { + var p = percentage / 100; + if (!this.slideIn) { + if (this.offCanvasLeft && percentage >= 0) { + this.updateTranslate(this.offCanvasLeftWidth * p); + this.offCanvasLeft.classList[p !== 0 ? 'add' : 'remove'](CLASS_ACTIVE); + } else if (this.offCanvasRight && percentage <= 0) { + this.updateTranslate(this.offCanvasRightWidth * p); + this.offCanvasRight.classList[p !== 0 ? 'add' : 'remove'](CLASS_ACTIVE); + } + this.classList[p !== 0 ? 'add' : 'remove'](CLASS_ACTIVE); + } else { + if (this.offCanvasLeft && percentage >= 0) { + p = p === 0 ? -1 : 0; + this.updateTranslate(this.offCanvasLeftWidth * p); + this.offCanvasLeft.classList[percentage !== 0 ? 'add' : 'remove'](CLASS_ACTIVE); + } else if (this.offCanvasRight && percentage <= 0) { + p = p === 0 ? 1 : 0; + this.updateTranslate(this.offCanvasRightWidth * p); + this.offCanvasRight.classList[percentage !== 0 ? 'add' : 'remove'](CLASS_ACTIVE); + } + this.classList[percentage !== 0 ? 'add' : 'remove'](CLASS_ACTIVE); + } + }, + updateTranslate: function(x) { + if (x !== this.lastTranslateX) { + if (!this.slideIn) { + if ((!this.offCanvasLeft && x > 0) || (!this.offCanvasRight && x < 0)) { + this.setTranslateX(0); + return; + } + if (this.leftShowing && x > this.offCanvasLeftWidth) { + this.setTranslateX(this.offCanvasLeftWidth); + return; + } + if (this.rightShowing && x < -this.offCanvasRightWidth) { + this.setTranslateX(-this.offCanvasRightWidth); + return; + } + this.setTranslateX(x); + if (x >= 0) { + this.leftShowing = true; + this.rightShowing = false; + if (x > 0) { + if (this.offCanvasLeft) { + $.each(this.offCanvasLefts, function(index, offCanvas) { + if (offCanvas === this.offCanvasLeft) { + this.offCanvasLeft.style.zIndex = 0; + } else { + offCanvas.style.zIndex = -1; + } + }.bind(this)); + } + if (this.offCanvasRight) { + this.offCanvasRight.style.zIndex = -1; + } + } + } else { + this.rightShowing = true; + this.leftShowing = false; + if (this.offCanvasRight) { + $.each(this.offCanvasRights, function(index, offCanvas) { + if (offCanvas === this.offCanvasRight) { + offCanvas.style.zIndex = 0; + } else { + offCanvas.style.zIndex = -1; + } + }.bind(this)); + } + if (this.offCanvasLeft) { + this.offCanvasLeft.style.zIndex = -1; + } + } + } else { + if (this.offCanvas.classList.contains(CLASS_OFF_CANVAS_RIGHT)) { + if (x < 0) { + this.setTranslateX(0); + return; + } + if (x > this.offCanvasRightWidth) { + this.setTranslateX(this.offCanvasRightWidth); + return; + } + } else { + if (x > 0) { + this.setTranslateX(0); + return; + } + if (x < -this.offCanvasLeftWidth) { + this.setTranslateX(-this.offCanvasLeftWidth); + return; + } + } + this.setTranslateX(x); + } + this.lastTranslateX = x; + } + }, + setTranslateX: $.animationFrame(function(x) { + if (this.scroller) { + if (this.scalable && this.offCanvas.parentNode === this.wrapper) { + var percent = Math.abs(x) / this.offCanvasWidth; + var zoomOutScale = 1 - (1 - this.options.scale) * percent; + var zoomInScale = this.options.scale + (1 - this.options.scale) * percent; + var zoomOutOpacity = 1 - (1 - this.options.opacity) * percent; + var zoomInOpacity = this.options.opacity + (1 - this.options.opacity) * percent; + if (this.offCanvas.classList.contains(CLASS_OFF_CANVAS_LEFT)) { + this.offCanvas.style.webkitTransformOrigin = '-100%'; + this.scroller.style.webkitTransformOrigin = 'left'; + } else { + this.offCanvas.style.webkitTransformOrigin = '200%'; + this.scroller.style.webkitTransformOrigin = 'right'; + } + this.offCanvas.style.opacity = zoomInOpacity; + this.offCanvas.style.webkitTransform = 'translate3d(0,0,0) scale(' + zoomInScale + ')'; + this.scroller.style.webkitTransform = 'translate3d(' + x + 'px,0,0) scale(' + zoomOutScale + ')'; + } else { + if (this.slideIn) { + this.offCanvas.style.webkitTransform = 'translate3d(' + x + 'px,0,0)'; + } else { + this.scroller.style.webkitTransform = 'translate3d(' + x + 'px,0,0)'; + } + } + } + }), + getTranslateX: function() { + if (this.offCanvas) { + var scroller = this.slideIn ? this.offCanvas : this.scroller; + var result = $.parseTranslateMatrix($.getStyles(scroller, 'webkitTransform')); + return (result && result.x) || 0; + } + return 0; + }, + isShown: function(direction) { + var shown = false; + if (!this.slideIn) { + var x = this.getTranslateX(); + if (direction === 'right') { + shown = this.classList.contains(CLASS_ACTIVE) && x < 0; + } else if (direction === 'left') { + shown = this.classList.contains(CLASS_ACTIVE) && x > 0; + } else { + shown = this.classList.contains(CLASS_ACTIVE) && x !== 0; + } + } else { + if (direction === 'left') { + shown = this.classList.contains(CLASS_ACTIVE) && this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_LEFT + '.' + CLASS_ACTIVE); + } else if (direction === 'right') { + shown = this.classList.contains(CLASS_ACTIVE) && this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_RIGHT + '.' + CLASS_ACTIVE); + } else { + shown = this.classList.contains(CLASS_ACTIVE) && (this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_LEFT + '.' + CLASS_ACTIVE) || this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_RIGHT + '.' + CLASS_ACTIVE)); + } + } + return shown; + }, + close: function() { + this._initOffCanvasVisible(); + this.offCanvas = this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_RIGHT + '.' + CLASS_ACTIVE) || this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_LEFT + '.' + CLASS_ACTIVE); + this.offCanvasWidth = this.offCanvas.offsetWidth; + if (this.scroller) { + this.offCanvas.offsetHeight; + this.offCanvas.classList.add(CLASS_TRANSITIONING); + this.scroller.classList.add(CLASS_TRANSITIONING); + this.openPercentage(0); + } + }, + show: function(direction) { + this._initOffCanvasVisible(); + if (this.isShown(direction)) { + return false; + } + if (!direction) { + direction = this.wrapper.querySelector('.' + CLASS_OFF_CANVAS_RIGHT) ? 'right' : 'left'; + } + if (direction === 'right') { + this.offCanvas = this.offCanvasRight; + this.offCanvasWidth = this.offCanvasRightWidth; + } else { + this.offCanvas = this.offCanvasLeft; + this.offCanvasWidth = this.offCanvasLeftWidth; + } + if (this.scroller) { + this.offCanvas.offsetHeight; + this.offCanvas.classList.add(CLASS_TRANSITIONING); + this.scroller.classList.add(CLASS_TRANSITIONING); + this.openPercentage(direction === 'left' ? 100 : -100); + } + return true; + }, + toggle: function(directionOrOffCanvas) { + var direction = directionOrOffCanvas; + if (directionOrOffCanvas && directionOrOffCanvas.classList) { + direction = directionOrOffCanvas.classList.contains(CLASS_OFF_CANVAS_LEFT) ? 'left' : 'right'; + this.refresh(directionOrOffCanvas); + } + if (!this.show(direction)) { + this.close(); + } + } + }); + + //hash to offcanvas + var findOffCanvasContainer = function(target) { + parentNode = target.parentNode; + if (parentNode) { + if (parentNode.classList.contains(CLASS_OFF_CANVAS_WRAP)) { + return parentNode; + } else { + parentNode = parentNode.parentNode; + if (parentNode.classList.contains(CLASS_OFF_CANVAS_WRAP)) { + return parentNode; + } + } + } + }; + var handle = function(event, target) { + if (target.tagName === 'A' && target.hash) { + var offcanvas = document.getElementById(target.hash.replace('#', '')); + if (offcanvas) { + var container = findOffCanvasContainer(offcanvas); + if (container) { + $.targets._container = container; + return offcanvas; + } + } + } + return false; + }; + + $.registerTarget({ + name: name, + index: 60, + handle: handle, + target: false, + isReset: false, + isContinue: true + }); + + window.addEventListener('tap', function(e) { + if (!$.targets.offcanvas) { + return; + } + //TODO 此处类型的代码后续考虑统一优化(target机制),现在的实现费力不讨好 + var target = e.target; + for (; target && target !== document; target = target.parentNode) { + if (target.tagName === 'A' && target.hash && target.hash === ('#' + $.targets.offcanvas.id)) { + e.detail && e.detail.gesture && e.detail.gesture.preventDefault(); //fixed hashchange + $($.targets._container).offCanvas().toggle($.targets.offcanvas); + $.targets.offcanvas = $.targets._container = null; + break; + } + } + }); + + $.fn.offCanvas = function(options) { + var offCanvasApis = []; + this.each(function() { + var offCanvasApi = null; + var self = this; + //hack old version + if (!self.classList.contains(CLASS_OFF_CANVAS_WRAP)) { + self = findOffCanvasContainer(self); + } + var id = self.getAttribute('data-offCanvas'); + if (!id) { + id = ++$.uuid; + $.data[id] = offCanvasApi = new OffCanvas(self, options); + self.setAttribute('data-offCanvas', id); + } else { + offCanvasApi = $.data[id]; + } + if (options === 'show' || options === 'close' || options === 'toggle') { + offCanvasApi.toggle(); + } + offCanvasApis.push(offCanvasApi); + }); + return offCanvasApis.length === 1 ? offCanvasApis[0] : offCanvasApis; + }; + $.ready(function() { + $('.mui-off-canvas-wrap').offCanvas(); + }); +})(mui, window, document, 'offcanvas'); +/** + * actions + * @param {type} $ + * @param {type} name + * @returns {undefined} + */ +(function($, name) { + var CLASS_ACTION = 'mui-action'; + + var handle = function(event, target) { + var className = target.className || ''; + if (typeof className !== 'string') { //svg className(SVGAnimatedString) + className = ''; + } + if (className && ~className.indexOf(CLASS_ACTION)) { + if (target.classList.contains('mui-action-back')) { + event.preventDefault(); + } + return target; + } + return false; + }; + + $.registerTarget({ + name: name, + index: 50, + handle: handle, + target: false, + isContinue: true + }); + +})(mui, 'action'); +/** + * Modals + * @param {type} $ + * @param {type} window + * @param {type} document + * @param {type} name + * @returns {undefined} + */ +(function($, window, document, name) { + var CLASS_MODAL = 'mui-modal'; + + var handle = function(event, target) { + if (target.tagName === 'A' && target.hash) { + var modal = document.getElementById(target.hash.replace('#', '')); + if (modal && modal.classList.contains(CLASS_MODAL)) { + return modal; + } + } + return false; + }; + + $.registerTarget({ + name: name, + index: 50, + handle: handle, + target: false, + isReset: false, + isContinue: true + }); + + window.addEventListener('tap', function(event) { + if ($.targets.modal) { + event.detail.gesture.preventDefault(); //fixed hashchange + $.targets.modal.classList.toggle('mui-active'); + } + }); +})(mui, window, document, 'modal'); +/** + * Popovers + * @param {type} $ + * @param {type} window + * @param {type} document + * @param {type} name + * @param {type} undefined + * @returns {undefined} + */ +(function($, window, document, name) { + + var CLASS_POPOVER = 'mui-popover'; + var CLASS_POPOVER_ARROW = 'mui-popover-arrow'; + var CLASS_ACTION_POPOVER = 'mui-popover-action'; + var CLASS_BACKDROP = 'mui-backdrop'; + var CLASS_BAR_POPOVER = 'mui-bar-popover'; + var CLASS_BAR_BACKDROP = 'mui-bar-backdrop'; + var CLASS_ACTION_BACKDROP = 'mui-backdrop-action'; + var CLASS_ACTIVE = 'mui-active'; + var CLASS_BOTTOM = 'mui-bottom'; + + + + var handle = function(event, target) { + if (target.tagName === 'A' && target.hash) { + $.targets._popover = document.getElementById(target.hash.replace('#', '')); + if ($.targets._popover && $.targets._popover.classList.contains(CLASS_POPOVER)) { + return target; + } else { + $.targets._popover = null; + } + } + return false; + }; + + $.registerTarget({ + name: name, + index: 60, + handle: handle, + target: false, + isReset: false, + isContinue: true + }); + + var onPopoverShown = function(e) { + this.removeEventListener('webkitTransitionEnd', onPopoverShown); + this.addEventListener($.EVENT_MOVE, $.preventDefault); + $.trigger(this, 'shown', this); + } + var onPopoverHidden = function(e) { + setStyle(this, 'none'); + this.removeEventListener('webkitTransitionEnd', onPopoverHidden); + this.removeEventListener($.EVENT_MOVE, $.preventDefault); + $.trigger(this, 'hidden', this); + }; + + var backdrop = (function() { + var element = document.createElement('div'); + element.classList.add(CLASS_BACKDROP); + element.addEventListener($.EVENT_MOVE, $.preventDefault); + element.addEventListener('tap', function(e) { + var popover = $.targets._popover; + if (popover) { + popover.addEventListener('webkitTransitionEnd', onPopoverHidden); + popover.classList.remove(CLASS_ACTIVE); + removeBackdrop(popover); + } + }); + + return element; + }()); + var removeBackdropTimer; + var removeBackdrop = function(popover) { + backdrop.setAttribute('style', 'opacity:0'); + $.targets.popover = $.targets._popover = null; //reset + removeBackdropTimer = $.later(function() { + if (!popover.classList.contains(CLASS_ACTIVE) && backdrop.parentNode && backdrop.parentNode === document.body) { + document.body.removeChild(backdrop); + } + }, 350); + }; + window.addEventListener('tap', function(e) { + if (!$.targets.popover) { + return; + } + var toggle = false; + var target = e.target; + for (; target && target !== document; target = target.parentNode) { + if (target === $.targets.popover) { + toggle = true; + } + } + if (toggle) { + e.detail.gesture.preventDefault(); //fixed hashchange + togglePopover($.targets._popover, $.targets.popover); + } + + }); + + var togglePopover = function(popover, anchor, state) { + if ((state === 'show' && popover.classList.contains(CLASS_ACTIVE)) || (state === 'hide' && !popover.classList.contains(CLASS_ACTIVE))) { + return; + } + removeBackdropTimer && removeBackdropTimer.cancel(); //取消remove的timer + //remove一遍,以免来回快速切换,导致webkitTransitionEnd不触发,无法remove + popover.removeEventListener('webkitTransitionEnd', onPopoverShown); + popover.removeEventListener('webkitTransitionEnd', onPopoverHidden); + backdrop.classList.remove(CLASS_BAR_BACKDROP); + backdrop.classList.remove(CLASS_ACTION_BACKDROP); + var _popover = document.querySelector('.mui-popover.mui-active'); + if (_popover) { + // _popover.setAttribute('style', ''); + _popover.addEventListener('webkitTransitionEnd', onPopoverHidden); + _popover.classList.remove(CLASS_ACTIVE); + // _popover.removeEventListener('webkitTransitionEnd', onPopoverHidden); + //同一个弹出则直接返回,解决同一个popover的toggle + if (popover === _popover) { + removeBackdrop(_popover); + return; + } + } + var isActionSheet = false; + if (popover.classList.contains(CLASS_BAR_POPOVER) || popover.classList.contains(CLASS_ACTION_POPOVER)) { //navBar + if (popover.classList.contains(CLASS_ACTION_POPOVER)) { //action sheet popover + isActionSheet = true; + backdrop.classList.add(CLASS_ACTION_BACKDROP); + } else { //bar popover + backdrop.classList.add(CLASS_BAR_BACKDROP); + // if (anchor) { + // if (anchor.parentNode) { + // var offsetWidth = anchor.offsetWidth; + // var offsetLeft = anchor.offsetLeft; + // var innerWidth = window.innerWidth; + // popover.style.left = (Math.min(Math.max(offsetLeft, defaultPadding), innerWidth - offsetWidth - defaultPadding)) + "px"; + // } else { + // //TODO anchor is position:{left,top,bottom,right} + // } + // } + } + } + setStyle(popover, 'block'); //actionsheet transform + popover.offsetHeight; + popover.classList.add(CLASS_ACTIVE); + backdrop.setAttribute('style', ''); + document.body.appendChild(backdrop); + calPosition(popover, anchor, isActionSheet); //position + backdrop.classList.add(CLASS_ACTIVE); + popover.addEventListener('webkitTransitionEnd', onPopoverShown); + }; + var setStyle = function(popover, display, top, left) { + var style = popover.style; + if (typeof display !== 'undefined') + style.display = display; + if (typeof top !== 'undefined') + style.top = top + 'px'; + if (typeof left !== 'undefined') + style.left = left + 'px'; + }; + var calPosition = function(popover, anchor, isActionSheet) { + if (!popover || !anchor) { + return; + } + + if (isActionSheet) { //actionsheet + setStyle(popover, 'block') + return; + } + + var wWidth = window.innerWidth; + var wHeight = window.innerHeight; + + var pWidth = popover.offsetWidth; + var pHeight = popover.offsetHeight; + + var aWidth = anchor.offsetWidth; + var aHeight = anchor.offsetHeight; + var offset = $.offset(anchor); + + var arrow = popover.querySelector('.' + CLASS_POPOVER_ARROW); + if (!arrow) { + arrow = document.createElement('div'); + arrow.className = CLASS_POPOVER_ARROW; + popover.appendChild(arrow); + } + var arrowSize = arrow && arrow.offsetWidth / 2 || 0; + + + + var pTop = 0; + var pLeft = 0; + var diff = 0; + var arrowLeft = 0; + var defaultPadding = popover.classList.contains(CLASS_ACTION_POPOVER) ? 0 : 5; + + var position = 'top'; + if ((pHeight + arrowSize) < (offset.top - window.pageYOffset)) { //top + pTop = offset.top - pHeight - arrowSize; + } else if ((pHeight + arrowSize) < (wHeight - (offset.top - window.pageYOffset) - aHeight)) { //bottom + position = 'bottom'; + pTop = offset.top + aHeight + arrowSize; + } else { //middle + position = 'middle'; + pTop = Math.max((wHeight - pHeight) / 2 + window.pageYOffset, 0); + pLeft = Math.max((wWidth - pWidth) / 2 + window.pageXOffset, 0); + } + if (position === 'top' || position === 'bottom') { + pLeft = aWidth / 2 + offset.left - pWidth / 2; + diff = pLeft; + if (pLeft < defaultPadding) pLeft = defaultPadding; + if (pLeft + pWidth > wWidth) pLeft = wWidth - pWidth - defaultPadding; + + if (arrow) { + if (position === 'top') { + arrow.classList.add(CLASS_BOTTOM); + } else { + arrow.classList.remove(CLASS_BOTTOM); + } + diff = diff - pLeft; + arrowLeft = (pWidth / 2 - arrowSize / 2 + diff); + arrowLeft = Math.max(Math.min(arrowLeft, pWidth - arrowSize * 2 - 6), 6); + arrow.setAttribute('style', 'left:' + arrowLeft + 'px'); + } + } else if (position === 'middle') { + arrow.setAttribute('style', 'display:none'); + } + setStyle(popover, 'block', pTop, pLeft); + }; + + $.createMask = function(callback) { + var element = document.createElement('div'); + element.classList.add(CLASS_BACKDROP); + element.addEventListener($.EVENT_MOVE, $.preventDefault); + element.addEventListener('tap', function() { + mask.close(); + }); + var mask = [element]; + mask._show = false; + mask.show = function() { + mask._show = true; + element.setAttribute('style', 'opacity:1'); + document.body.appendChild(element); + return mask; + }; + mask._remove = function() { + if (mask._show) { + mask._show = false; + element.setAttribute('style', 'opacity:0'); + $.later(function() { + var body = document.body; + element.parentNode === body && body.removeChild(element); + }, 350); + } + return mask; + }; + mask.close = function() { + if (callback) { + if (callback() !== false) { + mask._remove(); + } + } else { + mask._remove(); + } + }; + return mask; + }; + $.fn.popover = function() { + var args = arguments; + this.each(function() { + $.targets._popover = this; + if (args[0] === 'show' || args[0] === 'hide' || args[0] === 'toggle') { + togglePopover(this, args[1], args[0]); + } + }); + }; + +})(mui, window, document, 'popover'); +/** + * segmented-controllers + * @param {type} $ + * @param {type} window + * @param {type} document + * @param {type} undefined + * @returns {undefined} + */ +(function($, window, document, name, undefined) { + + var CLASS_CONTROL_ITEM = 'mui-control-item'; + var CLASS_SEGMENTED_CONTROL = 'mui-segmented-control'; + var CLASS_SEGMENTED_CONTROL_VERTICAL = 'mui-segmented-control-vertical'; + var CLASS_CONTROL_CONTENT = 'mui-control-content'; + var CLASS_TAB_BAR = 'mui-bar-tab'; + var CLASS_TAB_ITEM = 'mui-tab-item'; + var CLASS_SLIDER_ITEM = 'mui-slider-item'; + + var handle = function(event, target) { + if (target.classList && (target.classList.contains(CLASS_CONTROL_ITEM) || target.classList.contains(CLASS_TAB_ITEM))) { + if (target.parentNode && target.parentNode.classList && target.parentNode.classList.contains(CLASS_SEGMENTED_CONTROL_VERTICAL)) { + //vertical 如果preventDefault会导致无法滚动 + } else { + + event.preventDefault(); + // if(target.tagName == 'A') { + // // fixed 底部选项卡href 无法跳转 && stop hash change + // var curr_href = location.hostname + location.pathname, + // target_href = target.hostname + target.pathname; + + // if (curr_href == target_href && target.hash !== "") { + // event.preventDefault(); + // return target; + // }else{ + // return false + // } + // } + } + // if (target.hash) { + return target; + // } + } + return false; + }; + + $.registerTarget({ + name: name, + index: 80, + handle: handle, + target: false + }); + + window.addEventListener('tap', function(e) { + + var targetTab = $.targets.tab; + if (!targetTab) { + return; + } + var activeTab; + var activeBodies; + var targetBody; + var className = 'mui-active'; + var classSelector = '.' + className; + var segmentedControl = targetTab.parentNode; + + for (; segmentedControl && segmentedControl !== document; segmentedControl = segmentedControl.parentNode) { + if (segmentedControl.classList.contains(CLASS_SEGMENTED_CONTROL)) { + activeTab = segmentedControl.querySelector(classSelector + '.' + CLASS_CONTROL_ITEM); + break; + } else if (segmentedControl.classList.contains(CLASS_TAB_BAR)) { + activeTab = segmentedControl.querySelector(classSelector + '.' + CLASS_TAB_ITEM); + } + } + + if (activeTab) { + activeTab.classList.remove(className); + } + + var isLastActive = targetTab === activeTab; + if (targetTab) { + targetTab.classList.add(className); + } + + if (!targetTab.hash) { + return; + } + targetBody = document.getElementById(targetTab.hash.replace('#', '')); + + if (!targetBody) { + return; + } + if (!targetBody.classList.contains(CLASS_CONTROL_CONTENT)) { //tab bar popover + targetTab.classList[isLastActive ? 'remove' : 'add'](className); + return; + } + if (isLastActive) { //same + return; + } + var parentNode = targetBody.parentNode; + activeBodies = parentNode.querySelectorAll('.' + CLASS_CONTROL_CONTENT + classSelector); + for (var i = 0; i < activeBodies.length; i++) { + var activeBody = activeBodies[i]; + activeBody.parentNode === parentNode && activeBody.classList.remove(className); + } + + targetBody.classList.add(className); + + var contents = []; + var _contents = parentNode.querySelectorAll('.' + CLASS_CONTROL_CONTENT); + for (var i = 0; i < _contents.length; i++) { //查找直属子节点 + _contents[i].parentNode === parentNode && (contents.push(_contents[i])); + } + $.trigger(targetBody, $.eventName('shown', name), { + tabNumber: Array.prototype.indexOf.call(contents, targetBody) + }); + e.detail && e.detail.gesture.preventDefault(); //fixed hashchange + }); + +})(mui, window, document, 'tab'); +/** + * Toggles switch + * @param {type} $ + * @param {type} window + * @param {type} name + * @returns {undefined} + */ +(function($, window, name) { + + var CLASS_SWITCH = 'mui-switch'; + var CLASS_SWITCH_HANDLE = 'mui-switch-handle'; + var CLASS_ACTIVE = 'mui-active'; + var CLASS_DRAGGING = 'mui-dragging'; + + var CLASS_DISABLED = 'mui-disabled'; + + var SELECTOR_SWITCH_HANDLE = '.' + CLASS_SWITCH_HANDLE; + + var handle = function(event, target) { + if (target.classList && target.classList.contains(CLASS_SWITCH)) { + return target; + } + return false; + }; + + $.registerTarget({ + name: name, + index: 100, + handle: handle, + target: false + }); + + + var Toggle = function(element) { + this.element = element; + this.classList = this.element.classList; + this.handle = this.element.querySelector(SELECTOR_SWITCH_HANDLE); + this.init(); + this.initEvent(); + }; + Toggle.prototype.init = function() { + this.toggleWidth = this.element.offsetWidth; + this.handleWidth = this.handle.offsetWidth; + this.handleX = this.toggleWidth - this.handleWidth - 3; + }; + Toggle.prototype.initEvent = function() { + this.element.addEventListener($.EVENT_START, this); + this.element.addEventListener('drag', this); + this.element.addEventListener('swiperight', this); + this.element.addEventListener($.EVENT_END, this); + this.element.addEventListener($.EVENT_CANCEL, this); + + }; + Toggle.prototype.handleEvent = function(e) { + if (this.classList.contains(CLASS_DISABLED)) { + return; + } + switch (e.type) { + case $.EVENT_START: + this.start(e); + break; + case 'drag': + this.drag(e); + break; + case 'swiperight': + this.swiperight(); + break; + case $.EVENT_END: + case $.EVENT_CANCEL: + this.end(e); + break; + } + }; + Toggle.prototype.start = function(e) { + this.handle.style.webkitTransitionDuration = this.element.style.webkitTransitionDuration = '.2s'; + this.classList.add(CLASS_DRAGGING); + if (this.toggleWidth === 0 || this.handleWidth === 0) { //当switch处于隐藏状态时,width为0,需要重新初始化 + this.init(); + } + }; + Toggle.prototype.drag = function(e) { + var detail = e.detail; + if (!this.isDragging) { + if (detail.direction === 'left' || detail.direction === 'right') { + this.isDragging = true; + this.lastChanged = undefined; + this.initialState = this.classList.contains(CLASS_ACTIVE); + } + } + if (this.isDragging) { + this.setTranslateX(detail.deltaX); + e.stopPropagation(); + detail.gesture.preventDefault(); + } + }; + Toggle.prototype.swiperight = function(e) { + if (this.isDragging) { + e.stopPropagation(); + } + }; + Toggle.prototype.end = function(e) { + this.classList.remove(CLASS_DRAGGING); + if (this.isDragging) { + this.isDragging = false; + e.stopPropagation(); + $.trigger(this.element, 'toggle', { + isActive: this.classList.contains(CLASS_ACTIVE) + }); + } else { + this.toggle(); + } + }; + Toggle.prototype.toggle = function(animate) { + var classList = this.classList; + if (animate === false) { + this.handle.style.webkitTransitionDuration = this.element.style.webkitTransitionDuration = '0s'; + } else { + this.handle.style.webkitTransitionDuration = this.element.style.webkitTransitionDuration = '.2s'; + } + if (classList.contains(CLASS_ACTIVE)) { + classList.remove(CLASS_ACTIVE); + this.handle.style.webkitTransform = 'translate(0,0)'; + } else { + classList.add(CLASS_ACTIVE); + this.handle.style.webkitTransform = 'translate(' + this.handleX + 'px,0)'; + } + $.trigger(this.element, 'toggle', { + isActive: this.classList.contains(CLASS_ACTIVE) + }); + }; + Toggle.prototype.setTranslateX = $.animationFrame(function(x) { + if (!this.isDragging) { + return; + } + var isChanged = false; + if ((this.initialState && -x > (this.handleX / 2)) || (!this.initialState && x > (this.handleX / 2))) { + isChanged = true; + } + if (this.lastChanged !== isChanged) { + if (isChanged) { + this.handle.style.webkitTransform = 'translate(' + (this.initialState ? 0 : this.handleX) + 'px,0)'; + this.classList[this.initialState ? 'remove' : 'add'](CLASS_ACTIVE); + } else { + this.handle.style.webkitTransform = 'translate(' + (this.initialState ? this.handleX : 0) + 'px,0)'; + this.classList[this.initialState ? 'add' : 'remove'](CLASS_ACTIVE); + } + this.lastChanged = isChanged; + } + + }); + + $.fn['switch'] = function(options) { + var switchApis = []; + this.each(function() { + var switchApi = null; + var id = this.getAttribute('data-switch'); + if (!id) { + id = ++$.uuid; + $.data[id] = new Toggle(this); + this.setAttribute('data-switch', id); + } else { + switchApi = $.data[id]; + } + switchApis.push(switchApi); + }); + return switchApis.length > 1 ? switchApis : switchApis[0]; + }; + $.ready(function() { + $('.' + CLASS_SWITCH)['switch'](); + }); +})(mui, window, 'toggle'); +/** + * Tableviews + * @param {type} $ + * @param {type} window + * @param {type} document + * @returns {undefined} + */ +(function($, window, document) { + + var CLASS_ACTIVE = 'mui-active'; + var CLASS_SELECTED = 'mui-selected'; + var CLASS_GRID_VIEW = 'mui-grid-view'; + var CLASS_RADIO_VIEW = 'mui-table-view-radio'; + var CLASS_TABLE_VIEW_CELL = 'mui-table-view-cell'; + var CLASS_COLLAPSE_CONTENT = 'mui-collapse-content'; + var CLASS_DISABLED = 'mui-disabled'; + var CLASS_TOGGLE = 'mui-switch'; + var CLASS_BTN = 'mui-btn'; + + var CLASS_SLIDER_HANDLE = 'mui-slider-handle'; + var CLASS_SLIDER_LEFT = 'mui-slider-left'; + var CLASS_SLIDER_RIGHT = 'mui-slider-right'; + var CLASS_TRANSITIONING = 'mui-transitioning'; + + + var SELECTOR_SLIDER_HANDLE = '.' + CLASS_SLIDER_HANDLE; + var SELECTOR_SLIDER_LEFT = '.' + CLASS_SLIDER_LEFT; + var SELECTOR_SLIDER_RIGHT = '.' + CLASS_SLIDER_RIGHT; + var SELECTOR_SELECTED = '.' + CLASS_SELECTED; + var SELECTOR_BUTTON = '.' + CLASS_BTN; + var overFactor = 0.8; + var cell, a; + + var isMoved = isOpened = openedActions = progress = false; + var sliderHandle = sliderActionLeft = sliderActionRight = buttonsLeft = buttonsRight = sliderDirection = sliderRequestAnimationFrame = false; + var timer = translateX = lastTranslateX = sliderActionLeftWidth = sliderActionRightWidth = 0; + + + + var toggleActive = function(isActive) { + if (isActive) { + if (a) { + a.classList.add(CLASS_ACTIVE); + } else if (cell) { + cell.classList.add(CLASS_ACTIVE); + } + } else { + timer && timer.cancel(); + if (a) { + a.classList.remove(CLASS_ACTIVE); + } else if (cell) { + cell.classList.remove(CLASS_ACTIVE); + } + } + }; + + var updateTranslate = function() { + if (translateX !== lastTranslateX) { + if (buttonsRight && buttonsRight.length > 0) { + progress = translateX / sliderActionRightWidth; + if (translateX < -sliderActionRightWidth) { + translateX = -sliderActionRightWidth - Math.pow(-translateX - sliderActionRightWidth, overFactor); + } + for (var i = 0, len = buttonsRight.length; i < len; i++) { + var buttonRight = buttonsRight[i]; + if (typeof buttonRight._buttonOffset === 'undefined') { + buttonRight._buttonOffset = buttonRight.offsetLeft; + } + buttonOffset = buttonRight._buttonOffset; + setTranslate(buttonRight, (translateX - buttonOffset * (1 + Math.max(progress, -1)))); + } + } + if (buttonsLeft && buttonsLeft.length > 0) { + progress = translateX / sliderActionLeftWidth; + if (translateX > sliderActionLeftWidth) { + translateX = sliderActionLeftWidth + Math.pow(translateX - sliderActionLeftWidth, overFactor); + } + for (var i = 0, len = buttonsLeft.length; i < len; i++) { + var buttonLeft = buttonsLeft[i]; + if (typeof buttonLeft._buttonOffset === 'undefined') { + buttonLeft._buttonOffset = sliderActionLeftWidth - buttonLeft.offsetLeft - buttonLeft.offsetWidth; + } + buttonOffset = buttonLeft._buttonOffset; + if (buttonsLeft.length > 1) { + buttonLeft.style.zIndex = buttonsLeft.length - i; + } + setTranslate(buttonLeft, (translateX + buttonOffset * (1 - Math.min(progress, 1)))); + } + } + setTranslate(sliderHandle, translateX); + lastTranslateX = translateX; + } + sliderRequestAnimationFrame = requestAnimationFrame(function() { + updateTranslate(); + }); + }; + var setTranslate = function(element, x) { + if (element) { + element.style.webkitTransform = 'translate(' + x + 'px,0)'; + } + }; + + window.addEventListener($.EVENT_START, function(event) { + if (cell) { + toggleActive(false); + } + cell = a = false; + isMoved = isOpened = openedActions = false; + var target = event.target; + var isDisabled = false; + for (; target && target !== document; target = target.parentNode) { + if (target.classList) { + var classList = target.classList; + if ((target.tagName === 'INPUT' && target.type !== 'radio' && target.type !== 'checkbox') || target.tagName === 'BUTTON' || classList.contains(CLASS_TOGGLE) || classList.contains(CLASS_BTN) || classList.contains(CLASS_DISABLED)) { + isDisabled = true; + } + if (classList.contains(CLASS_COLLAPSE_CONTENT)) { //collapse content + break; + } + if (classList.contains(CLASS_TABLE_VIEW_CELL)) { + cell = target; + //TODO swipe to delete close + var selected = cell.parentNode.querySelector(SELECTOR_SELECTED); + if (!cell.parentNode.classList.contains(CLASS_RADIO_VIEW) && selected && selected !== cell) { + $.swipeoutClose(selected); + cell = isDisabled = false; + return; + } + if (!cell.parentNode.classList.contains(CLASS_GRID_VIEW)) { + var link = cell.querySelector('a'); + if (link && link.parentNode === cell) { //li>a + a = link; + } + } + var handle = cell.querySelector(SELECTOR_SLIDER_HANDLE); + if (handle) { + toggleEvents(cell); + event.stopPropagation(); + } + if (!isDisabled) { + if (handle) { + if (timer) { + timer.cancel(); + } + timer = $.later(function() { + toggleActive(true); + }, 100); + } else { + toggleActive(true); + } + } + break; + } + } + } + }); + window.addEventListener($.EVENT_MOVE, function(event) { + toggleActive(false); + }); + + var handleEvent = { + handleEvent: function(event) { + switch (event.type) { + case 'drag': + this.drag(event); + break; + case 'dragend': + this.dragend(event); + break; + case 'flick': + this.flick(event); + break; + case 'swiperight': + this.swiperight(event); + break; + case 'swipeleft': + this.swipeleft(event); + break; + } + }, + drag: function(event) { + if (!cell) { + return; + } + if (!isMoved) { //init + sliderHandle = sliderActionLeft = sliderActionRight = buttonsLeft = buttonsRight = sliderDirection = sliderRequestAnimationFrame = false; + sliderHandle = cell.querySelector(SELECTOR_SLIDER_HANDLE); + if (sliderHandle) { + sliderActionLeft = cell.querySelector(SELECTOR_SLIDER_LEFT); + sliderActionRight = cell.querySelector(SELECTOR_SLIDER_RIGHT); + if (sliderActionLeft) { + sliderActionLeftWidth = sliderActionLeft.offsetWidth; + buttonsLeft = sliderActionLeft.querySelectorAll(SELECTOR_BUTTON); + } + if (sliderActionRight) { + sliderActionRightWidth = sliderActionRight.offsetWidth; + buttonsRight = sliderActionRight.querySelectorAll(SELECTOR_BUTTON); + } + cell.classList.remove(CLASS_TRANSITIONING); + isOpened = cell.classList.contains(CLASS_SELECTED); + if (isOpened) { + openedActions = cell.querySelector(SELECTOR_SLIDER_LEFT + SELECTOR_SELECTED) ? 'left' : 'right'; + } + } + } + var detail = event.detail; + var direction = detail.direction; + var angle = detail.angle; + if (direction === 'left' && (angle > 150 || angle < -150)) { + if (buttonsRight || (buttonsLeft && isOpened)) { //存在右侧按钮或存在左侧按钮且是已打开状态 + isMoved = true; + } + } else if (direction === 'right' && (angle > -30 && angle < 30)) { + if (buttonsLeft || (buttonsRight && isOpened)) { //存在左侧按钮或存在右侧按钮且是已打开状态 + isMoved = true; + } + } + if (isMoved) { + event.stopPropagation(); + event.detail.gesture.preventDefault(); + var translate = event.detail.deltaX; + if (isOpened) { + if (openedActions === 'right') { + translate = translate - sliderActionRightWidth; + } else { + translate = translate + sliderActionLeftWidth; + } + } + if ((translate > 0 && !buttonsLeft) || (translate < 0 && !buttonsRight)) { + if (!isOpened) { + return; + } + translate = 0; + } + if (translate < 0) { + sliderDirection = 'toLeft'; + } else if (translate > 0) { + sliderDirection = 'toRight'; + } else { + if (!sliderDirection) { + sliderDirection = 'toLeft'; + } + } + if (!sliderRequestAnimationFrame) { + updateTranslate(); + } + translateX = translate; + } + }, + flick: function(event) { + if (isMoved) { + event.stopPropagation(); + } + }, + swipeleft: function(event) { + if (isMoved) { + event.stopPropagation(); + } + }, + swiperight: function(event) { + if (isMoved) { + event.stopPropagation(); + } + }, + dragend: function(event) { + if (!isMoved) { + return; + } + event.stopPropagation(); + if (sliderRequestAnimationFrame) { + cancelAnimationFrame(sliderRequestAnimationFrame); + sliderRequestAnimationFrame = null; + } + var detail = event.detail; + isMoved = false; + var action = 'close'; + var actionsWidth = sliderDirection === 'toLeft' ? sliderActionRightWidth : sliderActionLeftWidth; + var isToggle = detail.swipe || (Math.abs(translateX) > actionsWidth / 2); + if (isToggle) { + if (!isOpened) { + action = 'open'; + } else if (detail.direction === 'left' && openedActions === 'right') { + action = 'open'; + } else if (detail.direction === 'right' && openedActions === 'left') { + action = 'open'; + } + + } + cell.classList.add(CLASS_TRANSITIONING); + var buttons; + if (action === 'open') { + var newTranslate = sliderDirection === 'toLeft' ? -actionsWidth : actionsWidth; + setTranslate(sliderHandle, newTranslate); + buttons = sliderDirection === 'toLeft' ? buttonsRight : buttonsLeft; + if (typeof buttons !== 'undefined') { + var button = null; + for (var i = 0; i < buttons.length; i++) { + button = buttons[i]; + setTranslate(button, newTranslate); + } + button.parentNode.classList.add(CLASS_SELECTED); + cell.classList.add(CLASS_SELECTED); + if (!isOpened) { + $.trigger(cell, sliderDirection === 'toLeft' ? 'slideleft' : 'slideright'); + } + } + } else { + setTranslate(sliderHandle, 0); + sliderActionLeft && sliderActionLeft.classList.remove(CLASS_SELECTED); + sliderActionRight && sliderActionRight.classList.remove(CLASS_SELECTED); + cell.classList.remove(CLASS_SELECTED); + } + var buttonOffset; + if (buttonsLeft && buttonsLeft.length > 0 && buttonsLeft !== buttons) { + for (var i = 0, len = buttonsLeft.length; i < len; i++) { + var buttonLeft = buttonsLeft[i]; + buttonOffset = buttonLeft._buttonOffset; + if (typeof buttonOffset === 'undefined') { + buttonLeft._buttonOffset = sliderActionLeftWidth - buttonLeft.offsetLeft - buttonLeft.offsetWidth; + } + setTranslate(buttonLeft, buttonOffset); + } + } + if (buttonsRight && buttonsRight.length > 0 && buttonsRight !== buttons) { + for (var i = 0, len = buttonsRight.length; i < len; i++) { + var buttonRight = buttonsRight[i]; + buttonOffset = buttonRight._buttonOffset; + if (typeof buttonOffset === 'undefined') { + buttonRight._buttonOffset = buttonRight.offsetLeft; + } + setTranslate(buttonRight, -buttonOffset); + } + } + } + }; + + function toggleEvents(element, isRemove) { + var method = !!isRemove ? 'removeEventListener' : 'addEventListener'; + element[method]('drag', handleEvent); + element[method]('dragend', handleEvent); + element[method]('swiperight', handleEvent); + element[method]('swipeleft', handleEvent); + element[method]('flick', handleEvent); + }; + /** + * 打开滑动菜单 + * @param {Object} el + * @param {Object} direction + */ + $.swipeoutOpen = function(el, direction) { + if (!el) return; + var classList = el.classList; + if (classList.contains(CLASS_SELECTED)) return; + if (!direction) { + if (el.querySelector(SELECTOR_SLIDER_RIGHT)) { + direction = 'right'; + } else { + direction = 'left'; + } + } + var swipeoutAction = el.querySelector($.classSelector(".slider-" + direction)); + if (!swipeoutAction) return; + swipeoutAction.classList.add(CLASS_SELECTED); + classList.add(CLASS_SELECTED); + classList.remove(CLASS_TRANSITIONING); + var buttons = swipeoutAction.querySelectorAll(SELECTOR_BUTTON); + var swipeoutWidth = swipeoutAction.offsetWidth; + var translate = (direction === 'right') ? -swipeoutWidth : swipeoutWidth; + var length = buttons.length; + var button; + for (var i = 0; i < length; i++) { + button = buttons[i]; + if (direction === 'right') { + setTranslate(button, -button.offsetLeft); + } else { + setTranslate(button, (swipeoutWidth - button.offsetWidth - button.offsetLeft)); + } + } + classList.add(CLASS_TRANSITIONING); + for (var i = 0; i < length; i++) { + setTranslate(buttons[i], translate); + } + setTranslate(el.querySelector(SELECTOR_SLIDER_HANDLE), translate); + }; + /** + * 关闭滑动菜单 + * @param {Object} el + */ + $.swipeoutClose = function(el) { + if (!el) return; + var classList = el.classList; + if (!classList.contains(CLASS_SELECTED)) return; + var direction = el.querySelector(SELECTOR_SLIDER_RIGHT + SELECTOR_SELECTED) ? 'right' : 'left'; + var swipeoutAction = el.querySelector($.classSelector(".slider-" + direction)); + if (!swipeoutAction) return; + swipeoutAction.classList.remove(CLASS_SELECTED); + classList.remove(CLASS_SELECTED); + classList.add(CLASS_TRANSITIONING); + var buttons = swipeoutAction.querySelectorAll(SELECTOR_BUTTON); + var swipeoutWidth = swipeoutAction.offsetWidth; + var length = buttons.length; + var button; + setTranslate(el.querySelector(SELECTOR_SLIDER_HANDLE), 0); + for (var i = 0; i < length; i++) { + button = buttons[i]; + if (direction === 'right') { + setTranslate(button, (-button.offsetLeft)); + } else { + setTranslate(button, (swipeoutWidth - button.offsetWidth - button.offsetLeft)); + } + } + }; + + window.addEventListener($.EVENT_END, function(event) { //使用touchend来取消高亮,避免一次点击既不触发tap,doubletap,longtap的事件 + if (!cell) { + return; + } + toggleActive(false); + sliderHandle && toggleEvents(cell, true); + }); + window.addEventListener($.EVENT_CANCEL, function(event) { //使用touchcancel来取消高亮,避免一次点击既不触发tap,doubletap,longtap的事件 + if (!cell) { + return; + } + toggleActive(false); + sliderHandle && toggleEvents(cell, true); + }); + var radioOrCheckboxClick = function(event) { + var type = event.target && event.target.type || ''; + if (type === 'radio' || type === 'checkbox') { + return; + } + var classList = cell.classList; + if (classList.contains('mui-radio')) { + var input = cell.querySelector('input[type=radio]'); + if (input) { + // input.click(); + if (!input.disabled && !input.readOnly) { + input.checked = !input.checked; + $.trigger(input, 'change'); + } + } + } else if (classList.contains('mui-checkbox')) { + var input = cell.querySelector('input[type=checkbox]'); + if (input) { + // input.click(); + if (!input.disabled && !input.readOnly) { + input.checked = !input.checked; + $.trigger(input, 'change'); + } + } + } + }; + //fixed hashchange(android) + window.addEventListener($.EVENT_CLICK, function(e) { + if (cell && cell.classList.contains('mui-collapse')) { + e.preventDefault(); + } + }); + window.addEventListener('doubletap', function(event) { + if (cell) { + radioOrCheckboxClick(event); + } + }); + var preventDefaultException = /^(INPUT|TEXTAREA|BUTTON|SELECT)$/; + window.addEventListener('tap', function(event) { + if (!cell) { + return; + } + var isExpand = false; + var classList = cell.classList; + var ul = cell.parentNode; + if (ul && ul.classList.contains(CLASS_RADIO_VIEW)) { + if (classList.contains(CLASS_SELECTED)) { + return; + } + var selected = ul.querySelector('li' + SELECTOR_SELECTED); + if (selected) { + selected.classList.remove(CLASS_SELECTED); + } + classList.add(CLASS_SELECTED); + $.trigger(cell, 'selected', { + el: cell + }); + return; + } + if (classList.contains('mui-collapse') && !cell.parentNode.classList.contains('mui-unfold')) { + if (!preventDefaultException.test(event.target.tagName)) { + event.detail.gesture.preventDefault(); + } + + if (!classList.contains(CLASS_ACTIVE)) { //展开时,需要收缩其他同类 + var collapse = cell.parentNode.querySelector('.mui-collapse.mui-active'); + if (collapse) { + collapse.classList.remove(CLASS_ACTIVE); + } + isExpand = true; + } + classList.toggle(CLASS_ACTIVE); + if (isExpand) { + //触发展开事件 + $.trigger(cell, 'expand'); + + //scroll + //暂不滚动 + // var offsetTop = $.offset(cell).top; + // var scrollTop = document.body.scrollTop; + // var height = window.innerHeight; + // var offsetHeight = cell.offsetHeight; + // var cellHeight = (offsetTop - scrollTop + offsetHeight); + // if (offsetHeight > height) { + // $.scrollTo(offsetTop, 300); + // } else if (cellHeight > height) { + // $.scrollTo(cellHeight - height + scrollTop, 300); + // } + } + } else { + radioOrCheckboxClick(event); + } + }); +})(mui, window, document); +(function($, window) { + /** + * 警告消息框 + */ + $.alert = function(message, title, btnValue, callback) { + if ($.os.plus) { + if (typeof message === 'undefined') { + return; + } else { + if (typeof title === 'function') { + callback = title; + title = null; + btnValue = '确定'; + } else if (typeof btnValue === 'function') { + callback = btnValue; + btnValue = null; + } + $.plusReady(function() { + plus.nativeUI.alert(message, callback, title, btnValue); + }); + } + + } else { + //TODO H5版本 + window.alert(message); + } + }; + +})(mui, window); +(function($, window) { + /** + * 确认消息框 + */ + $.confirm = function(message, title, btnArray, callback) { + if ($.os.plus) { + if (typeof message === 'undefined') { + return; + } else { + if (typeof title === 'function') { + callback = title; + title = null; + btnArray = null; + } else if (typeof btnArray === 'function') { + callback = btnArray; + btnArray = null; + } + $.plusReady(function() { + plus.nativeUI.confirm(message, callback, title, btnArray); + }); + } + + } else { + //H5版本,0为确认,1为取消 + if (window.confirm(message)) { + callback({ + index: 0 + }); + } else { + callback({ + index: 1 + }); + } + } + }; + +})(mui, window); +(function($, window) { + /** + * 输入对话框 + */ + $.prompt = function(text, defaultText, title, btnArray, callback) { + if ($.os.plus) { + if (typeof message === 'undefined') { + return; + } else { + + if (typeof defaultText === 'function') { + callback = defaultText; + defaultText = null; + title = null; + btnArray = null; + } else if (typeof title === 'function') { + callback = title; + title = null; + btnArray = null; + } else if (typeof btnArray === 'function') { + callback = btnArray; + btnArray = null; + } + $.plusReady(function() { + plus.nativeUI.prompt(text, callback, title, defaultText, btnArray); + }); + } + + } else { + //H5版本(确认index为0,取消index为1) + var result = window.prompt(text); + if (result) { + callback({ + index: 0, + value: result + }); + } else { + callback({ + index: 1, + value: '' + }); + } + } + }; + +})(mui, window); +(function($, window) { + var CLASS_ACTIVE = 'mui-active'; + /** + * 自动消失提示框 + */ + $.toast = function(message,options) { + var durations = { + 'long': 3500, + 'short': 2000 + }; + + //计算显示时间 + options = $.extend({ + duration: 'short' + }, options || {}); + + + if ($.os.plus && options.type !== 'div') { + //默认显示在底部; + $.plusReady(function() { + plus.nativeUI.toast(message, { + verticalAlign: 'bottom', + duration:options.duration + }); + }); + } else { + if (typeof options.duration === 'number') { + duration = options.duration>0 ? options.duration:durations['short']; + } else { + duration = durations[options.duration]; + } + if (!duration) { + duration = durations['short']; + } + var toast = document.createElement('div'); + toast.classList.add('mui-toast-container'); + toast.innerHTML = '
' + message + '
'; + toast.addEventListener('webkitTransitionEnd', function() { + if (!toast.classList.contains(CLASS_ACTIVE)) { + toast.parentNode.removeChild(toast); + toast = null; + } + }); + //点击则自动消失 + toast.addEventListener('click', function() { + toast.parentNode.removeChild(toast); + toast = null; + }); + document.body.appendChild(toast); + toast.offsetHeight; + toast.classList.add(CLASS_ACTIVE); + setTimeout(function() { + toast && toast.classList.remove(CLASS_ACTIVE); + }, duration); + + return { + isVisible: function() {return !!toast;} + } + } + }; + +})(mui, window); +/** + * Popup(alert,confirm,prompt) + * @param {Object} $ + * @param {Object} window + * @param {Object} document + */ +(function($, window, document) { + var CLASS_POPUP = 'mui-popup'; + var CLASS_POPUP_BACKDROP = 'mui-popup-backdrop'; + var CLASS_POPUP_IN = 'mui-popup-in'; + var CLASS_POPUP_OUT = 'mui-popup-out'; + var CLASS_POPUP_INNER = 'mui-popup-inner'; + var CLASS_POPUP_TITLE = 'mui-popup-title'; + var CLASS_POPUP_TEXT = 'mui-popup-text'; + var CLASS_POPUP_INPUT = 'mui-popup-input'; + var CLASS_POPUP_BUTTONS = 'mui-popup-buttons'; + var CLASS_POPUP_BUTTON = 'mui-popup-button'; + var CLASS_POPUP_BUTTON_BOLD = 'mui-popup-button-bold'; + var CLASS_POPUP_BACKDROP = 'mui-popup-backdrop'; + var CLASS_ACTIVE = 'mui-active'; + + var popupStack = []; + var backdrop = (function() { + var element = document.createElement('div'); + element.classList.add(CLASS_POPUP_BACKDROP); + element.addEventListener($.EVENT_MOVE, $.preventDefault); + element.addEventListener('webkitTransitionEnd', function() { + if (!this.classList.contains(CLASS_ACTIVE)) { + element.parentNode && element.parentNode.removeChild(element); + } + }); + return element; + }()); + + var createInput = function(placeholder) { + return '
'; + }; + var createInner = function(message, title, extra) { + return '
' + title + '
' + message.replace(/\r\n/g, "
").replace(/\n/g, "
") + '
' + (extra || '') + '
'; + }; + var createButtons = function(btnArray) { + var length = btnArray.length; + var btns = []; + for (var i = 0; i < length; i++) { + btns.push('' + btnArray[i] + ''); + } + return '
' + btns.join('') + '
'; + }; + + var createPopup = function(html, callback) { + var popupElement = document.createElement('div'); + popupElement.className = CLASS_POPUP; + popupElement.innerHTML = html; + var removePopupElement = function() { + popupElement.parentNode && popupElement.parentNode.removeChild(popupElement); + popupElement = null; + }; + popupElement.addEventListener($.EVENT_MOVE, $.preventDefault); + popupElement.addEventListener('webkitTransitionEnd', function(e) { + if (popupElement && e.target === popupElement && popupElement.classList.contains(CLASS_POPUP_OUT)) { + removePopupElement(); + } + }); + popupElement.style.display = 'block'; + document.body.appendChild(popupElement); + popupElement.offsetHeight; + popupElement.classList.add(CLASS_POPUP_IN); + + if (!backdrop.classList.contains(CLASS_ACTIVE)) { + backdrop.style.display = 'block'; + document.body.appendChild(backdrop); + backdrop.offsetHeight; + backdrop.classList.add(CLASS_ACTIVE); + } + var btns = $.qsa('.' + CLASS_POPUP_BUTTON, popupElement); + var input = popupElement.querySelector('.' + CLASS_POPUP_INPUT + ' input'); + var popup = { + element: popupElement, + close: function(index, animate) { + if (popupElement) { + var result = callback && callback({ + index: index || 0, + value: input && input.value || '' + }); + if (result === false) { //返回false则不关闭当前popup + return; + } + if (animate !== false) { + popupElement.classList.remove(CLASS_POPUP_IN); + popupElement.classList.add(CLASS_POPUP_OUT); + } else { + removePopupElement(); + } + popupStack.pop(); + //如果还有其他popup,则不remove backdrop + if (popupStack.length) { + popupStack[popupStack.length - 1]['show'](animate); + } else { + backdrop.classList.remove(CLASS_ACTIVE); + } + } + } + }; + var handleEvent = function(e) { + popup.close(btns.indexOf(e.target)); + }; + $(popupElement).on('tap', '.' + CLASS_POPUP_BUTTON, handleEvent); + if (popupStack.length) { + popupStack[popupStack.length - 1]['hide'](); + } + popupStack.push({ + close: popup.close, + show: function(animate) { + popupElement.style.display = 'block'; + popupElement.offsetHeight; + popupElement.classList.add(CLASS_POPUP_IN); + }, + hide: function() { + popupElement.style.display = 'none'; + popupElement.classList.remove(CLASS_POPUP_IN); + } + }); + return popup; + }; + var createAlert = function(message, title, btnValue, callback, type) { + if (typeof message === 'undefined') { + return; + } else { + if (typeof title === 'function') { + callback = title; + type = btnValue; + title = null; + btnValue = null; + } else if (typeof btnValue === 'function') { + type = callback; + callback = btnValue; + btnValue = null; + } + } + if (!$.os.plus || type === 'div') { + return createPopup(createInner(message, title || '提示') + createButtons([btnValue || '确定']), callback); + } + return plus.nativeUI.alert(message, callback, title || '提示', btnValue || '确定'); + }; + var createConfirm = function(message, title, btnArray, callback, type) { + if (typeof message === 'undefined') { + return; + } else { + if (typeof title === 'function') { + callback = title; + type = btnArray; + title = null; + btnArray = null; + } else if (typeof btnArray === 'function') { + type = callback; + callback = btnArray; + btnArray = null; + } + } + if (!$.os.plus || type === 'div') { + return createPopup(createInner(message, title || '提示') + createButtons(btnArray || ['取消', '确认']), callback); + } + return plus.nativeUI.confirm(message, callback, title, btnArray || ['取消', '确认']); + }; + var createPrompt = function(message, placeholder, title, btnArray, callback, type) { + if (typeof message === 'undefined') { + return; + } else { + if (typeof placeholder === 'function') { + callback = placeholder; + type = title; + placeholder = null; + title = null; + btnArray = null; + } else if (typeof title === 'function') { + callback = title; + type = btnArray; + title = null; + btnArray = null; + } else if (typeof btnArray === 'function') { + type = callback; + callback = btnArray; + btnArray = null; + } + } + if (!$.os.plus || type === 'div') { + return createPopup(createInner(message, title || '提示', createInput(placeholder)) + createButtons(btnArray || ['取消', '确认']), callback); + } + return plus.nativeUI.prompt(message, callback, title || '提示', placeholder, btnArray || ['取消', '确认']); + }; + var closePopup = function() { + if (popupStack.length) { + popupStack[popupStack.length - 1]['close'](); + return true; + } else { + return false; + } + }; + var closePopups = function() { + while (popupStack.length) { + popupStack[popupStack.length - 1]['close'](); + } + }; + + $.closePopup = closePopup; + $.closePopups = closePopups; + $.alert = createAlert; + $.confirm = createConfirm; + $.prompt = createPrompt; +})(mui, window, document); +(function($, document) { + var CLASS_PROGRESSBAR = 'mui-progressbar'; + var CLASS_PROGRESSBAR_IN = 'mui-progressbar-in'; + var CLASS_PROGRESSBAR_OUT = 'mui-progressbar-out'; + var CLASS_PROGRESSBAR_INFINITE = 'mui-progressbar-infinite'; + + var SELECTOR_PROGRESSBAR = '.mui-progressbar'; + + var _findProgressbar = function(container) { + container = $(container || 'body'); + if (container.length === 0) return; + container = container[0]; + if (container.classList.contains(CLASS_PROGRESSBAR)) { + return container; + } + var progressbars = container.querySelectorAll(SELECTOR_PROGRESSBAR); + if (progressbars) { + for (var i = 0, len = progressbars.length; i < len; i++) { + var progressbar = progressbars[i]; + if (progressbar.parentNode === container) { + return progressbar; + } + } + } + }; + /** + * 创建并显示进度条 + * @param {Object} container 可选,默认body,支持selector,DOM Node,mui wrapper + * @param {Object} progress 可选,undefined表示循环,数字表示具体进度 + * @param {Object} color 可选,指定颜色样式(目前暂未提供实际样式,可暂时不暴露此参数) + */ + var showProgressbar = function(container, progress, color) { + if (typeof container === 'number') { + color = progress; + progress = container; + container = 'body'; + } + container = $(container || 'body'); + if (container.length === 0) return; + container = container[0]; + var progressbar; + if (container.classList.contains(CLASS_PROGRESSBAR)) { + progressbar = container; + } else { + var progressbars = container.querySelectorAll(SELECTOR_PROGRESSBAR + ':not(.' + CLASS_PROGRESSBAR_OUT + ')'); + if (progressbars) { + for (var i = 0, len = progressbars.length; i < len; i++) { + var _progressbar = progressbars[i]; + if (_progressbar.parentNode === container) { + progressbar = _progressbar; + break; + } + } + } + if (!progressbar) { + progressbar = document.createElement('span'); + progressbar.className = CLASS_PROGRESSBAR + ' ' + CLASS_PROGRESSBAR_IN + (typeof progress !== 'undefined' ? '' : (' ' + CLASS_PROGRESSBAR_INFINITE)) + (color ? (' ' + CLASS_PROGRESSBAR + '-' + color) : ''); + if (typeof progress !== 'undefined') { + progressbar.innerHTML = ''; + } + container.appendChild(progressbar); + } else { + progressbar.classList.add(CLASS_PROGRESSBAR_IN); + } + } + if (progress) setProgressbar(container, progress); + return progressbar; + }; + /** + * 关闭进度条 + * @param {Object} container 可选,默认body,支持selector,DOM Node,mui wrapper + */ + var hideProgressbar = function(container) { + var progressbar = _findProgressbar(container); + if (!progressbar) { + return; + } + var classList = progressbar.classList; + if (!classList.contains(CLASS_PROGRESSBAR_IN) || classList.contains(CLASS_PROGRESSBAR_OUT)) { + return; + } + classList.remove(CLASS_PROGRESSBAR_IN); + classList.add(CLASS_PROGRESSBAR_OUT); + progressbar.addEventListener('webkitAnimationEnd', function() { + progressbar.parentNode && progressbar.parentNode.removeChild(progressbar); + progressbar = null; + }); + return; + }; + /** + * 设置指定进度条进度 + * @param {Object} container 可选,默认body,支持selector,DOM Node,mui wrapper + * @param {Object} progress 可选,默认0 取值范围[0-100] + * @param {Object} speed 进度条动画时间 + */ + var setProgressbar = function(container, progress, speed) { + if (typeof container === 'number') { + speed = progress; + progress = container; + container = false; + } + var progressbar = _findProgressbar(container); + if (!progressbar || progressbar.classList.contains(CLASS_PROGRESSBAR_INFINITE)) { + return; + } + if (progress) progress = Math.min(Math.max(progress, 0), 100); + progressbar.offsetHeight; + var span = progressbar.querySelector('span'); + if (span) { + var style = span.style; + style.webkitTransform = 'translate3d(' + (-100 + progress) + '%,0,0)'; + if (typeof speed !== 'undefined') { + style.webkitTransitionDuration = speed + 'ms'; + } else { + style.webkitTransitionDuration = ''; + } + } + return progressbar; + }; + $.fn.progressbar = function(options) { + var progressbarApis = []; + options = options || {}; + this.each(function() { + var self = this; + var progressbarApi = self.mui_plugin_progressbar; + if (!progressbarApi) { + self.mui_plugin_progressbar = progressbarApi = { + options: options, + setOptions: function(options) { + this.options = options; + }, + show: function() { + return showProgressbar(self, this.options.progress, this.options.color); + }, + setProgress: function(progress) { + return setProgressbar(self, progress); + }, + hide: function() { + return hideProgressbar(self); + } + }; + } else if (options) { + progressbarApi.setOptions(options); + } + progressbarApis.push(progressbarApi); + }); + return progressbarApis.length === 1 ? progressbarApis[0] : progressbarApis; + }; + // $.setProgressbar = setProgressbar; + // $.showProgressbar = showProgressbar; + // $.hideProgressbar = hideProgressbar; +})(mui, document); +/** + * Input(TODO resize) + * @param {type} $ + * @param {type} window + * @param {type} document + * @returns {undefined} + */ +(function($, window, document) { + var CLASS_ICON = 'mui-icon'; + var CLASS_ICON_CLEAR = 'mui-icon-clear'; + var CLASS_ICON_SPEECH = 'mui-icon-speech'; + var CLASS_ICON_SEARCH = 'mui-icon-search'; + var CLASS_ICON_PASSWORD = 'mui-icon-eye'; + var CLASS_INPUT_ROW = 'mui-input-row'; + var CLASS_PLACEHOLDER = 'mui-placeholder'; + var CLASS_TOOLTIP = 'mui-tooltip'; + var CLASS_HIDDEN = 'mui-hidden'; + var CLASS_FOCUSIN = 'mui-focusin'; + var SELECTOR_ICON_CLOSE = '.' + CLASS_ICON_CLEAR; + var SELECTOR_ICON_SPEECH = '.' + CLASS_ICON_SPEECH; + var SELECTOR_ICON_PASSWORD = '.' + CLASS_ICON_PASSWORD; + var SELECTOR_PLACEHOLDER = '.' + CLASS_PLACEHOLDER; + var SELECTOR_TOOLTIP = '.' + CLASS_TOOLTIP; + + var findRow = function(target) { + for (; target && target !== document; target = target.parentNode) { + if (target.classList && target.classList.contains(CLASS_INPUT_ROW)) { + return target; + } + } + return null; + }; + var Input = function(element, options) { + this.element = element; + this.options = options || { + actions: 'clear' + }; + if (~this.options.actions.indexOf('slider')) { //slider + this.sliderActionClass = CLASS_TOOLTIP + ' ' + CLASS_HIDDEN; + this.sliderActionSelector = SELECTOR_TOOLTIP; + } else { //clear,speech,search + if (~this.options.actions.indexOf('clear')) { + this.clearActionClass = CLASS_ICON + ' ' + CLASS_ICON_CLEAR + ' ' + CLASS_HIDDEN; + this.clearActionSelector = SELECTOR_ICON_CLOSE; + } + if (~this.options.actions.indexOf('speech')) { //only for 5+ + this.speechActionClass = CLASS_ICON + ' ' + CLASS_ICON_SPEECH; + this.speechActionSelector = SELECTOR_ICON_SPEECH; + } + if (~this.options.actions.indexOf('search')) { + this.searchActionClass = CLASS_PLACEHOLDER; + this.searchActionSelector = SELECTOR_PLACEHOLDER; + } + if (~this.options.actions.indexOf('password')) { + this.passwordActionClass = CLASS_ICON + ' ' + CLASS_ICON_PASSWORD; + this.passwordActionSelector = SELECTOR_ICON_PASSWORD; + } + } + this.init(); + }; + Input.prototype.init = function() { + this.initAction(); + this.initElementEvent(); + }; + Input.prototype.initAction = function() { + var self = this; + + var row = self.element.parentNode; + if (row) { + if (self.sliderActionClass) { + self.sliderAction = self.createAction(row, self.sliderActionClass, self.sliderActionSelector); + } else { + if (self.searchActionClass) { + self.searchAction = self.createAction(row, self.searchActionClass, self.searchActionSelector); + self.searchAction.addEventListener('tap', function(e) { + $.focus(self.element); + e.stopPropagation(); + }); + } + if (self.speechActionClass) { + self.speechAction = self.createAction(row, self.speechActionClass, self.speechActionSelector); + self.speechAction.addEventListener('click', $.stopPropagation); + self.speechAction.addEventListener('tap', function(event) { + self.speechActionClick(event); + }); + } + if (self.clearActionClass) { + self.clearAction = self.createAction(row, self.clearActionClass, self.clearActionSelector); + self.clearAction.addEventListener('tap', function(event) { + self.clearActionClick(event); + }); + } + if (self.passwordActionClass) { + self.passwordAction = self.createAction(row, self.passwordActionClass, self.passwordActionSelector); + self.passwordAction.addEventListener('tap', function(event) { + self.passwordActionClick(event); + }); + } + } + } + }; + Input.prototype.createAction = function(row, actionClass, actionSelector) { + var action = row.querySelector(actionSelector); + if (!action) { + var action = document.createElement('span'); + action.className = actionClass; + if (actionClass === this.searchActionClass) { + action.innerHTML = '' + this.element.getAttribute('placeholder') + ''; + this.element.setAttribute('placeholder', ''); + if (this.element.value.trim()) { + row.classList.add('mui-active'); + } + } + row.insertBefore(action, this.element.nextSibling); + } + return action; + }; + Input.prototype.initElementEvent = function() { + var element = this.element; + + if (this.sliderActionClass) { + var tooltip = this.sliderAction; + var timer = null; + var showTip = function() { //每次重新计算是因为控件可能被隐藏,初始化时计算是不正确的 + tooltip.classList.remove(CLASS_HIDDEN); + var offsetLeft = element.offsetLeft; + var width = element.offsetWidth - 28; + var tooltipWidth = tooltip.offsetWidth; + var distince = Math.abs(element.max - element.min); + var scaleWidth = (width / distince) * Math.abs(element.value - element.min); + tooltip.style.left = (14 + offsetLeft + scaleWidth - tooltipWidth / 2) + 'px'; + tooltip.innerText = element.value; + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(function() { + tooltip.classList.add(CLASS_HIDDEN); + }, 1000); + }; + element.addEventListener('input', showTip); + element.addEventListener('tap', showTip); + element.addEventListener($.EVENT_MOVE, function(e) { + e.stopPropagation(); + }); + } else { + if (this.clearActionClass) { + var action = this.clearAction; + if (!action) { + return; + } + $.each(['keyup', 'change', 'input', 'focus', 'cut', 'paste'], function(index, type) { + (function(type) { + element.addEventListener(type, function() { + action.classList[element.value.trim() ? 'remove' : 'add'](CLASS_HIDDEN); + }); + })(type); + }); + element.addEventListener('blur', function() { + action.classList.add(CLASS_HIDDEN); + }); + } + if (this.searchActionClass) { + element.addEventListener('focus', function() { + element.parentNode.classList.add('mui-active'); + }); + element.addEventListener('blur', function() { + if (!element.value.trim()) { + element.parentNode.classList.remove('mui-active'); + } + }); + } + } + }; + Input.prototype.setPlaceholder = function(text) { + if (this.searchActionClass) { + var placeholder = this.element.parentNode.querySelector(SELECTOR_PLACEHOLDER); + placeholder && (placeholder.getElementsByTagName('span')[1].innerText = text); + } else { + this.element.setAttribute('placeholder', text); + } + }; + Input.prototype.passwordActionClick = function(event) { + if (this.element.type === 'text') { + this.element.type = 'password'; + } else { + this.element.type = 'text'; + } + this.passwordAction.classList.toggle('mui-active'); + event.preventDefault(); + }; + Input.prototype.clearActionClick = function(event) { + var self = this; + self.element.value = ''; + $.focus(self.element); + self.clearAction.classList.add(CLASS_HIDDEN); + event.preventDefault(); + }; + Input.prototype.speechActionClick = function(event) { + if (window.plus) { + var self = this; + var oldValue = self.element.value; + self.element.value = ''; + document.body.classList.add(CLASS_FOCUSIN); + plus.speech.startRecognize({ + engine: 'iFly' + }, function(s) { + self.element.value += s; + $.focus(self.element); + plus.speech.stopRecognize(); + $.trigger(self.element, 'recognized', { + value: self.element.value + }); + if (oldValue !== self.element.value) { + $.trigger(self.element, 'change'); + $.trigger(self.element, 'input'); + } + // document.body.classList.remove(CLASS_FOCUSIN); + }, function(e) { + document.body.classList.remove(CLASS_FOCUSIN); + }); + } else { + alert('only for 5+'); + } + event.preventDefault(); + }; + $.fn.input = function(options) { + var inputApis = []; + this.each(function() { + var inputApi = null; + var actions = []; + var row = findRow(this.parentNode); + if (this.type === 'range' && row.classList.contains('mui-input-range')) { + actions.push('slider'); + } else { + var classList = this.classList; + if (classList.contains('mui-input-clear')) { + actions.push('clear'); + } + if (!($.os.android && $.os.stream) && classList.contains('mui-input-speech')) { + actions.push('speech'); + } + if (classList.contains('mui-input-password')) { + actions.push('password'); + } + if (this.type === 'search' && row.classList.contains('mui-search')) { + actions.push('search'); + } + } + var id = this.getAttribute('data-input-' + actions[0]); + if (!id) { + id = ++$.uuid; + inputApi = $.data[id] = new Input(this, { + actions: actions.join(',') + }); + for (var i = 0, len = actions.length; i < len; i++) { + this.setAttribute('data-input-' + actions[i], id); + } + } else { + inputApi = $.data[id]; + } + inputApis.push(inputApi); + }); + return inputApis.length === 1 ? inputApis[0] : inputApis; + }; + $.ready(function() { + $('.mui-input-row input').input(); + }); +})(mui, window, document); +(function($, window) { + var CLASS_ACTIVE = 'mui-active'; + var rgbaRegex = /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d*(?:\.\d+)?)\)$/; + var getColor = function(colorStr) { + var matches = colorStr.match(rgbaRegex); + if (matches && matches.length === 5) { + return [ + matches[1], + matches[2], + matches[3], + matches[4] + ]; + } + return []; + }; + var Transparent = function(element, options) { + this.element = element; + this.options = $.extend({ + top: 0, //距离顶部高度(到达该高度即触发) + offset: 150, //滚动透明距离 + duration: 16, //过渡时间 + scrollby: window//监听滚动距离容器 + }, options || {}); + + this.scrollByElem = this.options.scrollby || window; + if (!this.scrollByElem) { + throw new Error("监听滚动的元素不存在"); + } + this.isNativeScroll = false; + if (this.scrollByElem === window) { + this.isNativeScroll = true; + } else if (!~this.scrollByElem.className.indexOf('mui-scroll-wrapper')) { + this.isNativeScroll = true; + } + + this._style = this.element.style; + this._bgColor = this._style.backgroundColor; + var color = getColor(mui.getStyles(this.element, 'backgroundColor')); + if (color.length) { + this._R = color[0]; + this._G = color[1]; + this._B = color[2]; + this._A = parseFloat(color[3]); + this.lastOpacity = this._A; + this._bufferFn = $.buffer(this.handleScroll, this.options.duration, this); + this.initEvent(); + } else { + throw new Error("元素背景颜色必须为RGBA"); + } + }; + + Transparent.prototype.initEvent = function() { + this.scrollByElem.addEventListener('scroll', this._bufferFn); + if (this.isNativeScroll) { //原生scroll + this.scrollByElem.addEventListener($.EVENT_MOVE, this._bufferFn); + } + } + Transparent.prototype.handleScroll = function(e) { + var y = window.scrollY; + if (!this.isNativeScroll && e && e.detail) { + y = -e.detail.y; + } + var opacity = (y - this.options.top) / this.options.offset + this._A; + opacity = Math.min(Math.max(this._A, opacity), 1); + this._style.backgroundColor = 'rgba(' + this._R + ',' + this._G + ',' + this._B + ',' + opacity + ')'; + if (opacity > this._A) { + this.element.classList.add(CLASS_ACTIVE); + } else { + this.element.classList.remove(CLASS_ACTIVE); + } + if (this.lastOpacity !== opacity) { + $.trigger(this.element, 'alpha', { + alpha: opacity + }); + this.lastOpacity = opacity; + } + }; + Transparent.prototype.destory = function() { + this.scrollByElem.removeEventListener('scroll', this._bufferFn); + this.scrollByElem.removeEventListener($.EVENT_MOVE, this._bufferFn); + this.element.style.backgroundColor = this._bgColor; + this.element.mui_plugin_transparent = null; + }; + $.fn.transparent = function(options) { + options = options || {}; + var transparentApis = []; + this.each(function() { + var transparentApi = this.mui_plugin_transparent; + if (!transparentApi) { + var top = this.getAttribute('data-top'); + var offset = this.getAttribute('data-offset'); + var duration = this.getAttribute('data-duration'); + var scrollby = this.getAttribute('data-scrollby'); + if (top !== null && typeof options.top === 'undefined') { + options.top = top; + } + if (offset !== null && typeof options.offset === 'undefined') { + options.offset = offset; + } + if (duration !== null && typeof options.duration === 'undefined') { + options.duration = duration; + } + if (scrollby !== null && typeof options.scrollby === 'undefined') { + options.scrollby = document.querySelector(scrollby) || window; + } + transparentApi = this.mui_plugin_transparent = new Transparent(this, options); + } + transparentApis.push(transparentApi); + }); + return transparentApis.length === 1 ? transparentApis[0] : transparentApis; + }; + $.ready(function() { + $('.mui-bar-transparent').transparent(); + }); +})(mui, window); +/** + * 数字输入框 + * varstion 1.0.1 + * by Houfeng + * Houfeng@DCloud.io + */ + +(function($) { + + var touchSupport = ('ontouchstart' in document); + var tapEventName = touchSupport ? 'tap' : 'click'; + var changeEventName = 'change'; + var holderClassName = 'mui-numbox'; + var plusClassSelector = '.mui-btn-numbox-plus,.mui-numbox-btn-plus'; + var minusClassSelector = '.mui-btn-numbox-minus,.mui-numbox-btn-minus'; + var inputClassSelector = '.mui-input-numbox,.mui-numbox-input'; + + var Numbox = $.Numbox = $.Class.extend({ + /** + * 构造函数 + **/ + init: function(holder, options) { + var self = this; + if (!holder) { + throw "构造 numbox 时缺少容器元素"; + } + self.holder = holder; + options = options || {}; + options.step = parseInt(options.step || 1); + self.options = options; + self.input = $.qsa(inputClassSelector, self.holder)[0]; + self.plus = $.qsa(plusClassSelector, self.holder)[0]; + self.minus = $.qsa(minusClassSelector, self.holder)[0]; + self.checkValue(); + self.initEvent(); + }, + /** + * 初始化事件绑定 + **/ + initEvent: function() { + var self = this; + self.plus.addEventListener(tapEventName, function(event) { + var val = parseInt(self.input.value) + self.options.step; + self.input.value = val.toString(); + $.trigger(self.input, changeEventName, null); + }); + self.minus.addEventListener(tapEventName, function(event) { + var val = parseInt(self.input.value) - self.options.step; + self.input.value = val.toString(); + $.trigger(self.input, changeEventName, null); + }); + self.input.addEventListener(changeEventName, function(event) { + self.checkValue(); + var val = parseInt(self.input.value); + //触发顶层容器 + $.trigger(self.holder, changeEventName, { + value: val + }); + }); + }, + /** + * 获取当前值 + **/ + getValue: function() { + var self = this; + return parseInt(self.input.value); + }, + /** + * 验证当前值是法合法 + **/ + checkValue: function() { + var self = this; + var val = self.input.value; + if (val == null || val == '' || isNaN(val)) { + self.input.value = self.options.min || 0; + self.minus.disabled = self.options.min != null; + } else { + var val = parseInt(val); + if (self.options.max != null && !isNaN(self.options.max) && val >= parseInt(self.options.max)) { + val = self.options.max; + self.plus.disabled = true; + } else { + self.plus.disabled = false; + } + if (self.options.min != null && !isNaN(self.options.min) && val <= parseInt(self.options.min)) { + val = self.options.min; + self.minus.disabled = true; + } else { + self.minus.disabled = false; + } + self.input.value = val; + } + }, + /** + * 更新选项 + **/ + setOption: function(name, value) { + var self = this; + self.options[name] = value; + }, + /** + * 动态设置新值 + **/ + setValue: function(value) { + this.input.value = value; + this.checkValue(); + } + }); + + $.fn.numbox = function(options) { + var instanceArray = []; + //遍历选择的元素 + this.each(function(i, element) { + if (element.numbox) { + return; + } + if (options) { + element.numbox = new Numbox(element, options); + } else { + var optionsText = element.getAttribute('data-numbox-options'); + var options = optionsText ? JSON.parse(optionsText) : {}; + options.step = element.getAttribute('data-numbox-step') || options.step; + options.min = element.getAttribute('data-numbox-min') || options.min; + options.max = element.getAttribute('data-numbox-max') || options.max; + element.numbox = new Numbox(element, options); + } + }); + return this[0] ? this[0].numbox : null; + } + + //自动处理 class='mui-locker' 的 dom + $.ready(function() { + $('.' + holderClassName).numbox(); + }); + +}(mui)); +/** + * Button + * @param {type} $ + * @param {type} window + * @param {type} document + * @returns {undefined} + */ +(function($, window, document) { + var CLASS_ICON = 'mui-icon'; + var CLASS_DISABLED = 'mui-disabled'; + + var STATE_RESET = 'reset'; + var STATE_LOADING = 'loading'; + + var defaultOptions = { + loadingText: 'Loading...', //文案 + loadingIcon: 'mui-spinner' + ' ' + 'mui-spinner-white', //图标,可为空 + loadingIconPosition: 'left' //图标所处位置,仅支持left|right + }; + + var Button = function(element, options) { + this.element = element; + this.options = $.extend({}, defaultOptions, options); + if (!this.options.loadingText) { + this.options.loadingText = defaultOptions.loadingText; + } + if (this.options.loadingIcon === null) { + this.options.loadingIcon = 'mui-spinner'; + if ($.getStyles(this.element, 'color') === 'rgb(255, 255, 255)') { + this.options.loadingIcon += ' ' + 'mui-spinner-white'; + } + } + this.isInput = this.element.tagName === 'INPUT'; + this.resetHTML = this.isInput ? this.element.value : this.element.innerHTML; + this.state = ''; + }; + Button.prototype.loading = function() { + this.setState(STATE_LOADING); + }; + Button.prototype.reset = function() { + this.setState(STATE_RESET); + }; + Button.prototype.setState = function(state) { + if (this.state === state) { + return false; + } + this.state = state; + if (state === STATE_RESET) { + this.element.disabled = false; + this.element.classList.remove(CLASS_DISABLED); + this.setHtml(this.resetHTML); + } else if (state === STATE_LOADING) { + this.element.disabled = true; + this.element.classList.add(CLASS_DISABLED); + var html = this.isInput ? this.options.loadingText : ('' + this.options.loadingText + ''); + if (this.options.loadingIcon && !this.isInput) { + if (this.options.loadingIconPosition === 'right') { + html += ' '; + } else { + html = ' ' + html; + } + } + this.setHtml(html); + } + }; + Button.prototype.setHtml = function(html) { + if (this.isInput) { + this.element.value = html; + } else { + this.element.innerHTML = html; + } + } + $.fn.button = function(state) { + var buttonApis = []; + this.each(function() { + var buttonApi = this.mui_plugin_button; + if (!buttonApi) { + var loadingText = this.getAttribute('data-loading-text'); + var loadingIcon = this.getAttribute('data-loading-icon'); + var loadingIconPosition = this.getAttribute('data-loading-icon-position'); + this.mui_plugin_button = buttonApi = new Button(this, { + loadingText: loadingText, + loadingIcon: loadingIcon, + loadingIconPosition: loadingIconPosition + }); + } + if (state === STATE_LOADING || state === STATE_RESET) { + buttonApi.setState(state); + } + buttonApis.push(buttonApi); + }); + return buttonApis.length === 1 ? buttonApis[0] : buttonApis; + }; +})(mui, window, document); \ No newline at end of file diff --git a/js/mui.min.js b/js/mui.min.js new file mode 100644 index 0000000..bc87ee2 --- /dev/null +++ b/js/mui.min.js @@ -0,0 +1,9 @@ +/*! + * ===================================================== + * Mui v3.7.2 (http://dev.dcloud.net.cn/mui) + * ===================================================== + */ +var mui=function(a,b){var c=/complete|loaded|interactive/,d=/^#([\w-]+)$/,e=/^\.([\w-]+)$/,f=/^[\w-]+$/,g=/translate(?:3d)?\((.+?)\)/,h=/matrix(3d)?\((.+?)\)/,i=function(b,c){if(c=c||a,!b)return j();if("object"==typeof b)return i.isArrayLike(b)?j(i.slice.call(b),null):j([b],null);if("function"==typeof b)return i.ready(b);if("string"==typeof b)try{if(b=b.trim(),d.test(b)){var e=a.getElementById(RegExp.$1);return j(e?[e]:[])}return j(i.qsa(b,c),b)}catch(f){}return j()},j=function(a,b){return a=a||[],Object.setPrototypeOf(a,i.fn),a.selector=b||"",a};i.uuid=0,i.data={},i.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},j=1,k=arguments.length,l=!1;for("boolean"==typeof h&&(l=h,h=arguments[j]||{},j++),"object"==typeof h||i.isFunction(h)||(h={}),j===k&&(h=this,j--);k>j;j++)if(null!=(a=arguments[j]))for(c in a)d=h[c],e=a[c],h!==e&&(l&&e&&(i.isPlainObject(e)||(f=i.isArray(e)))?(f?(f=!1,g=d&&i.isArray(d)?d:[]):g=d&&i.isPlainObject(d)?d:{},h[c]=i.extend(l,g,e)):e!==b&&(h[c]=e));return h},i.noop=function(){},i.slice=[].slice,i.filter=[].filter,i.type=function(a){return null==a?String(a):k[{}.toString.call(a)]||"object"},i.isArray=Array.isArray||function(a){return a instanceof Array},i.isArrayLike=function(a){var b=!!a&&"length"in a&&a.length,c=i.type(a);return"function"===c||i.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a},i.isWindow=function(a){return null!=a&&a===a.window},i.isObject=function(a){return"object"===i.type(a)},i.isPlainObject=function(a){return i.isObject(a)&&!i.isWindow(a)&&Object.getPrototypeOf(a)===Object.prototype},i.isEmptyObject=function(a){for(var c in a)if(c!==b)return!1;return!0},i.isFunction=function(a){return"function"===i.type(a)},i.qsa=function(b,c){return c=c||a,i.slice.call(e.test(b)?c.getElementsByClassName(RegExp.$1):f.test(b)?c.getElementsByTagName(b):c.querySelectorAll(b))},i.ready=function(b){return c.test(a.readyState)?b(i):a.addEventListener("DOMContentLoaded",function(){b(i)},!1),this},i.buffer=function(a,b,c){function d(){e&&(e.cancel(),e=0),f=i.now(),a.apply(c||this,arguments),g=i.now()}var e,f=0,g=0,b=b||150;return i.extend(function(){!f||g>=f&&i.now()-g>b||f>g&&i.now()-f>8*b?d.apply(this,arguments):(e&&e.cancel(),e=i.later(d,b,null,i.slice.call(arguments)))},{stop:function(){e&&(e.cancel(),e=0)}})},i.each=function(a,b,c){if(!a)return this;if("number"==typeof a.length)[].every.call(a,function(a,c){return b.call(a,c,a)!==!1});else for(var d in a)if(c){if(a.hasOwnProperty(d)&&b.call(a[d],d,a[d])===!1)return a}else if(b.call(a[d],d,a[d])===!1)return a;return this},i.focus=function(a){i.os.ios?setTimeout(function(){a.focus()},10):a.focus()},i.trigger=function(a,b,c){return a.dispatchEvent(new CustomEvent(b,{detail:c,bubbles:!0,cancelable:!0})),this},i.getStyles=function(a,b){var c=a.ownerDocument.defaultView.getComputedStyle(a,null);return b?c.getPropertyValue(b)||c[b]:c},i.parseTranslate=function(a,b){var c=a.match(g||"");return c&&c[1]||(c=["","0,0,0"]),c=c[1].split(","),c={x:parseFloat(c[0]),y:parseFloat(c[1]),z:parseFloat(c[2])},b&&c.hasOwnProperty(b)?c[b]:c},i.parseTranslateMatrix=function(a,b){var c=a.match(h),d=c&&c[1];c?(c=c[2].split(","),"3d"===d?c=c.slice(12,15):(c.push(0),c=c.slice(4,7))):c=[0,0,0];var e={x:parseFloat(c[0]),y:parseFloat(c[1]),z:parseFloat(c[2])};return b&&e.hasOwnProperty(b)?e[b]:e},i.hooks={},i.addAction=function(a,b){var c=i.hooks[a];return c||(c=[]),b.index=b.index||1e3,c.push(b),c.sort(function(a,b){return a.index-b.index}),i.hooks[a]=c,i.hooks[a]},i.doAction=function(a,b){i.isFunction(b)?i.each(i.hooks[a],b):i.each(i.hooks[a],function(a,b){return!b.handle()})},i.later=function(a,b,c,d){b=b||0;var e,f,g=a,h=d;return"string"==typeof a&&(g=c[a]),e=function(){g.apply(c,i.isArray(h)?h:[h])},f=setTimeout(e,b),{id:f,cancel:function(){clearTimeout(f)}}},i.now=Date.now||function(){return+new Date};var k={};return i.each(["Boolean","Number","String","Function","Array","Date","RegExp","Object","Error"],function(a,b){k["[object "+b+"]"]=b.toLowerCase()}),window.JSON&&(i.parseJSON=JSON.parse),i.fn={each:function(a){return[].every.call(this,function(b,c){return a.call(b,c,b)!==!1}),this}},"function"==typeof define&&define.amd&&define("mui",[],function(){return i}),i}(document);!function(a,b){function c(c){this.os={};var d=[function(){var a=c.match(/(MicroMessenger)\/([\d\.]+)/i);return a&&(this.os.wechat={version:a[2].replace(/_/g,".")}),!1},function(){var a=c.match(/(Android);?[\s\/]+([\d.]+)?/);return a&&(this.os.android=!0,this.os.version=a[2],this.os.isBadAndroid=!/Chrome\/\d/.test(b.navigator.appVersion)),this.os.android===!0},function(){var a=c.match(/(iPhone\sOS)\s([\d_]+)/);if(a)this.os.ios=this.os.iphone=!0,this.os.version=a[2].replace(/_/g,".");else{var b=c.match(/(iPad).*OS\s([\d_]+)/);b&&(this.os.ios=this.os.ipad=!0,this.os.version=b[2].replace(/_/g,"."))}return this.os.ios===!0}];[].every.call(d,function(b){return!b.call(a)})}c.call(a,navigator.userAgent)}(mui,window),function(a,b){function c(c){this.os=this.os||{};var d=c.match(/Html5Plus/i);d&&(this.os.plus=!0,a(function(){b.body.classList.add("mui-plus")}),c.match(/StreamApp/i)&&(this.os.stream=!0,a(function(){b.body.classList.add("mui-plus-stream")})))}c.call(a,navigator.userAgent)}(mui,document),function(a){"ontouchstart"in window?(a.isTouchable=!0,a.EVENT_START="touchstart",a.EVENT_MOVE="touchmove",a.EVENT_END="touchend"):(a.isTouchable=!1,a.EVENT_START="mousedown",a.EVENT_MOVE="mousemove",a.EVENT_END="mouseup"),a.EVENT_CANCEL="touchcancel",a.EVENT_CLICK="click";var b=1,c={},d={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"},e=function(){return!0},f=function(){return!1},g=function(b,c){return b.detail?b.detail.currentTarget=c:b.detail={currentTarget:c},a.each(d,function(a,c){var d=b[a];b[a]=function(){return this[c]=e,d&&d.apply(b,arguments)},b[c]=f},!0),b},h=function(a){return a&&(a._mid||(a._mid=b++))},i={},j=function(b,d,e,f){return function(e){for(var f=c[b._mid][d],h=[],i=e.target,j={};i&&i!==document&&i!==b&&(!~["click","tap","doubletap","longtap","hold"].indexOf(d)||!i.disabled&&!i.classList.contains("mui-disabled"));i=i.parentNode){var k={};a.each(f,function(c,d){j[c]||(j[c]=a.qsa(c,b)),j[c]&&~j[c].indexOf(i)&&(k[c]||(k[c]=d))},!0),a.isEmptyObject(k)||h.push({element:i,handlers:k})}j=null,e=g(e),a.each(h,function(b,c){i=c.element;var f=i.tagName;return"tap"===d&&"INPUT"!==f&&"TEXTAREA"!==f&&"SELECT"!==f&&(e.preventDefault(),e.detail&&e.detail.gesture&&e.detail.gesture.preventDefault()),a.each(c.handlers,function(b,c){a.each(c,function(a,b){b.call(i,e)===!1&&(e.preventDefault(),e.stopPropagation())},!0)},!0),e.isPropagationStopped()?!1:void 0},!0)}},k=function(a,b){var c=i[h(a)],d=[];if(c){if(d=[],b){var e=function(a){return a.type===b};return c.filter(e)}d=c}return d},l=/^(INPUT|TEXTAREA|BUTTON|SELECT)$/;a.fn.on=function(b,d,e){return this.each(function(){var f=this;h(f),h(e);var g=!1,k=c[f._mid]||(c[f._mid]={}),m=k[b]||(k[b]={});a.isEmptyObject(m)&&(g=!0);var n=m[d]||(m[d]=[]);if(n.push(e),g){var o=i[h(f)];o||(o=[]);var p=j(f,b,d,e);o.push(p),p.i=o.length-1,p.type=b,i[h(f)]=o,f.addEventListener(b,p),"tap"===b&&f.addEventListener("click",function(a){if(a.target){var b=a.target.tagName;if(!l.test(b))if("A"===b){var c=a.target.href;c&&~c.indexOf("tel:")||a.preventDefault()}else a.preventDefault()}})}})},a.fn.off=function(b,d,e){return this.each(function(){var f=h(this);if(b)if(d)if(e){var g=c[f]&&c[f][b]&&c[f][b][d];a.each(g,function(a,b){return h(b)===h(e)?(g.splice(a,1),!1):void 0},!0)}else c[f]&&c[f][b]&&delete c[f][b][d];else c[f]&&delete c[f][b];else c[f]&&delete c[f];c[f]?(!c[f][b]||a.isEmptyObject(c[f][b]))&&k(this,b).forEach(function(a){this.removeEventListener(a.type,a),delete i[f][a.i]}.bind(this)):k(this).forEach(function(a){this.removeEventListener(a.type,a),delete i[f][a.i]}.bind(this))})}}(mui),function(a,b,c){a.targets={},a.targetHandles=[],a.registerTarget=function(b){return b.index=b.index||1e3,a.targetHandles.push(b),a.targetHandles.sort(function(a,b){return a.index-b.index}),a.targetHandles},b.addEventListener(a.EVENT_START,function(b){for(var d=b.target,e={};d&&d!==c;d=d.parentNode){var f=!1;if(a.each(a.targetHandles,function(c,g){var h=g.name;f||e[h]||!g.hasOwnProperty("handle")?e[h]||g.isReset!==!1&&(a.targets[h]=!1):(a.targets[h]=g.handle(b,d),a.targets[h]&&(e[h]=!0,g.isContinue!==!0&&(f=!0)))}),f)break}}),b.addEventListener("click",function(b){for(var d=b.target,e=!1;d&&d!==c&&("A"!==d.tagName||(a.each(a.targetHandles,function(a,c){c.name;return c.hasOwnProperty("handle")&&c.handle(b,d)?(e=!0,b.preventDefault(),!1):void 0}),!e));d=d.parentNode);})}(mui,window,document),function(a){String.prototype.trim===a&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),Object.setPrototypeOf=Object.setPrototypeOf||function(a,b){return a.__proto__=b,a}}(),function(){function a(a,b){b=b||{bubbles:!1,cancelable:!1,detail:void 0};var c=document.createEvent("Events"),d=!0;for(var e in b)"bubbles"===e?d=!!b[e]:c[e]=b[e];return c.initEvent(a,d,!0),c}"undefined"==typeof window.CustomEvent&&(a.prototype=window.Event.prototype,window.CustomEvent=a)}(),Function.prototype.bind=Function.prototype.bind||function(a){var b=Array.prototype.splice.call(arguments,1),c=this,d=function(){var e=b.concat(Array.prototype.splice.call(arguments,0));return this instanceof d?void c.apply(this,e):c.apply(a,e)};return d.prototype=c.prototype,d},function(a){"classList"in a.documentElement||!Object.defineProperty||"undefined"==typeof HTMLElement||Object.defineProperty(HTMLElement.prototype,"classList",{get:function(){function a(a){return function(c){var d=b.className.split(/\s+/),e=d.indexOf(c);a(d,e,c),b.className=d.join(" ")}}var b=this,c={add:a(function(a,b,c){~b||a.push(c)}),remove:a(function(a,b){~b&&a.splice(b,1)}),toggle:a(function(a,b,c){~b?a.splice(b,1):a.push(c)}),contains:function(a){return!!~b.className.split(/\s+/).indexOf(a)},item:function(a){return b.className.split(/\s+/)[a]||null}};return Object.defineProperty(c,"length",{get:function(){return b.className.split(/\s+/).length}}),c}})}(document),function(a){if(!a.requestAnimationFrame){var b=0;a.requestAnimationFrame=a.webkitRequestAnimationFrame||function(c,d){var e=(new Date).getTime(),f=Math.max(0,16.7-(e-b)),g=a.setTimeout(function(){c(e+f)},f);return b=e+f,g},a.cancelAnimationFrame=a.webkitCancelAnimationFrame||a.webkitCancelRequestAnimationFrame||function(a){clearTimeout(a)}}}(window),function(a,b,c){if((a.os.android||a.os.ios)&&!b.FastClick){var d=function(a,b){return"LABEL"===b.tagName&&b.parentNode&&(b=b.parentNode.querySelector("input")),!b||"radio"!==b.type&&"checkbox"!==b.type||b.disabled?!1:b};a.registerTarget({name:c,index:40,handle:d,target:!1});var e=function(c){var d=a.targets.click;if(d){var e,f;document.activeElement&&document.activeElement!==d&&document.activeElement.blur(),f=c.detail.gesture.changedTouches[0],e=document.createEvent("MouseEvents"),e.initMouseEvent("click",!0,!0,b,1,f.screenX,f.screenY,f.clientX,f.clientY,!1,!1,!1,!1,0,null),e.forwardedTouchEvent=!0,d.dispatchEvent(e),c.detail&&c.detail.gesture.preventDefault()}};b.addEventListener("tap",e),b.addEventListener("doubletap",e),b.addEventListener("click",function(b){return a.targets.click&&!b.forwardedTouchEvent?(b.stopImmediatePropagation?b.stopImmediatePropagation():b.propagationStopped=!0,b.stopPropagation(),b.preventDefault(),!1):void 0},!0)}}(mui,window,"click"),function(a,b){a(function(){if(a.os.ios){var c="mui-focusin",d="mui-bar-tab",e="mui-bar-footer",f="mui-bar-footer-secondary",g="mui-bar-footer-secondary-tab";b.addEventListener("focusin",function(h){if(!(a.os.plus&&window.plus&&plus.webview.currentWebview().children().length>0)){var i=h.target;if(i.tagName&&("TEXTAREA"===i.tagName||"INPUT"===i.tagName&&("text"===i.type||"search"===i.type||"number"===i.type))){if(i.disabled||i.readOnly)return;b.body.classList.add(c);for(var j=!1;i&&i!==b;i=i.parentNode){var k=i.classList;if(k&&k.contains(d)||k.contains(e)||k.contains(f)||k.contains(g)){j=!0;break}}if(j){var l=b.body.scrollHeight,m=b.body.scrollLeft;setTimeout(function(){window.scrollTo(m,l)},20)}}}}),b.addEventListener("focusout",function(a){var d=b.body.classList;d.contains(c)&&(d.remove(c),setTimeout(function(){window.scrollTo(b.body.scrollLeft,b.body.scrollTop)},20))})}})}(mui,document),function(a){a.namespace="mui",a.classNamePrefix=a.namespace+"-",a.classSelectorPrefix="."+a.classNamePrefix,a.className=function(b){return a.classNamePrefix+b},a.classSelector=function(b){return b.replace(/\./g,a.classSelectorPrefix)},a.eventName=function(b,c){return b+(a.namespace?"."+a.namespace:"")+(c?"."+c:"")}}(mui),function(a,b){a.gestures={session:{}},a.preventDefault=function(a){a.preventDefault()},a.stopPropagation=function(a){a.stopPropagation()},a.addGesture=function(b){return a.addAction("gestures",b)};var c=Math.round,d=Math.abs,e=Math.sqrt,f=(Math.atan,Math.atan2),g=function(a,b,c){c||(c=["x","y"]);var d=b[c[0]]-a[c[0]],f=b[c[1]]-a[c[1]];return e(d*d+f*f)},h=function(a,b){if(a.length>=2&&b.length>=2){var c=["pageX","pageY"];return g(b[1],b[0],c)/g(a[1],a[0],c)}return 1},i=function(a,b,c){c||(c=["x","y"]);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*f(e,d)/Math.PI},j=function(a,b){return a===b?"":d(a)>=d(b)?a>0?"left":"right":b>0?"up":"down"},k=function(a,b){var c=["pageX","pageY"];return i(b[1],b[0],c)-i(a[1],a[0],c)},l=function(a,b,c){return{x:b/a||0,y:c/a||0}},m=function(b,c){a.gestures.stoped||a.doAction("gestures",function(d,e){a.gestures.stoped||a.options.gestureConfig[e.name]!==!1&&e.handle(b,c)})},n=function(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1},o=function(a,b,c){for(var d=[],e=[],f=0;fc[b]}):d.sort()),d},p=function(a){var b=a.length;if(1===b)return{x:c(a[0].pageX),y:c(a[0].pageY)};for(var d=0,e=0,f=0;b>f;)d+=a[f].pageX,e+=a[f].pageY,f++;return{x:c(d/b),y:c(e/b)}},q=function(){return a.options.gestureConfig.pinch},r=function(b){for(var d=[],e=0;e1&&!c.firstMultiTouch?c.firstMultiTouch=r(b):1===e&&(c.firstMultiTouch=!1);var f=c.firstTouch,l=c.firstMultiTouch,m=l?l.center:f.center,n=b.center=p(d);b.timestamp=a.now(),b.deltaTime=b.timestamp-f.timestamp,b.angle=i(m,n),b.distance=g(m,n),s(b),b.offsetDirection=j(b.deltaX,b.deltaY),b.scale=l?h(l.touches,d):1,b.rotation=l?k(l.touches,d):0,v(b)},u=25,v=function(b){var c,e,f,g,h=a.gestures.session,i=h.lastInterval||b,k=b.timestamp-i.timestamp;if(b.gesture.type!=a.EVENT_CANCEL&&(k>u||void 0===i.velocity)){var m=i.deltaX-b.deltaX,n=i.deltaY-b.deltaY,o=l(k,m,n);e=o.x,f=o.y,c=d(o.x)>d(o.y)?o.x:o.y,g=j(m,n)||i.direction,h.lastInterval=b}else c=i.velocity,e=i.velocityX,f=i.velocityY,g=i.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g},w={},x=function(a){for(var b=0;b300&&(c=h,f.flickStart=e.center);break;case a.EVENT_END:case a.EVENT_CANCEL:e.flick=!1,f.flickStart&&g.flickMaxTime>h-c&&e.distance>g.flickMinDistince&&(e.flick=!0,e.flickTime=h-c,e.flickDistanceX=e.center.x-f.flickStart.x,e.flickDistanceY=e.center.y-f.flickStart.y,a.trigger(f.target,b,e),a.trigger(f.target,b+e.direction,e))}};a.addGesture({name:b,index:5,handle:d,options:{flickMaxTime:200,flickMinDistince:10}})}(mui,"flick"),function(a,b){var c=function(c,d){var e=a.gestures.session;if(c.type===a.EVENT_END||c.type===a.EVENT_CANCEL){var f=this.options;d.swipe=!1,d.direction&&f.swipeMaxTime>d.deltaTime&&d.distance>f.swipeMinDistince&&(d.swipe=!0,a.trigger(e.target,b,d),a.trigger(e.target,b+d.direction,d))}};a.addGesture({name:b,index:10,handle:c,options:{swipeMaxTime:300,swipeMinDistince:18}})}(mui,"swipe"),function(a,b){var c=function(c,d){var e=a.gestures.session;switch(c.type){case a.EVENT_START:break;case a.EVENT_MOVE:if(!d.direction||!e.target)return;e.lockDirection&&e.startDirection&&e.startDirection&&e.startDirection!==d.direction&&("up"===e.startDirection||"down"===e.startDirection?d.direction=d.deltaY<0?"up":"down":d.direction=d.deltaX<0?"left":"right"),e.drag||(e.drag=!0,a.trigger(e.target,b+"start",d)),a.trigger(e.target,b,d),a.trigger(e.target,b+d.direction,d);break;case a.EVENT_END:case a.EVENT_CANCEL:e.drag&&d.isFinal&&a.trigger(e.target,b+"end",d)}};a.addGesture({name:b,index:20,handle:c,options:{fingers:1}})}(mui,"drag"),function(a,b){var c,d,e=function(e,f){var g=a.gestures.session,h=this.options;switch(e.type){case a.EVENT_END:if(!f.isFinal)return;var i=g.target;if(!i||i.disabled||i.classList&&i.classList.contains("mui-disabled"))return;if(f.distanceg.holdThreshold&&clearTimeout(c);break;case a.EVENT_END:case a.EVENT_CANCEL:clearTimeout(c)}};a.addGesture({name:b,index:10,handle:d,options:{fingers:1,holdTimeout:500,holdThreshold:2}})}(mui,"longtap"),function(a,b){var c,d=function(d,e){var f=a.gestures.session,g=this.options;switch(d.type){case a.EVENT_START:a.options.gestureConfig.hold&&(c&&clearTimeout(c),c=setTimeout(function(){e.hold=!0,a.trigger(f.target,b,e)},g.holdTimeout));break;case a.EVENT_MOVE:break;case a.EVENT_END:case a.EVENT_CANCEL:c&&(clearTimeout(c)&&(c=null),a.trigger(f.target,"release",e))}};a.addGesture({name:b,index:10,handle:d,options:{fingers:1,holdTimeout:0}})}(mui,"hold"),function(a,b){var c=function(c,d){var e=this.options,f=a.gestures.session;switch(c.type){case a.EVENT_START:break;case a.EVENT_MOVE:if(a.options.gestureConfig.pinch){if(d.touches.length<2)return;f.pinch||(f.pinch=!0,a.trigger(f.target,b+"start",d)),a.trigger(f.target,b,d);var g=d.scale,h=d.rotation,i="undefined"==typeof d.lastScale?1:d.lastScale,j=1e-12;g>i?(i=g-j,a.trigger(f.target,b+"out",d)):i>g&&(i=g+j,a.trigger(f.target,b+"in",d)),Math.abs(h)>e.minRotationAngle&&a.trigger(f.target,"rotate",d)}break;case a.EVENT_END:case a.EVENT_CANCEL:a.options.gestureConfig.pinch&&f.pinch&&2===d.touches.length&&(f.pinch=!1,a.trigger(f.target,b+"end",d))}};a.addGesture({name:b,index:10,handle:c,options:{minRotationAngle:0}})}(mui,"pinch"),function(a){function b(a,b){var c="MUI_SCROLL_POSITION_"+document.location.href+"_"+b.src,d=parseFloat(localStorage.getItem(c))||0;d&&!function(a){b.onload=function(){window.scrollTo(0,a)}}(d),setInterval(function(){var a=window.scrollY;d!==a&&(localStorage.setItem(c,a+""),d=a)},100)}a.global=a.options={gestureConfig:{tap:!0,doubletap:!1,longtap:!1,hold:!1,flick:!0,swipe:!0,drag:!0,pinch:!1}},a.initGlobal=function(b){return a.options=a.extend(!0,a.global,b),this};var c={};a.init=function(b){return a.options=a.extend(!0,a.global,b||{}),a.ready(function(){a.doAction("inits",function(b,d){var e=!(c[d.name]&&!d.repeat);e&&(d.handle.call(a),c[d.name]=!0)})}),this},a.addInit=function(b){return a.addAction("inits",b)},a.addInit({name:"iframe",index:100,handle:function(){var b=a.options,c=b.subpages||[];!a.os.plus&&c.length&&d(c[0])}});var d=function(c){var d=document.createElement("div");d.className="mui-iframe-wrapper";var e=c.styles||{};"string"!=typeof e.top&&(e.top="0px"),"string"!=typeof e.bottom&&(e.bottom="0px"),d.style.top=e.top,d.style.bottom=e.bottom;var f=document.createElement("iframe");f.src=c.url,f.id=c.id||c.url,f.name=f.id,d.appendChild(f),document.body.appendChild(d),a.os.wechat&&b(d,f)};a(function(){var b=document.body.classList,c=[];a.os.ios?(c.push({os:"ios",version:a.os.version}),b.add("mui-ios")):a.os.android&&(c.push({os:"android",version:a.os.version}),b.add("mui-android")),a.os.wechat&&(c.push({os:"wechat",version:a.os.wechat.version}),b.add("mui-wechat")),c.length&&a.each(c,function(c,d){var e="";d.version&&a.each(d.version.split("."),function(c,f){e=e+(e?"-":"")+f,b.add(a.className(d.os+"-"+e))})})})}(mui),function(a){var b={swipeBack:!1,preloadPages:[],preloadLimit:10,keyEventBind:{backbutton:!0,menubutton:!0},titleConfig:{height:"44px",backgroundColor:"#f7f7f7",bottomBorderColor:"#cccccc",title:{text:"",position:{top:0,left:0,width:"100%",height:"100%"},styles:{color:"#000000",align:"center",family:"'Helvetica Neue',Helvetica,sans-serif",size:"17px",style:"normal",weight:"normal",fontSrc:""}},back:{image:{base64Data:"",imgSrc:"",sprite:{top:"0px",left:"0px",width:"100%",height:"100%"},position:{top:"10px",left:"10px",width:"24px",height:"24px"}}}}},c={event:"titleUpdate",autoShow:!0,duration:300,aniShow:"slide-in-right",extras:{}};a.options.show&&(c=a.extend(!0,c,a.options.show)),a.currentWebview=null,a.extend(!0,a.global,b),a.extend(!0,a.options,b),a.waitingOptions=function(b){return a.extend(!0,{},{autoShow:!0,title:"",modal:!1},b)},a.showOptions=function(b){return a.extend(!0,{},c,b)},a.windowOptions=function(b){return a.extend({scalable:!1,bounce:""},b)},a.plusReady=function(a){return window.plus?setTimeout(function(){a()},0):document.addEventListener("plusready",function(){a()},!1),this},a.fire=function(b,c,d){if(b){if("undefined"==typeof d)d="";else{if("boolean"==typeof d||"number"==typeof d)return void b.evalJS("typeof mui!=='undefined'&&mui.receive('"+c+"',"+d+")");(a.isPlainObject(d)||a.isArray(d))&&(d=JSON.stringify(d||{}).replace(/\'/g,"\\u0027").replace(/\\/g,"\\u005c"))}b.evalJS("typeof mui!=='undefined'&&mui.receive('"+c+"','"+d+"')")}},a.receive=function(b,c){if(b){try{c&&"string"==typeof c&&(c=JSON.parse(c))}catch(d){}a.trigger(document,b,c)}};var d=function(b){if(!b.preloaded){a.fire(b,"preload");for(var c=b.children(),d=0;dt.left&&ca.options.preloadLimit){var h=a.data.preloads.shift(),i=a.webviews[h];i&&i.webview&&a.closeAll(i.webview),delete a.webviews[h]}}else c!==!1&&(d=plus.webview.create(b.url,e,a.windowOptions(b.styles),b.extras),b.subpages&&a.each(b.subpages,function(b,c){var e=c.id||c.url,f=plus.webview.getWebviewById(e);f||(f=plus.webview.create(c.url,e,a.windowOptions(c.styles),c.extras)),d.append(f)}));return d}},a.preload=function(b){return b.preload||(b.preload=!0),a.createWindow(b)},a.closeOpened=function(b){var c=b.opened();if(c)for(var d=0,e=c.length;e>d;d++){var f=c[d],g=f.opened();g&&g.length>0?(a.closeOpened(f),f.close("none")):f.parent()!==b&&f.close("none")}},a.closeAll=function(b,c){a.closeOpened(b),c?b.close(c):b.close()},a.createWindows=function(b){a.each(b,function(b,c){a.createWindow(c,!1)})},a.appendWebview=function(b){if(window.plus){var c,d=b.id||b.url;return a.webviews[d]||(plus.webview.getWebviewById(d)||(c=plus.webview.create(b.url,d,b.styles,b.extras)),plus.webview.currentWebview().append(c),a.webviews[d]=b),c}},a.webviews={},a.data.preloads=[],a.plusReady(function(){a.currentWebview=plus.webview.currentWebview()}),a.addInit({name:"5+",index:100,handle:function(){var b=a.options,c=b.subpages||[];a.os.plus&&a.plusReady(function(){a.each(c,function(b,c){a.appendWebview(c)}),plus.webview.currentWebview()===plus.webview.getWebviewById(plus.runtime.appid)&&setTimeout(function(){d(plus.webview.currentWebview())},300),a.os.ios&&a.options.statusBarBackground&&plus.navigator.setStatusBarBackground(a.options.statusBarBackground),a.os.android&&parseFloat(a.os.version)<4.4&&null==plus.webview.currentWebview().parent()&&document.addEventListener("resume",function(){var a=document.body;a.style.display="none",setTimeout(function(){a.style.display=""},10)})})}}),window.addEventListener("preload",function(){var b=a.options.preloadPages||[];a.plusReady(function(){a.each(b,function(b,c){a.createWindow(a.extend(c,{preload:!0}))})})}),a.supportStatusbarOffset=function(){return a.os.plus&&a.os.ios&&parseFloat(a.os.version)>=7},a.ready(function(){a.supportStatusbarOffset()&&document.body.classList.add("mui-statusbar")})}(mui),function(a,b){a.addBack=function(b){return a.addAction("backs",b)},a.addBack({name:"browser",index:100,handle:function(){return b.history.length>1?(b.history.back(),!0):!1}}),a.back=function(){("function"!=typeof a.options.beforeback||a.options.beforeback()!==!1)&&a.doAction("backs")},b.addEventListener("tap",function(b){var c=a.targets.action;c&&c.classList.contains("mui-action-back")&&(a.back(),a.targets.action=!1)}),b.addEventListener("swiperight",function(b){var c=b.detail;a.options.swipeBack===!0&&Math.abs(c.angle)<3&&a.back()})}(mui,window),function(a,b){a.os.plus&&a.os.android&&a.addBack({name:"mui",index:5,handle:function(){if(a.targets._popover&&a.targets._popover.classList.contains("mui-active"))return a(a.targets._popover).popover("hide"),!0;var b=document.querySelector(".mui-off-canvas-wrap.mui-active");if(b)return a(b).offCanvas("close"),!0;var c=a.isFunction(a.getPreviewImage)&&a.getPreviewImage();return c&&c.isShown()?(c.close(),!0):a.closePopup()}}),a.__back__first=null,a.addBack({name:"5+",index:10,handle:function(){if(!b.plus)return!1;var c=plus.webview.currentWebview(),d=c.parent();return d?d.evalJS("mui&&mui.back();"):c.canBack(function(d){d.canBack?b.history.back():c.id===plus.runtime.appid?a.__back__first?(new Date).getTime()-a.__back__first<2e3&&plus.runtime.quit():(a.__back__first=(new Date).getTime(),mui.toast("再按一次退出应用"),setTimeout(function(){a.__back__first=null},2e3)):c.preload?c.hide("auto"):a.closeAll(c); +}),!0}}),a.menu=function(){var c=document.querySelector(".mui-action-menu");if(c)a.trigger(c,a.EVENT_START),a.trigger(c,"tap");else if(b.plus){var d=a.currentWebview,e=d.parent();e&&e.evalJS("mui&&mui.menu();")}};var c=function(){a.back()},d=function(){a.menu()};a.plusReady(function(){a.options.keyEventBind.backbutton&&plus.key.addEventListener("backbutton",c,!1),a.options.keyEventBind.menubutton&&plus.key.addEventListener("menubutton",d,!1)}),a.addInit({name:"keyEventBind",index:1e3,handle:function(){a.plusReady(function(){a.options.keyEventBind.backbutton||plus.key.removeEventListener("backbutton",c),a.options.keyEventBind.menubutton||plus.key.removeEventListener("menubutton",d)})}})}(mui,window),function(a){a.addInit({name:"pullrefresh",index:1e3,handle:function(){var b=a.options,c=b.pullRefresh||{},d=c.down&&c.down.hasOwnProperty("callback"),e=c.up&&c.up.hasOwnProperty("callback");if(d||e){var f=c.container;if(f){var g=a(f);1===g.length&&(a.os.plus?d&&"circle"==c.down.style?a.plusReady(function(){a.fn.pullRefresh=a.fn.pullRefresh_native,g.pullRefresh(c)}):a.os.android?a.plusReady(function(){a.fn.pullRefresh=a.fn.pullRefresh_native;var b=plus.webview.currentWebview();if(window.__NWin_Enable__===!1)g.pullRefresh(c);else{if(e){var f={};f.up=c.up,f.webviewId=b.id||b.getURL(),g.pullRefresh(f)}if(d){var h=b.parent(),i=b.id||b.getURL();if(h){e||g.pullRefresh({webviewId:i});var j={webviewId:i};j.down=a.extend({},c.down),j.down.callback="_CALLBACK",h.evalJS("mui.fn.pullRefresh=mui.fn.pullRefresh_native"),h.evalJS("mui&&mui(document.querySelector('.mui-content')).pullRefresh('"+JSON.stringify(j)+"')")}}}}):g.pullRefresh(c):g.pullRefresh(c))}}}})}(mui),function(a,b,c){var d="application/json",e="text/html",f=/)<[^<]*)*<\/script>/gi,g=/^(?:text|application)\/javascript/i,h=/^(?:text|application)\/xml/i,i=/^\s*$/;a.ajaxSettings={type:"GET",beforeSend:a.noop,success:a.noop,error:a.noop,complete:a.noop,context:null,xhr:function(a){return new b.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:d,xml:"application/xml, text/xml",html:e,text:"text/plain"},timeout:0,processData:!0,cache:!0};var j=function(a,b){var c=b.context;return b.beforeSend.call(c,a,b)===!1?!1:void 0},k=function(a,b,c){c.success.call(c.context,a,"success",b),m("success",b,c)},l=function(a,b,c,d){d.error.call(d.context,c,b,a),m(b,c,d)},m=function(a,b,c){c.complete.call(c.context,b,a)},n=function(b,c,d,e){var f,g=a.isArray(c),h=a.isPlainObject(c);a.each(c,function(c,i){f=a.type(i),e&&(c=d?e:e+"["+(h||"object"===f||"array"===f?c:"")+"]"),!e&&g?b.add(i.name,i.value):"array"===f||!d&&"object"===f?n(b,i,d,c):b.add(c,i)})},o=function(b){if(b.processData&&b.data&&"string"!=typeof b.data){var e=b.contentType;!e&&b.headers&&(e=b.headers["Content-Type"]),e&&~e.indexOf(d)?b.data=JSON.stringify(b.data):b.data=a.param(b.data,b.traditional)}!b.data||b.type&&"GET"!==b.type.toUpperCase()||(b.url=p(b.url,b.data),b.data=c)},p=function(a,b){return""===b?a:(a+"&"+b).replace(/[&?]{1,2}/,"?")},q=function(a){return a&&(a=a.split(";",2)[0]),a&&(a===e?"html":a===d?"json":g.test(a)?"script":h.test(a)&&"xml")||"text"},r=function(b,d,e,f){return a.isFunction(d)&&(f=e,e=d,d=c),a.isFunction(e)||(f=e,e=c),{url:b,data:d,success:e,dataType:f}};a.ajax=function(d,e){"object"==typeof d&&(e=d,d=c);var f=e||{};f.url=d||f.url;for(var g in a.ajaxSettings)f[g]===c&&(f[g]=a.ajaxSettings[g]);o(f);var h=f.dataType;f.cache!==!1&&(e&&e.cache===!0||"script"!==h)||(f.url=p(f.url,"_="+a.now()));var m,n=f.accepts[h&&h.toLowerCase()],r={},s=function(a,b){r[a.toLowerCase()]=[a,b]},t=/^([\w-]+:)\/\//.test(f.url)?RegExp.$1:b.location.protocol,u=f.xhr(f),v=u.setRequestHeader;if(s("X-Requested-With","XMLHttpRequest"),s("Accept",n||"*/*"),(n=f.mimeType||n)&&(n.indexOf(",")>-1&&(n=n.split(",",2)[0]),u.overrideMimeType&&u.overrideMimeType(n)),(f.contentType||f.contentType!==!1&&f.data&&"GET"!==f.type.toUpperCase())&&s("Content-Type",f.contentType||"application/x-www-form-urlencoded"),f.headers)for(var w in f.headers)s(w,f.headers[w]);if(u.setRequestHeader=s,u.onreadystatechange=function(){if(4===u.readyState){u.onreadystatechange=a.noop,clearTimeout(m);var b,c=!1,d="file:"===t;if(u.status>=200&&u.status<300||304===u.status||0===u.status&&d&&u.responseText){h=h||q(f.mimeType||u.getResponseHeader("content-type")),b=u.responseText;try{"script"===h?(1,eval)(b):"xml"===h?b=u.responseXML:"json"===h&&(b=i.test(b)?null:a.parseJSON(b))}catch(e){c=e}c?l(c,"parsererror",u,f):k(b,u,f)}else{var g=u.status?"error":"abort",j=u.statusText||null;d&&(g="error",j="404"),l(j,g,u,f)}}},j(u,f)===!1)return u.abort(),l(null,"abort",u,f),u;if(f.xhrFields)for(var w in f.xhrFields)u[w]=f.xhrFields[w];var x="async"in f?f.async:!0;u.open(f.type.toUpperCase(),f.url,x,f.username,f.password);for(var w in r)r.hasOwnProperty(w)&&v.apply(u,r[w]);return f.timeout>0&&(m=setTimeout(function(){u.onreadystatechange=a.noop,u.abort(),l(null,"timeout",u,f)},f.timeout)),u.send(f.data?f.data:null),u},a.param=function(a,b){var c=[];return c.add=function(a,b){this.push(encodeURIComponent(a)+"="+encodeURIComponent(b))},n(c,a,b),c.join("&").replace(/%20/g,"+")},a.get=function(){return a.ajax(r.apply(null,arguments))},a.post=function(){var b=r.apply(null,arguments);return b.type="POST",a.ajax(b)},a.getJSON=function(){var b=r.apply(null,arguments);return b.dataType="json",a.ajax(b)},a.fn.load=function(b,c,d){if(!this.length)return this;var e,g=this,h=b.split(/\s/),i=r(b,c,d),j=i.success;return h.length>1&&(i.url=h[0],e=h[1]),i.success=function(a){if(e){var b=document.createElement("div");b.innerHTML=a.replace(f,"");var c=document.createElement("div"),d=b.querySelectorAll(e);if(d&&d.length>0)for(var h=0,i=d.length;i>h;h++)c.appendChild(d[h]);g[0].innerHTML=c.innerHTML}else g[0].innerHTML=a;j&&j.apply(g,arguments)},a.ajax(i),this}}(mui,window),function(a){var b=document.createElement("a");b.href=window.location.href,a.plusReady(function(){a.ajaxSettings=a.extend(a.ajaxSettings,{xhr:function(c){if(c.crossDomain)return new plus.net.XMLHttpRequest;if("file:"!==b.protocol){var d=document.createElement("a");if(d.href=c.url,d.href=d.href,c.crossDomain=b.protocol+"//"+b.host!=d.protocol+"//"+d.host,c.crossDomain)return new plus.net.XMLHttpRequest}return a.os.ios&&window.webkit&&window.webkit.messageHandlers?new plus.net.XMLHttpRequest:new window.XMLHttpRequest}})})}(mui),function(a,b,c){a.offset=function(a){var d={top:0,left:0};return typeof a.getBoundingClientRect!==c&&(d=a.getBoundingClientRect()),{top:d.top+b.pageYOffset-a.clientTop,left:d.left+b.pageXOffset-a.clientLeft}}}(mui,window),function(a,b){a.scrollTo=function(a,c,d){c=c||1e3;var e=function(c){if(0>=c)return b.scrollTo(0,a),void(d&&d());var f=a-b.scrollY;setTimeout(function(){b.scrollTo(0,b.scrollY+f/c*10),e(c-10)},16.7)};e(c)},a.animationFrame=function(a){var b,c,d;return function(){b=arguments,d=this,c||(c=!0,requestAnimationFrame(function(){a.apply(d,b),c=!1}))}}}(mui,window),function(a){var b=!1,c=/xyz/.test(function(){xyz})?/\b_super\b/:/.*/,d=function(){};d.extend=function(a){function d(){!b&&this.init&&this.init.apply(this,arguments)}var e=this.prototype;b=!0;var f=new this;b=!1;for(var g in a)f[g]="function"==typeof a[g]&&"function"==typeof e[g]&&c.test(a[g])?function(a,b){return function(){var c=this._super;this._super=e[a];var d=b.apply(this,arguments);return this._super=c,d}}(g,a[g]):a[g];return d.prototype=f,d.prototype.constructor=d,d.extend=arguments.callee,d},a.Class=d}(mui),function(a,b,c){var d="mui-pull-top-pocket",e="mui-pull-bottom-pocket",f="mui-pull",g="mui-pull-loading",h="mui-pull-caption",i="mui-pull-caption-down",j="mui-pull-caption-refresh",k="mui-pull-caption-nomore",l="mui-icon",m="mui-spinner",n="mui-icon-pulldown",o="mui-block",p="mui-hidden",q="mui-visibility",r=g+" "+l+" "+n,s=g+" "+l+" "+n,t=g+" "+l+" "+m,u=['
','
','
{contentrefresh}
',"
"].join(""),v={init:function(b,c){this._super(b,a.extend(!0,{scrollY:!0,scrollX:!1,indicators:!0,deceleration:.003,down:{height:50,contentinit:"下拉可以刷新",contentdown:"下拉可以刷新",contentover:"释放立即刷新",contentrefresh:"正在刷新..."},up:{height:50,auto:!1,contentinit:"上拉显示更多",contentdown:"上拉显示更多",contentrefresh:"正在加载...",contentnomore:"没有更多数据了",duration:300}},c))},_init:function(){this._super(),this._initPocket()},_initPulldownRefresh:function(){this.pulldown=!0,this.topPocket&&(this.pullPocket=this.topPocket,this.pullPocket.classList.add(o),this.pullPocket.classList.add(q),this.pullCaption=this.topCaption,this.pullLoading=this.topLoading)},_initPullupRefresh:function(){this.pulldown=!1,this.bottomPocket&&(this.pullPocket=this.bottomPocket,this.pullPocket.classList.add(o),this.pullPocket.classList.add(q),this.pullCaption=this.bottomCaption,this.pullLoading=this.bottomLoading)},_initPocket:function(){var a=this.options;a.down&&a.down.hasOwnProperty("callback")&&(this.topPocket=this.scroller.querySelector("."+d),this.topPocket||(this.topPocket=this._createPocket(d,a.down,s),this.wrapper.insertBefore(this.topPocket,this.wrapper.firstChild)),this.topLoading=this.topPocket.querySelector("."+g),this.topCaption=this.topPocket.querySelector("."+h)),a.up&&a.up.hasOwnProperty("callback")&&(this.bottomPocket=this.scroller.querySelector("."+e),this.bottomPocket||(this.bottomPocket=this._createPocket(e,a.up,t),this.scroller.appendChild(this.bottomPocket)),this.bottomLoading=this.bottomPocket.querySelector("."+g),this.bottomCaption=this.bottomPocket.querySelector("."+h),this.wrapper.addEventListener("scrollbottom",this))},_createPocket:function(a,c,d){var e=b.createElement("div");return e.className=a,e.innerHTML=u.replace("{contentrefresh}",c.contentinit).replace("{icon}",d),e},_resetPullDownLoading:function(){var a=this.pullLoading;a&&(this.pullCaption.innerHTML=this.options.down.contentdown,a.style.webkitTransition="",a.style.webkitTransform="",a.style.webkitAnimation="",a.className=s)},_setCaptionClass:function(a,b,c){if(!a)switch(c){case this.options.up.contentdown:b.className=h+" "+i;break;case this.options.up.contentrefresh:b.className=h+" "+j;break;case this.options.up.contentnomore:b.className=h+" "+k}},_setCaption:function(a,b){if(!this.loading){var c=this.options,d=this.pullPocket,e=this.pullCaption,f=this.pullLoading,g=this.pulldown,h=this;d&&(b?setTimeout(function(){e.innerHTML=h.lastTitle=a,g?f.className=s:(h._setCaptionClass(!1,e,a),f.className=t),f.style.webkitAnimation="",f.style.webkitTransition="",f.style.webkitTransform=""},100):a!==this.lastTitle&&(e.innerHTML=a,g?a===c.down.contentrefresh?(f.className=t,f.style.webkitAnimation="spinner-spin 1s step-end infinite"):a===c.down.contentover?(f.className=r,f.style.webkitTransition="-webkit-transform 0.3s ease-in",f.style.webkitTransform="rotate(180deg)"):a===c.down.contentdown&&(f.className=s,f.style.webkitTransition="-webkit-transform 0.3s ease-in",f.style.webkitTransform="rotate(0deg)"):(a===c.up.contentrefresh?f.className=t+" "+q:f.className=t+" "+p,h._setCaptionClass(!1,e,a)),this.lastTitle=a))}}};a.PullRefresh=v}(mui,document),function(a,b,c,d){var e="mui-scroll",f="mui-scrollbar",g="mui-scrollbar-indicator",h=f+"-vertical",i=f+"-horizontal",j="mui-active",k={quadratic:{style:"cubic-bezier(0.25, 0.46, 0.45, 0.94)",fn:function(a){return a*(2-a)}},circular:{style:"cubic-bezier(0.1, 0.57, 0.1, 1)",fn:function(a){return Math.sqrt(1- --a*a)}},outCirc:{style:"cubic-bezier(0.075, 0.82, 0.165, 1)"},outCubic:{style:"cubic-bezier(0.165, 0.84, 0.44, 1)"}},l=a.Class.extend({init:function(b,c){this.wrapper=this.element=b,this.scroller=this.wrapper.children[0],this.scrollerStyle=this.scroller&&this.scroller.style,this.stopped=!1,this.options=a.extend(!0,{scrollY:!0,scrollX:!1,startX:0,startY:0,indicators:!0,stopPropagation:!1,hardwareAccelerated:!0,fixedBadAndorid:!1,preventDefaultException:{tagName:/^(INPUT|TEXTAREA|BUTTON|SELECT|VIDEO)$/},momentum:!0,snapX:.5,snap:!1,bounce:!0,bounceTime:500,bounceEasing:k.outCirc,scrollTime:500,scrollEasing:k.outCubic,directionLockThreshold:5,parallaxElement:!1,parallaxRatio:.5},c),this.x=0,this.y=0,this.translateZ=this.options.hardwareAccelerated?" translateZ(0)":"",this._init(),this.scroller&&(this.refresh(),this.scrollTo(this.options.startX,this.options.startY))},_init:function(){this._initParallax(),this._initIndicators(),this._initEvent()},_initParallax:function(){this.options.parallaxElement&&(this.parallaxElement=c.querySelector(this.options.parallaxElement),this.parallaxStyle=this.parallaxElement.style,this.parallaxHeight=this.parallaxElement.offsetHeight,this.parallaxImgStyle=this.parallaxElement.querySelector("img").style)},_initIndicators:function(){var a=this;if(a.indicators=[],this.options.indicators){var b,c=[];a.options.scrollY&&(b={el:this._createScrollBar(h),listenX:!1},this.wrapper.appendChild(b.el),c.push(b)),this.options.scrollX&&(b={el:this._createScrollBar(i),listenY:!1},this.wrapper.appendChild(b.el),c.push(b));for(var d=c.length;d--;)this.indicators.push(new m(this,c[d]))}},_initSnap:function(){this.currentPage={},this.pages=[];for(var a=this.snaps,b=a.length,c=0,d=-1,e=0,f=0,g=0,h=0,i=0;b>i;i++){var k=a[i],l=k.offsetLeft,m=k.offsetWidth;(0===i||l<=a[i-1].offsetLeft)&&(c=0,d++),this.pages[c]||(this.pages[c]=[]),e=this._getSnapX(l),h=Math.round(m*this.options.snapX),f=e-h,g=e-m+h,this.pages[c][d]={x:e,leftX:f,rightX:g,pageX:c,element:k},k.classList.contains(j)&&(this.currentPage=this.pages[c][0]),e>=this.maxScrollX&&c++}this.options.startX=this.currentPage.x||0},_getSnapX:function(a){return Math.max(Math.min(0,-a+this.wrapperWidth/2),this.maxScrollX)},_gotoPage:function(a){this.currentPage=this.pages[Math.min(a,this.pages.length-1)][0];for(var b=0,c=this.snaps.length;c>b;b++)b===a?this.snaps[b].classList.add(j):this.snaps[b].classList.remove(j);this.scrollTo(this.currentPage.x,0,this.options.scrollTime)},_nearestSnap:function(a){if(!this.pages.length)return{x:0,pageX:0};var b=0,c=this.pages.length;for(a>0?a=0:ab;b++){var d="left"===this.direction?this.pages[b][0].leftX:this.pages[b][0].rightX;if(a>=d)return this.pages[b][0]}return{x:0,pageX:0}},_initEvent:function(c){var d=c?"removeEventListener":"addEventListener";b[d]("orientationchange",this),b[d]("resize",this),this.scroller[d]("webkitTransitionEnd",this),this.wrapper[d](a.EVENT_START,this),this.wrapper[d](a.EVENT_CANCEL,this),this.wrapper[d](a.EVENT_END,this),this.wrapper[d]("drag",this),this.wrapper[d]("dragend",this),this.wrapper[d]("flick",this),this.wrapper[d]("scrollend",this),this.options.scrollX&&this.wrapper[d]("swiperight",this);var e=this.wrapper.querySelector(".mui-segmented-control");e&&mui(e)[c?"off":"on"]("click","a",a.preventDefault),this.wrapper[d]("scrollstart",this),this.wrapper[d]("refresh",this)},_handleIndicatorScrollend:function(){this.indicators.map(function(a){a.fade()})},_handleIndicatorScrollstart:function(){this.indicators.map(function(a){a.fade(1)})},_handleIndicatorRefresh:function(){this.indicators.map(function(a){a.refresh()})},handleEvent:function(b){if(this.stopped)return void this.resetPosition();switch(b.type){case a.EVENT_START:this._start(b);break;case"drag":this.options.stopPropagation&&b.stopPropagation(),this._drag(b);break;case"dragend":case"flick":this.options.stopPropagation&&b.stopPropagation(),this._flick(b);break;case a.EVENT_CANCEL:case a.EVENT_END:this._end(b);break;case"webkitTransitionEnd":this.transitionTimer&&this.transitionTimer.cancel(),this._transitionEnd(b);break;case"scrollstart":this._handleIndicatorScrollstart(b);break;case"scrollend":this._handleIndicatorScrollend(b),this._scrollend(b),b.stopPropagation();break;case"orientationchange":case"resize":this._resize();break;case"swiperight":b.stopPropagation();break;case"refresh":this._handleIndicatorRefresh(b)}},_start:function(b){if(this.moved=this.needReset=!1,this._transitionTime(),this.isInTransition){this.needReset=!0,this.isInTransition=!1;var c=a.parseTranslateMatrix(a.getStyles(this.scroller,"webkitTransform"));this.setTranslate(Math.round(c.x),Math.round(c.y)),a.trigger(this.scroller,"scrollend",this),b.preventDefault()}this.reLayout(),a.trigger(this.scroller,"beforescrollstart",this)},_getDirectionByAngle:function(a){return-80>a&&a>-100?"up":a>=80&&100>a?"down":a>=170||-170>=a?"left":a>=-35&&10>=a?"right":null},_drag:function(c){var d=c.detail;if((this.options.scrollY||"up"===d.direction||"down"===d.direction)&&a.os.ios&&parseFloat(a.os.version)>=8){var e=d.gesture.touches[0].clientY;if(e+10>b.innerHeight||10>e)return void this.resetPosition(this.options.bounceTime)}var f=isReturn=!1;this._getDirectionByAngle(d.angle);if("left"===d.direction||"right"===d.direction?this.options.scrollX?(f=!0,this.moved||(a.gestures.session.lockDirection=!0,a.gestures.session.startDirection=d.direction)):this.options.scrollY&&!this.moved&&(isReturn=!0):"up"===d.direction||"down"===d.direction?this.options.scrollY?(f=!0,this.moved||(a.gestures.session.lockDirection=!0,a.gestures.session.startDirection=d.direction)):this.options.scrollX&&!this.moved&&(isReturn=!0):isReturn=!0,(this.moved||f)&&(c.stopPropagation(),d.gesture&&d.gesture.preventDefault()),!isReturn){this.moved?c.stopPropagation():a.trigger(this.scroller,"scrollstart",this);var g=0,h=0;this.moved?(g=d.deltaX-a.gestures.session.prevTouch.deltaX,h=d.deltaY-a.gestures.session.prevTouch.deltaY):(g=d.deltaX,h=d.deltaY);var i=Math.abs(d.deltaX),j=Math.abs(d.deltaY);i>j+this.options.directionLockThreshold?h=0:j>=i+this.options.directionLockThreshold&&(g=0),g=this.hasHorizontalScroll?g:0,h=this.hasVerticalScroll?h:0;var k=this.x+g,l=this.y+h;(k>0||k0?0:this.maxScrollX),(l>0||l0?0:this.maxScrollY),this.requestAnimationFrame||this._updateTranslate(),this.direction=d.deltaX>0?"right":"left",this.moved=!0,this.x=k,this.y=l,a.trigger(this.scroller,"scroll",this)}},_flick:function(b){if(this.moved){b.stopPropagation();var c=b.detail;if(this._clearRequestAnimationFrame(),"dragend"!==b.type||!c.flick){var d=Math.round(this.x),e=Math.round(this.y);if(this.isInTransition=!1,!this.resetPosition(this.options.bounceTime)){if(this.scrollTo(d,e),"dragend"===b.type)return void a.trigger(this.scroller,"scrollend",this);var f=0,g="";return this.options.momentum&&c.flickTime<300&&(momentumX=this.hasHorizontalScroll?this._momentum(this.x,c.flickDistanceX,c.flickTime,this.maxScrollX,this.options.bounce?this.wrapperWidth:0,this.options.deceleration):{destination:d,duration:0},momentumY=this.hasVerticalScroll?this._momentum(this.y,c.flickDistanceY,c.flickTime,this.maxScrollY,this.options.bounce?this.wrapperHeight:0,this.options.deceleration):{destination:e,duration:0},d=momentumX.destination,e=momentumY.destination,f=Math.max(momentumX.duration,momentumY.duration),this.isInTransition=!0),d!=this.x||e!=this.y?((d>0||d0||e0&&this.y<=this.maxScrollY)&&a.trigger(this.scroller,"scrollbottom",this)},_resize:function(){var a=this;clearTimeout(a.resizeTimeout),a.resizeTimeout=setTimeout(function(){a.refresh()},a.options.resizePolling)},_transitionTime:function(b){if(b=b||0,this.scrollerStyle.webkitTransitionDuration=b+"ms",this.parallaxElement&&this.options.scrollY&&(this.parallaxStyle.webkitTransitionDuration=b+"ms"),this.options.fixedBadAndorid&&!b&&a.os.isBadAndroid&&(this.scrollerStyle.webkitTransitionDuration="0.001s",this.parallaxElement&&this.options.scrollY&&(this.parallaxStyle.webkitTransitionDuration="0.001s")),this.indicators)for(var c=this.indicators.length;c--;)this.indicators[c].transitionTime(b);b&&(this.transitionTimer&&this.transitionTimer.cancel(),this.transitionTimer=a.later(function(){a.trigger(this.scroller,"webkitTransitionEnd")},b+100,this))},_transitionTimingFunction:function(a){if(this.scrollerStyle.webkitTransitionTimingFunction=a,this.parallaxElement&&this.options.scrollY&&(this.parallaxStyle.webkitTransitionDuration=a),this.indicators)for(var b=this.indicators.length;b--;)this.indicators[b].transitionTimingFunction(a)},_translate:function(a,b){this.x=a,this.y=b},_clearRequestAnimationFrame:function(){this.requestAnimationFrame&&(cancelAnimationFrame(this.requestAnimationFrame),this.requestAnimationFrame=null)},_updateTranslate:function(){var a=this;(a.x!==a.lastX||a.y!==a.lastY)&&a.setTranslate(a.x,a.y),a.requestAnimationFrame=requestAnimationFrame(function(){a._updateTranslate()})},_createScrollBar:function(a){var b=c.createElement("div"),d=c.createElement("div");return b.className=f+" "+a,d.className=g,b.appendChild(d),a===h?(this.scrollbarY=b,this.scrollbarIndicatorY=d):a===i&&(this.scrollbarX=b,this.scrollbarIndicatorX=d),this.wrapper.appendChild(b),b},_preventDefaultException:function(a,b){for(var c in b)if(b[c].test(a[c]))return!0;return!1},_reLayout:function(){if(this.hasHorizontalScroll||(this.maxScrollX=0,this.scrollerWidth=this.wrapperWidth),this.hasVerticalScroll||(this.maxScrollY=0,this.scrollerHeight=this.wrapperHeight),this.indicators.map(function(a){a.refresh()}),this.options.snap&&"string"==typeof this.options.snap){var a=this.scroller.querySelectorAll(this.options.snap);this.itemLength=0,this.snaps=[];for(var b=0,c=a.length;c>b;b++){var d=a[b];d.parentNode===this.scroller&&(this.itemLength++,this.snaps.push(d))}this._initSnap()}},_momentum:function(a,b,c,e,f,g){var h,i,j=parseFloat(Math.abs(b)/c);return g=g===d?6e-4:g,h=a+j*j/(2*g)*(0>b?-1:1),i=j/g,e>h?(h=f?e-f/2.5*(j/8):e,b=Math.abs(h-a),i=b/j):h>0&&(h=f?f/2.5*(j/8):0,b=Math.abs(a)+h,i=b/j),{destination:Math.round(h),duration:i}},_getTranslateStr:function(a,b){return this.options.hardwareAccelerated?"translate3d("+a+"px,"+b+"px,0px) "+this.translateZ:"translate("+a+"px,"+b+"px) "},setStopped:function(a){a?(this.disablePullupToRefresh(),this.disablePulldownToRefresh()):(this.enablePullupToRefresh(),this.enablePulldownToRefresh())},setTranslate:function(b,c){if(this.x=b,this.y=c,this.scrollerStyle.webkitTransform=this._getTranslateStr(b,c),this.parallaxElement&&this.options.scrollY){var d=c*this.options.parallaxRatio,e=1+d/((this.parallaxHeight-d)/2);e>1?(this.parallaxImgStyle.opacity=1-d/100*this.options.parallaxRatio,this.parallaxStyle.webkitTransform=this._getTranslateStr(0,-d)+" scale("+e+","+e+")"):(this.parallaxImgStyle.opacity=1,this.parallaxStyle.webkitTransform=this._getTranslateStr(0,-1)+" scale(1,1)")}if(this.indicators)for(var f=this.indicators.length;f--;)this.indicators[f].updatePosition();this.lastX=this.x,this.lastY=this.y,a.trigger(this.scroller,"scroll",this)},reLayout:function(){this.wrapper.offsetHeight;var b=parseFloat(a.getStyles(this.wrapper,"padding-left"))||0,c=parseFloat(a.getStyles(this.wrapper,"padding-right"))||0,d=parseFloat(a.getStyles(this.wrapper,"padding-top"))||0,e=parseFloat(a.getStyles(this.wrapper,"padding-bottom"))||0,f=this.wrapper.clientWidth,g=this.wrapper.clientHeight;this.scrollerWidth=this.scroller.offsetWidth,this.scrollerHeight=this.scroller.offsetHeight,this.wrapperWidth=f-b-c,this.wrapperHeight=g-d-e,this.maxScrollX=Math.min(this.wrapperWidth-this.scrollerWidth,0),this.maxScrollY=Math.min(this.wrapperHeight-this.scrollerHeight,0),this.hasHorizontalScroll=this.options.scrollX&&this.maxScrollX<0,this.hasVerticalScroll=this.options.scrollY&&this.maxScrollY<0,this._reLayout()},resetPosition:function(a){var b=this.x,c=this.y;return a=a||0,!this.hasHorizontalScroll||this.x>0?b=0:this.x0?c=0:this.yb;b++)if(a[b].parentNode===this.wrapper){this.scroller=a[b];break}this.scrollerStyle=this.scroller&&this.scroller.style},refresh:function(){this._reInit(),this.reLayout(),a.trigger(this.scroller,"refresh",this),this.resetPosition()},scrollTo:function(a,b,c,d){var d=d||k.circular;this.isInTransition=c>0,this.isInTransition?(this._clearRequestAnimationFrame(),this._transitionTimingFunction(d.style),this._transitionTime(c),this.setTranslate(a,b)):this.setTranslate(a,b)},scrollToBottom:function(a,b){a=a||this.options.scrollTime,this.scrollTo(0,this.maxScrollY,a,b)},gotoPage:function(a){this._gotoPage(a)},destroy:function(){this._initEvent(!0),delete a.data[this.wrapper.getAttribute("data-scroll")],this.wrapper.setAttribute("data-scroll","")}}),m=function(b,d){this.wrapper="string"==typeof d.el?c.querySelector(d.el):d.el,this.wrapperStyle=this.wrapper.style,this.indicator=this.wrapper.children[0],this.indicatorStyle=this.indicator.style,this.scroller=b,this.options=a.extend({listenX:!0,listenY:!0,fade:!1,speedRatioX:0,speedRatioY:0},d),this.sizeRatioX=1,this.sizeRatioY=1,this.maxPosX=0,this.maxPosY=0,this.options.fade&&(this.wrapperStyle.webkitTransform=this.scroller.translateZ,this.wrapperStyle.webkitTransitionDuration=this.options.fixedBadAndorid&&a.os.isBadAndroid?"0.001s":"0ms",this.wrapperStyle.opacity="0")};m.prototype={handleEvent:function(a){},transitionTime:function(b){b=b||0,this.indicatorStyle.webkitTransitionDuration=b+"ms",this.scroller.options.fixedBadAndorid&&!b&&a.os.isBadAndroid&&(this.indicatorStyle.webkitTransitionDuration="0.001s")},transitionTimingFunction:function(a){this.indicatorStyle.webkitTransitionTimingFunction=a},refresh:function(){this.transitionTime(),this.options.listenX&&!this.options.listenY?this.indicatorStyle.display=this.scroller.hasHorizontalScroll?"block":"none":this.options.listenY&&!this.options.listenX?this.indicatorStyle.display=this.scroller.hasVerticalScroll?"block":"none":this.indicatorStyle.display=this.scroller.hasHorizontalScroll||this.scroller.hasVerticalScroll?"block":"none",this.wrapper.offsetHeight,this.options.listenX&&(this.wrapperWidth=this.wrapper.clientWidth,this.indicatorWidth=Math.max(Math.round(this.wrapperWidth*this.wrapperWidth/(this.scroller.scrollerWidth||this.wrapperWidth||1)),8),this.indicatorStyle.width=this.indicatorWidth+"px",this.maxPosX=this.wrapperWidth-this.indicatorWidth,this.minBoundaryX=0,this.maxBoundaryX=this.maxPosX,this.sizeRatioX=this.options.speedRatioX||this.scroller.maxScrollX&&this.maxPosX/this.scroller.maxScrollX),this.options.listenY&&(this.wrapperHeight=this.wrapper.clientHeight,this.indicatorHeight=Math.max(Math.round(this.wrapperHeight*this.wrapperHeight/(this.scroller.scrollerHeight||this.wrapperHeight||1)),8),this.indicatorStyle.height=this.indicatorHeight+"px",this.maxPosY=this.wrapperHeight-this.indicatorHeight,this.minBoundaryY=0,this.maxBoundaryY=this.maxPosY,this.sizeRatioY=this.options.speedRatioY||this.scroller.maxScrollY&&this.maxPosY/this.scroller.maxScrollY),this.updatePosition()},updatePosition:function(){var a=this.options.listenX&&Math.round(this.sizeRatioX*this.scroller.x)||0,b=this.options.listenY&&Math.round(this.sizeRatioY*this.scroller.y)||0;athis.maxBoundaryX?(this.width=Math.max(this.indicatorWidth-(a-this.maxPosX),8),this.indicatorStyle.width=this.width+"px",a=this.maxPosX+this.indicatorWidth-this.width):this.width!=this.indicatorWidth&&(this.width=this.indicatorWidth,this.indicatorStyle.width=this.width+"px"),bthis.maxBoundaryY?(this.height=Math.max(this.indicatorHeight-3*(b-this.maxPosY),8),this.indicatorStyle.height=this.height+"px",b=this.maxPosY+this.indicatorHeight-this.height):this.height!=this.indicatorHeight&&(this.height=this.indicatorHeight,this.indicatorStyle.height=this.height+"px"),this.x=a,this.y=b,this.indicatorStyle.webkitTransform=this.scroller._getTranslateStr(a,b)},fade:function(a,b){if(!b||this.visible){clearTimeout(this.fadeTimeout),this.fadeTimeout=null;var c=a?250:500,d=a?0:300;a=a?"1":"0",this.wrapperStyle.webkitTransitionDuration=c+"ms",this.fadeTimeout=setTimeout(function(a){this.wrapperStyle.opacity=a,this.visible=+a}.bind(this,a),d)}}},a.Scroll=l,a.fn.scroll=function(b){var c=[];return this.each(function(){var d=null,e=this,f=e.getAttribute("data-scroll");if(f)d=a.data[f];else{f=++a.uuid;var g=a.extend({},b);e.classList.contains("mui-segmented-control")&&(g=a.extend(g,{scrollY:!1,scrollX:!0,indicators:!1,snap:".mui-control-item"})),a.data[f]=d=new l(e,g),e.setAttribute("data-scroll",f)}c.push(d)}),1===c.length?c[0]:c}}(mui,window,document),function(a,b,c,d){var e="mui-visibility",f="mui-hidden",g=a.Scroll.extend(a.extend({handleEvent:function(a){this._super(a),"scrollbottom"===a.type&&a.target===this.scroller&&this._scrollbottom()},_scrollbottom:function(){this.pulldown||this.loading||(this.pulldown=!1,this._initPullupRefresh(),this.pullupLoading())},_start:function(a){a.touches&&a.touches.length&&a.touches[0].clientX>30&&a.target&&!this._preventDefaultException(a.target,this.options.preventDefaultException)&&a.preventDefault(),this.loading||(this.pulldown=this.pullPocket=this.pullCaption=this.pullLoading=!1),this._super(a)},_drag:function(a){this.y>=0&&this.disablePulldown&&"down"===a.detail.direction||(this._super(a),!this.pulldown&&!this.loading&&this.topPocket&&"down"===a.detail.direction&&this.y>=0&&this._initPulldownRefresh(),this.pulldown&&this._setCaption(this.y>this.options.down.height?this.options.down.contentover:this.options.down.contentdown))},_reLayout:function(){this.hasVerticalScroll=!0,this._super()},resetPosition:function(a){if(this.pulldown&&!this.disablePulldown){if(this.y>=this.options.down.height)return this.pulldownLoading(d,a||0),!0;!this.loading&&this.topPocket.classList.remove(e)}return this._super(a)},pulldownLoading:function(a,b){if("undefined"==typeof a&&(a=this.options.down.height),this.scrollTo(0,a,b,this.options.bounceEasing),!this.loading){this._initPulldownRefresh(),this._setCaption(this.options.down.contentrefresh),this.loading=!0,this.indicators.map(function(a){a.fade(0)});var c=this.options.down.callback;c&&c.call(this)}},endPulldownToRefresh:function(){var a=this;a.topPocket&&a.loading&&this.pulldown&&(a.scrollTo(0,0,a.options.bounceTime,a.options.bounceEasing),a.loading=!1,a._setCaption(a.options.down.contentdown,!0),setTimeout(function(){a.loading||a.topPocket.classList.remove(e)},350))},pullupLoading:function(a,b,c){b=b||0,this.scrollTo(b,this.maxScrollY,c,this.options.bounceEasing),this.loading||(this._initPullupRefresh(),this._setCaption(this.options.up.contentrefresh),this.indicators.map(function(a){a.fade(0)}),this.loading=!0,a=a||this.options.up.callback,a&&a.call(this))},endPullupToRefresh:function(a){var b=this;b.bottomPocket&&(b.loading=!1,a?(this.finished=!0,b._setCaption(b.options.up.contentnomore),b.wrapper.removeEventListener("scrollbottom",b)):(b._setCaption(b.options.up.contentdown),b.loading||b.bottomPocket.classList.remove(e)))},disablePullupToRefresh:function(){this._initPullupRefresh(),this.bottomPocket.className="mui-pull-bottom-pocket "+f,this.wrapper.removeEventListener("scrollbottom",this)},disablePulldownToRefresh:function(){this._initPulldownRefresh(),this.topPocket.className="mui-pull-top-pocket "+f,this.disablePulldown=!0},enablePulldownToRefresh:function(){this._initPulldownRefresh(),this.topPocket.classList.remove(f),this._setCaption(this.options.down.contentdown),this.disablePulldown=!1},enablePullupToRefresh:function(){this._initPullupRefresh(),this.bottomPocket.classList.remove(f), +this._setCaption(this.options.up.contentdown),this.wrapper.addEventListener("scrollbottom",this)},refresh:function(a){a&&this.finished&&(this.enablePullupToRefresh(),this.finished=!1),this._super()}},a.PullRefresh));a.fn.pullRefresh=function(b){if(1===this.length){var c=this[0],d=null,e=c.getAttribute("data-pullrefresh");return e||"undefined"!=typeof b?(b=b||{},e?d=a.data[e]:(e=++a.uuid,a.data[e]=d=new g(c,b),c.setAttribute("data-pullrefresh",e)),b.down&&b.down.auto?d.pulldownLoading(b.down.autoY):b.up&&b.up.auto&&d.pullupLoading(),d):!1}}}(mui,window,document),function(a,b){var c="mui-slider",d="mui-slider-group",e="mui-slider-loop",f="mui-action-previous",g="mui-action-next",h="mui-slider-item",i="mui-active",j="."+h,k=".mui-slider-progress-bar",l=a.Slider=a.Scroll.extend({init:function(b,c){this._super(b,a.extend(!0,{fingers:1,interval:0,scrollY:!1,scrollX:!0,indicators:!1,scrollTime:1e3,startX:!1,slideTime:0,snap:j},c)),this.options.startX},_init:function(){this._reInit(),this.scroller&&(this.scrollerStyle=this.scroller.style,this.progressBar=this.wrapper.querySelector(k),this.progressBar&&(this.progressBarWidth=this.progressBar.offsetWidth,this.progressBarStyle=this.progressBar.style),this._super(),this._initTimer())},_triggerSlide:function(){var b=this;b.isInTransition=!1;b.currentPage;b.slideNumber=b._fixedSlideNumber(),b.loop&&(0===b.slideNumber?b.setTranslate(b.pages[1][0].x,0):b.slideNumber===b.itemLength-3&&b.setTranslate(b.pages[b.itemLength-2][0].x,0)),b.lastSlideNumber!=b.slideNumber&&(b.lastSlideNumber=b.slideNumber,b.lastPage=b.currentPage,a.trigger(b.wrapper,"slide",{slideNumber:b.slideNumber})),b._initTimer()},_handleSlide:function(b){var c=this;if(b.target===c.wrapper){var d=b.detail;d.slideNumber=d.slideNumber||0;for(var e=c.scroller.querySelectorAll(j),f=[],g=0,h=e.length;h>g;g++){var k=e[g];k.parentNode===c.scroller&&f.push(k)}var l=d.slideNumber;if(c.loop&&(l+=1),!c.wrapper.classList.contains("mui-segmented-control"))for(var g=0,h=f.length;h>g;g++){var k=f[g];k.parentNode===c.scroller&&(g===l?k.classList.add(i):k.classList.remove(i))}var m=c.wrapper.querySelector(".mui-slider-indicator");if(m){m.getAttribute("data-scroll")&&a(m).scroll().gotoPage(d.slideNumber);var n=m.querySelectorAll(".mui-indicator");if(n.length>0)for(var g=0,h=n.length;h>g;g++)n[g].classList[g===d.slideNumber?"add":"remove"](i);else{var o=m.querySelector(".mui-number span");if(o)o.innerText=d.slideNumber+1;else for(var p=m.querySelectorAll(".mui-control-item"),g=0,h=p.length;h>g;g++)p[g].classList[g===d.slideNumber?"add":"remove"](i)}}b.stopPropagation()}},_handleTabShow:function(a){var b=this;b.gotoItem(a.detail.tabNumber||0,b.options.slideTime)},_handleIndicatorTap:function(a){var b=this,c=a.target;(c.classList.contains(f)||c.classList.contains(g))&&(b[c.classList.contains(f)?"prevItem":"nextItem"](),a.stopPropagation())},_initEvent:function(b){var c=this;c._super(b);var d=b?"removeEventListener":"addEventListener";c.wrapper[d]("slide",this),c.wrapper[d](a.eventName("shown","tab"),this)},handleEvent:function(b){switch(this._super(b),b.type){case"slide":this._handleSlide(b);break;case a.eventName("shown","tab"):~this.snaps.indexOf(b.target)&&this._handleTabShow(b)}},_scrollend:function(a){this._super(a),this._triggerSlide(a)},_drag:function(a){this._super(a);var c=a.detail.direction;if("left"===c||"right"===c){var d=this.wrapper.getAttribute("data-slidershowTimer");d&&b.clearTimeout(d),a.stopPropagation()}},_initTimer:function(){var a=this,c=a.wrapper,d=a.options.interval,e=c.getAttribute("data-slidershowTimer");e&&b.clearTimeout(e),d&&(e=b.setTimeout(function(){c&&((c.offsetWidth||c.offsetHeight)&&a.nextItem(!0),a._initTimer())},d),c.setAttribute("data-slidershowTimer",e))},_fixedSlideNumber:function(a){a=a||this.currentPage;var b=a.pageX;return this.loop&&(b=0===a.pageX?this.itemLength-3:a.pageX===this.itemLength-1?0:a.pageX-1),b},_reLayout:function(){this.hasHorizontalScroll=!0,this.loop=this.scroller.classList.contains(e),this._super()},_getScroll:function(){var b=a.parseTranslateMatrix(a.getStyles(this.scroller,"webkitTransform"));return b?b.x:0},_transitionEnd:function(b){b.target===this.scroller&&this.isInTransition&&(this._transitionTime(),this.isInTransition=!1,a.trigger(this.wrapper,"scrollend",this))},_flick:function(a){if(this.moved){var b=a.detail,c=b.direction;this._clearRequestAnimationFrame(),this.isInTransition=!0,"flick"===a.type?(b.deltaTime<200&&(this.x=this._getPage(this.slideNumber+("right"===c?-1:1),!0).x),this.resetPosition(this.options.bounceTime)):"dragend"!==a.type||b.flick||this.resetPosition(this.options.bounceTime),a.stopPropagation()}},_initSnap:function(){if(this.scrollerWidth=this.itemLength*this.scrollerWidth,this.maxScrollX=Math.min(this.wrapperWidth-this.scrollerWidth,0),this._super(),this.currentPage.x)this.slideNumber=this._fixedSlideNumber(),this.lastSlideNumber="undefined"==typeof this.lastSlideNumber?this.slideNumber:this.lastSlideNumber;else{var a=this.pages[this.loop?1:0];if(a=a||this.pages[0],!a)return;this.currentPage=a[0],this.slideNumber=0,this.lastSlideNumber="undefined"==typeof this.lastSlideNumber?0:this.lastSlideNumber}this.options.startX=this.currentPage.x||0},_getSnapX:function(a){return Math.max(-a,this.maxScrollX)},_getPage:function(a,b){return this.loop?a>this.itemLength-(b?2:3)?(a=1,time=0):(b?-1:0)>a?(a=this.itemLength-2,time=0):a+=1:(b||(a>this.itemLength-1?(a=0,time=0):0>a&&(a=this.itemLength-1,time=0)),a=Math.min(Math.max(0,a),this.itemLength-1)),this.pages[a][0]},_gotoItem:function(b,c){this.currentPage=this._getPage(b,!0),this.scrollTo(this.currentPage.x,0,c,this.options.scrollEasing),0===c&&a.trigger(this.wrapper,"scrollend",this)},setTranslate:function(a,b){this._super(a,b);var c=this.progressBar;c&&(this.progressBarStyle.webkitTransform=this._getTranslateStr(-a*(this.progressBarWidth/this.wrapperWidth),0))},resetPosition:function(a){return a=a||0,this.x>0?this.x=0:this.xb;b++)if(a[b].parentNode===this.wrapper){this.scroller=a[b];break}this.scrollerStyle=this.scroller&&this.scroller.style,this.progressBar&&(this.progressBarWidth=this.progressBar.offsetWidth,this.progressBarStyle=this.progressBar.style)},refresh:function(b){b?(a.extend(this.options,b),this._super(),this._initTimer()):this._super()},destroy:function(){this._initEvent(!0),delete a.data[this.wrapper.getAttribute("data-slider")],this.wrapper.setAttribute("data-slider","")}});a.fn.slider=function(b){var d=null;return this.each(function(){var e=this;if(this.classList.contains(c)||(e=this.querySelector("."+c)),e&&e.querySelector(j)){var f=e.getAttribute("data-slider");f?(d=a.data[f],d&&b&&d.refresh(b)):(f=++a.uuid,a.data[f]=d=new l(e,b),e.setAttribute("data-slider",f))}}),d},a.ready(function(){a(".mui-slider").slider(),a(".mui-scroll-wrapper.mui-slider-indicator.mui-segmented-control").scroll({scrollY:!1,scrollX:!0,indicators:!1,snap:".mui-control-item"})})}(mui,window),function(a,b){a.os.plus&&a.plusReady(function(){if(window.__NWin_Enable__!==!1){var c="mui-plus-pullrefresh",d="mui-visibility",e="mui-hidden",f="mui-block",g="mui-pull-caption",h="mui-pull-caption-down",i="mui-pull-caption-refresh",j="mui-pull-caption-nomore",k=a.Class.extend({init:function(a,b){this.element=a,this.options=b,this.wrapper=this.scroller=a,this._init(),this._initPulldownRefreshEvent()},_init:function(){var a=this;window.addEventListener("dragup",a),b.addEventListener("plusscrollbottom",a),a.scrollInterval=window.setInterval(function(){a.isScroll&&!a.loading&&window.pageYOffset+window.innerHeight+10>=b.documentElement.scrollHeight&&(a.isScroll=!1,a.bottomPocket&&a.pullupLoading())},100)},_initPulldownRefreshEvent:function(){var b=this;a.plusReady(function(){if("circle"==b.options.down.style)b.options.webview=plus.webview.currentWebview(),b.options.webview.setPullToRefresh({support:!0,color:b.options.down.color||"#2BD009",height:b.options.down.height||"50px",range:b.options.down.range||"100px",style:"circle",offset:b.options.down.offset||"0px"},function(){b.options.down.callback()});else if(b.topPocket&&b.options.webviewId){var a=plus.webview.getWebviewById(b.options.webviewId);if(!a)return;b.options.webview=a;var c=b.options.down,d=c.height;a.addEventListener("close",function(){var a=b.options.webviewId&&b.options.webviewId.replace(/\//g,"_");b.element.removeAttribute("data-pullrefresh-plus-"+a)}),a.addEventListener("dragBounce",function(d){switch(b.pulldown?b.pullPocket.classList.add(f):b._initPulldownRefresh(),d.status){case"beforeChangeOffset":b._setCaption(c.contentdown);break;case"afterChangeOffset":b._setCaption(c.contentover);break;case"dragEndAfterChangeOffset":a.evalJS("window.mui&&mui.options.pullRefresh.down.callback()"),b._setCaption(c.contentrefresh)}},!1),a.setBounce({position:{top:2*d+"px"},changeoffset:{top:d+"px"}})}})},handleEvent:function(a){var b=this;b.stopped||(b.isScroll=!1,("dragup"===a.type||"plusscrollbottom"===a.type)&&(b.isScroll=!0,setTimeout(function(){b.isScroll=!1},1e3)))}}).extend(a.extend({setStopped:function(a){this.stopped=!!a,this.stopped?(this.disablePullupToRefresh(),this.disablePulldownToRefresh()):(this.enablePullupToRefresh(),this.enablePulldownToRefresh())},beginPulldown:function(){var b=this;a.plusReady(function(){setTimeout(function(){if("circle"==b.options.down.style)plus.webview.currentWebview().beginPullToRefresh();else{var a=b.options.webview;a&&a.setBounce({offset:{top:b.options.down.height+"px"}})}},15)}.bind(this))},pulldownLoading:function(){this.beginPulldown()},_pulldownLoading:function(){var b=this;a.plusReady(function(){var a=plus.webview.getWebviewById(b.options.webviewId);a&&a.setBounce({offset:{top:b.options.down.height+"px"}})})},endPulldown:function(){var a=plus.webview.currentWebview();a.parent()&&"circle"!==this.options.down.style?a.parent().evalJS("mui&&mui(document.querySelector('.mui-content')).pullRefresh('"+JSON.stringify({webviewId:a.id})+"')._endPulldownToRefresh()"):a.endPullToRefresh()},endPulldownToRefresh:function(){this.endPulldown()},_endPulldownToRefresh:function(){var a=this;a.topPocket&&a.options.webview&&(a.options.webview.endPullToRefresh(),a.loading=!1,a._setCaption(a.options.down.contentdown,!0),setTimeout(function(){a.loading||a.topPocket.classList.remove(f)},350))},beginPullup:function(a){var b=this;b.isLoading||(b.isLoading=!0,b.pulldown!==!1?b._initPullupRefresh():this.pullPocket.classList.add(f),setTimeout(function(){b.pullLoading.classList.add(d),b.pullLoading.classList.remove(e),b.pullCaption.innerHTML="",b.pullCaption.className=g+" "+i,b.pullCaption.innerHTML=b.options.up.contentrefresh,a=a||b.options.up.callback,a&&a.call(b)},300))},pullupLoading:function(a){this.beginPullup(a)},endPullup:function(a){var c=this;c.pullLoading&&(c.pullLoading.classList.remove(d),c.pullLoading.classList.add(e),c.isLoading=!1,a?(c.finished=!0,c.pullCaption.className=g+" "+j,c.pullCaption.innerHTML=c.options.up.contentnomore,b.removeEventListener("plusscrollbottom",c),window.removeEventListener("dragup",c)):(c.pullCaption.className=g+" "+h,c.pullCaption.innerHTML=c.options.up.contentdown))},endPullupToRefresh:function(a){this.endPullup(a)},disablePulldownToRefresh:function(){var a=plus.webview.currentWebview();this.options.down.style&&"circle"==this.options.down.style?this.options.webview.setPullToRefresh({support:!1,style:"circle"}):(a.setStyle({bounce:"none"}),a.setBounce({position:{top:"none"}}))},enablePulldownToRefresh:function(){var a=this,b=plus.webview.currentWebview(),c=this.options.down.height;this.options.down.style&&"circle"==this.options.down.style?b.setPullToRefresh({support:!0,height:c||"50px",range:a.options.down.range||"100px",style:"circle",offset:a.options.down.offset||"0px"}):(b.setStyle({bounce:"vertical"}),b.setBounce({position:{top:2*c+"px"},changeoffset:{top:c+"px"}}))},disablePullupToRefresh:function(){this._initPullupRefresh(),this.bottomPocket.className="mui-pull-bottom-pocket "+e,window.removeEventListener("dragup",this)},enablePullupToRefresh:function(){this._initPullupRefresh(),this.bottomPocket.classList.remove(e),this.pullCaption.className=g+" "+h,this.pullCaption.innerHTML=this.options.up.contentdown,b.addEventListener("plusscrollbottom",this),window.addEventListener("dragup",this)},scrollTo:function(b,c,d){a.scrollTo(c,d)},scrollToBottom:function(c){a.scrollTo(b.documentElement.scrollHeight,c)},refresh:function(a){a&&this.finished&&(this.enablePullupToRefresh(),this.finished=!1)}},a.PullRefresh));a.fn.pullRefresh_native=function(d){var e;0===this.length?(e=b.createElement("div"),e.className="mui-content",b.body.appendChild(e)):e=this[0];var f=d;d=d||{},"string"==typeof d&&(d=a.parseJSON(d)),!d.webviewId&&(d.webviewId=plus.webview.currentWebview().id||plus.webview.currentWebview().getURL());var g=null,h=d.webviewId&&d.webviewId.replace(/\//g,"_"),i=e.getAttribute("data-pullrefresh-plus-"+h);return i||"undefined"!=typeof f?(i?g=a.data[i]:(i=++a.uuid,e.setAttribute("data-pullrefresh-plus-"+h,i),b.body.classList.add(c),a.data[i]=g=new k(e,d)),d.down&&d.down.auto?g.beginPulldown():d.up&&d.up.auto&&g.beginPullup(),g):!1}}})}(mui,document),function(a,b,c,d){var e="mui-off-canvas-left",f="mui-off-canvas-right",g="mui-off-canvas-backdrop",h="mui-off-canvas-wrap",i="mui-slide-in",j="mui-active",k="mui-transitioning",l=".mui-inner-wrap",m=a.Class.extend({init:function(b,d){this.wrapper=this.element=b,this.scroller=this.wrapper.querySelector(l),this.classList=this.wrapper.classList,this.scroller&&(this.options=a.extend(!0,{dragThresholdX:10,scale:.8,opacity:.1,preventDefaultException:{tagName:/^(INPUT|TEXTAREA|BUTTON|SELECT|VIDEO)$/}},d),c.body.classList.add("mui-fullscreen"),this.refresh(),this.initEvent())},_preventDefaultException:function(a,b){for(var c in b)if(b[c].test(a[c]))return!0;return!1},refresh:function(a){this.slideIn=this.classList.contains(i),this.scalable=this.classList.contains("mui-scalable")&&!this.slideIn,this.scroller=this.wrapper.querySelector(l),this.offCanvasLefts=this.wrapper.querySelectorAll("."+e),this.offCanvasRights=this.wrapper.querySelectorAll("."+f),a?a.classList.contains(e)?this.offCanvasLeft=a:a.classList.contains(f)&&(this.offCanvasRight=a):(this.offCanvasRight=this.wrapper.querySelector("."+f),this.offCanvasLeft=this.wrapper.querySelector("."+e)),this.offCanvasRightWidth=this.offCanvasLeftWidth=0,this.offCanvasLeftSlideIn=this.offCanvasRightSlideIn=!1,this.offCanvasRight&&(this.offCanvasRightWidth=this.offCanvasRight.offsetWidth,this.offCanvasRightSlideIn=this.slideIn&&this.offCanvasRight.parentNode===this.wrapper),this.offCanvasLeft&&(this.offCanvasLeftWidth=this.offCanvasLeft.offsetWidth,this.offCanvasLeftSlideIn=this.slideIn&&this.offCanvasLeft.parentNode===this.wrapper),this.backdrop=this.scroller.querySelector("."+g),this.options.dragThresholdX=this.options.dragThresholdX||10,this.visible=!1,this.startX=null,this.lastX=null,this.offsetX=null,this.lastTranslateX=null},handleEvent:function(b){switch(b.type){case a.EVENT_START:b.target&&!this._preventDefaultException(b.target,this.options.preventDefaultException)&&b.preventDefault();break;case"webkitTransitionEnd":b.target===this.scroller&&this._dispatchEvent();break;case"drag":var c=b.detail;this.startX?this.lastX=c.center.x:(this.startX=c.center.x,this.lastX=this.startX),!this.isDragging&&Math.abs(this.lastX-this.startX)>this.options.dragThresholdX&&("left"===c.direction||"right"===c.direction)&&(this.slideIn?(this.scroller=this.wrapper.querySelector(l),this.classList.contains(j)?this.offCanvasRight&&this.offCanvasRight.classList.contains(j)?(this.offCanvas=this.offCanvasRight,this.offCanvasWidth=this.offCanvasRightWidth):(this.offCanvas=this.offCanvasLeft,this.offCanvasWidth=this.offCanvasLeftWidth):"left"===c.direction&&this.offCanvasRight?(this.offCanvas=this.offCanvasRight,this.offCanvasWidth=this.offCanvasRightWidth):"right"===c.direction&&this.offCanvasLeft?(this.offCanvas=this.offCanvasLeft,this.offCanvasWidth=this.offCanvasLeftWidth):this.scroller=null):this.classList.contains(j)?"left"===c.direction?(this.offCanvas=this.offCanvasLeft,this.offCanvasWidth=this.offCanvasLeftWidth):(this.offCanvas=this.offCanvasRight,this.offCanvasWidth=this.offCanvasRightWidth):"right"===c.direction?(this.offCanvas=this.offCanvasLeft,this.offCanvasWidth=this.offCanvasLeftWidth):(this.offCanvas=this.offCanvasRight,this.offCanvasWidth=this.offCanvasRightWidth),this.offCanvas&&this.scroller&&(this.startX=this.lastX,this.isDragging=!0,a.gestures.session.lockDirection=!0,a.gestures.session.startDirection=c.direction,this.offCanvas.classList.remove(k),this.scroller.classList.remove(k),this.offsetX=this.getTranslateX(),this._initOffCanvasVisible())),this.isDragging&&(this.updateTranslate(this.offsetX+(this.lastX-this.startX)),c.gesture.preventDefault(),b.stopPropagation());break;case"dragend":if(this.isDragging){var c=b.detail,d=c.direction;this.isDragging=!1,this.offCanvas.classList.add(k),this.scroller.classList.add(k);var e=0,f=this.getTranslateX();if(this.slideIn){if(e=f>=0?this.offCanvasRightWidth&&f/this.offCanvasRightWidth||0:this.offCanvasLeftWidth&&f/this.offCanvasLeftWidth||0,"right"===d&&0>=e&&(e>=-.5||c.swipe)?this.openPercentage(100):"right"===d&&e>0&&(e>=.5||c.swipe)?this.openPercentage(0):"right"===d&&-.5>=e?this.openPercentage(0):"right"===d&&e>0&&.5>=e?this.openPercentage(-100):"left"===d&&e>=0&&(.5>=e||c.swipe)?this.openPercentage(-100):"left"===d&&0>e&&(-.5>=e||c.swipe)?this.openPercentage(0):"left"===d&&e>=.5?this.openPercentage(0):"left"===d&&e>=-.5&&0>e?this.openPercentage(100):this.openPercentage(0),1===e||-1===e||0===e)return void this._dispatchEvent()}else{if(e=f>=0?this.offCanvasLeftWidth&&f/this.offCanvasLeftWidth||0:this.offCanvasRightWidth&&f/this.offCanvasRightWidth||0,0===e)return this.openPercentage(0),void this._dispatchEvent();"right"===d&&e>=0&&(e>=.5||c.swipe)?this.openPercentage(100):"right"===d&&0>e&&(e>-.5||c.swipe)?this.openPercentage(0):"right"===d&&e>0&&.5>e?this.openPercentage(0):"right"===d&&.5>e?this.openPercentage(-100):"left"===d&&0>=e&&(-.5>=e||c.swipe)?this.openPercentage(-100):"left"===d&&e>0&&(.5>=e||c.swipe)?this.openPercentage(0):"left"===d&&0>e&&e>=-.5?this.openPercentage(0):"left"===d&&e>.5?this.openPercentage(100):this.openPercentage(0),(1===e||-1===e)&&this._dispatchEvent()}}}},_dispatchEvent:function(){this.classList.contains(j)?a.trigger(this.wrapper,"shown",this):a.trigger(this.wrapper,"hidden",this)},_initOffCanvasVisible:function(){this.visible||(this.visible=!0,this.offCanvasLeft&&(this.offCanvasLeft.style.visibility="visible"),this.offCanvasRight&&(this.offCanvasRight.style.visibility="visible"))},initEvent:function(){var b=this;b.backdrop&&b.backdrop.addEventListener("tap",function(a){b.close(),a.detail.gesture.preventDefault()}),this.classList.contains("mui-draggable")&&(this.wrapper.addEventListener(a.EVENT_START,this),this.wrapper.addEventListener("drag",this),this.wrapper.addEventListener("dragend",this)),this.wrapper.addEventListener("webkitTransitionEnd",this)},openPercentage:function(a){var b=a/100;this.slideIn?(this.offCanvasLeft&&a>=0?(b=0===b?-1:0,this.updateTranslate(this.offCanvasLeftWidth*b),this.offCanvasLeft.classList[0!==a?"add":"remove"](j)):this.offCanvasRight&&0>=a&&(b=0===b?1:0,this.updateTranslate(this.offCanvasRightWidth*b),this.offCanvasRight.classList[0!==a?"add":"remove"](j)),this.classList[0!==a?"add":"remove"](j)):(this.offCanvasLeft&&a>=0?(this.updateTranslate(this.offCanvasLeftWidth*b),this.offCanvasLeft.classList[0!==b?"add":"remove"](j)):this.offCanvasRight&&0>=a&&(this.updateTranslate(this.offCanvasRightWidth*b),this.offCanvasRight.classList[0!==b?"add":"remove"](j)),this.classList[0!==b?"add":"remove"](j))},updateTranslate:function(b){if(b!==this.lastTranslateX){if(this.slideIn){if(this.offCanvas.classList.contains(f)){if(0>b)return void this.setTranslateX(0);if(b>this.offCanvasRightWidth)return void this.setTranslateX(this.offCanvasRightWidth)}else{if(b>0)return void this.setTranslateX(0);if(b<-this.offCanvasLeftWidth)return void this.setTranslateX(-this.offCanvasLeftWidth)}this.setTranslateX(b)}else{if(!this.offCanvasLeft&&b>0||!this.offCanvasRight&&0>b)return void this.setTranslateX(0);if(this.leftShowing&&b>this.offCanvasLeftWidth)return void this.setTranslateX(this.offCanvasLeftWidth);if(this.rightShowing&&b<-this.offCanvasRightWidth)return void this.setTranslateX(-this.offCanvasRightWidth);this.setTranslateX(b),b>=0?(this.leftShowing=!0,this.rightShowing=!1,b>0&&(this.offCanvasLeft&&a.each(this.offCanvasLefts,function(a,b){b===this.offCanvasLeft?this.offCanvasLeft.style.zIndex=0:b.style.zIndex=-1}.bind(this)),this.offCanvasRight&&(this.offCanvasRight.style.zIndex=-1))):(this.rightShowing=!0,this.leftShowing=!1,this.offCanvasRight&&a.each(this.offCanvasRights,function(a,b){b===this.offCanvasRight?b.style.zIndex=0:b.style.zIndex=-1}.bind(this)),this.offCanvasLeft&&(this.offCanvasLeft.style.zIndex=-1))}this.lastTranslateX=b}},setTranslateX:a.animationFrame(function(a){if(this.scroller)if(this.scalable&&this.offCanvas.parentNode===this.wrapper){var b=Math.abs(a)/this.offCanvasWidth,c=1-(1-this.options.scale)*b,d=this.options.scale+(1-this.options.scale)*b,f=(1-(1-this.options.opacity)*b,this.options.opacity+(1-this.options.opacity)*b);this.offCanvas.classList.contains(e)?(this.offCanvas.style.webkitTransformOrigin="-100%",this.scroller.style.webkitTransformOrigin="left"):(this.offCanvas.style.webkitTransformOrigin="200%",this.scroller.style.webkitTransformOrigin="right"),this.offCanvas.style.opacity=f,this.offCanvas.style.webkitTransform="translate3d(0,0,0) scale("+d+")",this.scroller.style.webkitTransform="translate3d("+a+"px,0,0) scale("+c+")"}else this.slideIn?this.offCanvas.style.webkitTransform="translate3d("+a+"px,0,0)":this.scroller.style.webkitTransform="translate3d("+a+"px,0,0)"}),getTranslateX:function(){if(this.offCanvas){var b=this.slideIn?this.offCanvas:this.scroller,c=a.parseTranslateMatrix(a.getStyles(b,"webkitTransform"));return c&&c.x||0}return 0},isShown:function(a){var b=!1;if(this.slideIn)b="left"===a?this.classList.contains(j)&&this.wrapper.querySelector("."+e+"."+j):"right"===a?this.classList.contains(j)&&this.wrapper.querySelector("."+f+"."+j):this.classList.contains(j)&&(this.wrapper.querySelector("."+e+"."+j)||this.wrapper.querySelector("."+f+"."+j));else{var c=this.getTranslateX();b="right"===a?this.classList.contains(j)&&0>c:"left"===a?this.classList.contains(j)&&c>0:this.classList.contains(j)&&0!==c}return b},close:function(){this._initOffCanvasVisible(),this.offCanvas=this.wrapper.querySelector("."+f+"."+j)||this.wrapper.querySelector("."+e+"."+j),this.offCanvasWidth=this.offCanvas.offsetWidth,this.scroller&&(this.offCanvas.offsetHeight,this.offCanvas.classList.add(k),this.scroller.classList.add(k),this.openPercentage(0))},show:function(a){return this._initOffCanvasVisible(),this.isShown(a)?!1:(a||(a=this.wrapper.querySelector("."+f)?"right":"left"),"right"===a?(this.offCanvas=this.offCanvasRight,this.offCanvasWidth=this.offCanvasRightWidth):(this.offCanvas=this.offCanvasLeft,this.offCanvasWidth=this.offCanvasLeftWidth),this.scroller&&(this.offCanvas.offsetHeight,this.offCanvas.classList.add(k),this.scroller.classList.add(k),this.openPercentage("left"===a?100:-100)),!0)},toggle:function(a){var b=a;a&&a.classList&&(b=a.classList.contains(e)?"left":"right",this.refresh(a)),this.show(b)||this.close()}}),n=function(a){if(parentNode=a.parentNode,parentNode){if(parentNode.classList.contains(h))return parentNode;if(parentNode=parentNode.parentNode,parentNode.classList.contains(h))return parentNode}},o=function(b,d){if("A"===d.tagName&&d.hash){var e=c.getElementById(d.hash.replace("#",""));if(e){var f=n(e);if(f)return a.targets._container=f,e}}return!1};a.registerTarget({name:d,index:60,handle:o,target:!1,isReset:!1,isContinue:!0}),b.addEventListener("tap",function(b){if(a.targets.offcanvas)for(var d=b.target;d&&d!==c;d=d.parentNode)if("A"===d.tagName&&d.hash&&d.hash==="#"+a.targets.offcanvas.id){b.detail&&b.detail.gesture&&b.detail.gesture.preventDefault(),a(a.targets._container).offCanvas().toggle(a.targets.offcanvas),a.targets.offcanvas=a.targets._container=null;break}}),a.fn.offCanvas=function(b){var c=[];return this.each(function(){var d=null,e=this;e.classList.contains(h)||(e=n(e));var f=e.getAttribute("data-offCanvas");f?d=a.data[f]:(f=++a.uuid,a.data[f]=d=new m(e,b),e.setAttribute("data-offCanvas",f)),("show"===b||"close"===b||"toggle"===b)&&d.toggle(),c.push(d)}),1===c.length?c[0]:c},a.ready(function(){a(".mui-off-canvas-wrap").offCanvas()})}(mui,window,document,"offcanvas"),function(a,b){var c="mui-action",d=function(a,b){var d=b.className||"";return"string"!=typeof d&&(d=""),d&&~d.indexOf(c)?(b.classList.contains("mui-action-back")&&a.preventDefault(),b):!1};a.registerTarget({name:b,index:50,handle:d,target:!1,isContinue:!0})}(mui,"action"),function(a,b,c,d){var e="mui-modal",f=function(a,b){if("A"===b.tagName&&b.hash){var d=c.getElementById(b.hash.replace("#",""));if(d&&d.classList.contains(e))return d}return!1};a.registerTarget({name:d,index:50,handle:f,target:!1,isReset:!1,isContinue:!0}),b.addEventListener("tap",function(b){a.targets.modal&&(b.detail.gesture.preventDefault(),a.targets.modal.classList.toggle("mui-active"))})}(mui,window,document,"modal"),function(a,b,c,d){var e="mui-popover",f="mui-popover-arrow",g="mui-popover-action",h="mui-backdrop",i="mui-bar-popover",j="mui-bar-backdrop",k="mui-backdrop-action",l="mui-active",m="mui-bottom",n=function(b,d){if("A"===d.tagName&&d.hash){if(a.targets._popover=c.getElementById(d.hash.replace("#","")),a.targets._popover&&a.targets._popover.classList.contains(e))return d;a.targets._popover=null}return!1};a.registerTarget({name:d,index:60,handle:n,target:!1,isReset:!1,isContinue:!0});var o,p=function(b){this.removeEventListener("webkitTransitionEnd",p),this.addEventListener(a.EVENT_MOVE,a.preventDefault),a.trigger(this,"shown",this)},q=function(b){u(this,"none"),this.removeEventListener("webkitTransitionEnd",q),this.removeEventListener(a.EVENT_MOVE,a.preventDefault),a.trigger(this,"hidden",this)},r=function(){var b=c.createElement("div");return b.classList.add(h),b.addEventListener(a.EVENT_MOVE,a.preventDefault),b.addEventListener("tap",function(b){var c=a.targets._popover;c&&(c.addEventListener("webkitTransitionEnd",q),c.classList.remove(l),s(c))}),b}(),s=function(b){r.setAttribute("style","opacity:0"),a.targets.popover=a.targets._popover=null,o=a.later(function(){!b.classList.contains(l)&&r.parentNode&&r.parentNode===c.body&&c.body.removeChild(r)},350)};b.addEventListener("tap",function(b){if(a.targets.popover){for(var d=!1,e=b.target;e&&e!==c;e=e.parentNode)e===a.targets.popover&&(d=!0);d&&(b.detail.gesture.preventDefault(),t(a.targets._popover,a.targets.popover))}});var t=function(a,b,d){if(!("show"===d&&a.classList.contains(l)||"hide"===d&&!a.classList.contains(l))){o&&o.cancel(),a.removeEventListener("webkitTransitionEnd",p),a.removeEventListener("webkitTransitionEnd",q),r.classList.remove(j),r.classList.remove(k);var e=c.querySelector(".mui-popover.mui-active");if(e&&(e.addEventListener("webkitTransitionEnd",q),e.classList.remove(l),a===e))return void s(e);var f=!1;(a.classList.contains(i)||a.classList.contains(g))&&(a.classList.contains(g)?(f=!0,r.classList.add(k)):r.classList.add(j)),u(a,"block"),a.offsetHeight,a.classList.add(l),r.setAttribute("style",""),c.body.appendChild(r),v(a,b,f),r.classList.add(l),a.addEventListener("webkitTransitionEnd",p)}},u=function(a,b,c,d){var e=a.style;"undefined"!=typeof b&&(e.display=b),"undefined"!=typeof c&&(e.top=c+"px"),"undefined"!=typeof d&&(e.left=d+"px")},v=function(d,e,h){if(d&&e){if(h)return void u(d,"block");var i=b.innerWidth,j=b.innerHeight,k=d.offsetWidth,l=d.offsetHeight,n=e.offsetWidth,o=e.offsetHeight,p=a.offset(e),q=d.querySelector("."+f);q||(q=c.createElement("div"),q.className=f,d.appendChild(q));var r=q&&q.offsetWidth/2||0,s=0,t=0,v=0,w=0,x=d.classList.contains(g)?0:5,y="top";l+rt&&(t=x),t+k>i&&(t=i-k-x),q&&("top"===y?q.classList.add(m):q.classList.remove(m),v-=t,w=k/2-r/2+v,w=Math.max(Math.min(w,k-2*r-6),6),q.setAttribute("style","left:"+w+"px"))):"middle"===y&&q.setAttribute("style","display:none"),u(d,"block",s,t)}};a.createMask=function(b){var d=c.createElement("div");d.classList.add(h),d.addEventListener(a.EVENT_MOVE,a.preventDefault),d.addEventListener("tap",function(){e.close()});var e=[d];return e._show=!1,e.show=function(){return e._show=!0,d.setAttribute("style","opacity:1"),c.body.appendChild(d),e},e._remove=function(){return e._show&&(e._show=!1,d.setAttribute("style","opacity:0"),a.later(function(){var a=c.body;d.parentNode===a&&a.removeChild(d)},350)),e},e.close=function(){b?b()!==!1&&e._remove():e._remove()},e},a.fn.popover=function(){var b=arguments;this.each(function(){a.targets._popover=this,("show"===b[0]||"hide"===b[0]||"toggle"===b[0])&&t(this,b[1],b[0])})}}(mui,window,document,"popover"),function(a,b,c,d,e){var f="mui-control-item",g="mui-segmented-control",h="mui-segmented-control-vertical",i="mui-control-content",j="mui-bar-tab",k="mui-tab-item",l=function(a,b){return b.classList&&(b.classList.contains(f)||b.classList.contains(k))?(b.parentNode&&b.parentNode.classList&&b.parentNode.classList.contains(h)||a.preventDefault(),b):!1};a.registerTarget({name:d,index:80,handle:l,target:!1}),b.addEventListener("tap",function(b){var e=a.targets.tab;if(e){for(var h,l,m,n="mui-active",o="."+n,p=e.parentNode;p&&p!==c;p=p.parentNode){if(p.classList.contains(g)){h=p.querySelector(o+"."+f);break}p.classList.contains(j)&&(h=p.querySelector(o+"."+k))}h&&h.classList.remove(n);var q=e===h;if(e&&e.classList.add(n),e.hash&&(m=c.getElementById(e.hash.replace("#","")))){if(!m.classList.contains(i))return void e.classList[q?"remove":"add"](n);if(!q){var r=m.parentNode;l=r.querySelectorAll("."+i+o);for(var s=0;sthis.handleX/2||!this.initialState&&a>this.handleX/2)&&(b=!0),this.lastChanged!==b&&(b?(this.handle.style.webkitTransform="translate("+(this.initialState?0:this.handleX)+"px,0)",this.classList[this.initialState?"remove":"add"](f)):(this.handle.style.webkitTransform="translate("+(this.initialState?this.handleX:0)+"px,0)",this.classList[this.initialState?"add":"remove"](f)),this.lastChanged=b)}}),a.fn["switch"]=function(b){var c=[];return this.each(function(){var b=null,d=this.getAttribute("data-switch");d?b=a.data[d]:(d=++a.uuid,a.data[d]=new k(this),this.setAttribute("data-switch",d)),c.push(b)}),c.length>1?c:c[0]},a.ready(function(){a("."+d)["switch"]()})}(mui,window,"toggle"),function(a,b,c){function d(a,b){var c=b?"removeEventListener":"addEventListener";a[c]("drag",F),a[c]("dragend",F),a[c]("swiperight",F),a[c]("swipeleft",F),a[c]("flick",F)}var e,f,g="mui-active",h="mui-selected",i="mui-grid-view",j="mui-table-view-radio",k="mui-table-view-cell",l="mui-collapse-content",m="mui-disabled",n="mui-switch",o="mui-btn",p="mui-slider-handle",q="mui-slider-left",r="mui-slider-right",s="mui-transitioning",t="."+p,u="."+q,v="."+r,w="."+h,x="."+o,y=.8,z=isOpened=openedActions=progress=!1,A=sliderActionLeft=sliderActionRight=buttonsLeft=buttonsRight=sliderDirection=sliderRequestAnimationFrame=!1,B=translateX=lastTranslateX=sliderActionLeftWidth=sliderActionRightWidth=0,C=function(a){a?f?f.classList.add(g):e&&e.classList.add(g):(B&&B.cancel(),f?f.classList.remove(g):e&&e.classList.remove(g))},D=function(){if(translateX!==lastTranslateX){if(buttonsRight&&buttonsRight.length>0){progress=translateX/sliderActionRightWidth,translateX<-sliderActionRightWidth&&(translateX=-sliderActionRightWidth-Math.pow(-translateX-sliderActionRightWidth,y));for(var a=0,b=buttonsRight.length;b>a;a++){var c=buttonsRight[a];"undefined"==typeof c._buttonOffset&&(c._buttonOffset=c.offsetLeft),buttonOffset=c._buttonOffset,E(c,translateX-buttonOffset*(1+Math.max(progress,-1)))}}if(buttonsLeft&&buttonsLeft.length>0){progress=translateX/sliderActionLeftWidth,translateX>sliderActionLeftWidth&&(translateX=sliderActionLeftWidth+Math.pow(translateX-sliderActionLeftWidth,y));for(var a=0,b=buttonsLeft.length;b>a;a++){var d=buttonsLeft[a];"undefined"==typeof d._buttonOffset&&(d._buttonOffset=sliderActionLeftWidth-d.offsetLeft-d.offsetWidth),buttonOffset=d._buttonOffset,buttonsLeft.length>1&&(d.style.zIndex=buttonsLeft.length-a),E(d,translateX+buttonOffset*(1-Math.min(progress,1)))}}E(A,translateX),lastTranslateX=translateX}sliderRequestAnimationFrame=requestAnimationFrame(function(){D()})},E=function(a,b){a&&(a.style.webkitTransform="translate("+b+"px,0)")};b.addEventListener(a.EVENT_START,function(b){e&&C(!1),e=f=!1,z=isOpened=openedActions=!1;for(var g=b.target,h=!1;g&&g!==c;g=g.parentNode)if(g.classList){var p=g.classList;if(("INPUT"===g.tagName&&"radio"!==g.type&&"checkbox"!==g.type||"BUTTON"===g.tagName||p.contains(n)||p.contains(o)||p.contains(m))&&(h=!0),p.contains(l))break;if(p.contains(k)){e=g;var q=e.parentNode.querySelector(w);if(!e.parentNode.classList.contains(j)&&q&&q!==e)return a.swipeoutClose(q),void(e=h=!1);if(!e.parentNode.classList.contains(i)){var r=e.querySelector("a");r&&r.parentNode===e&&(f=r)}var s=e.querySelector(t);s&&(d(e),b.stopPropagation()),h||(s?(B&&B.cancel(),B=a.later(function(){C(!0)},100)):C(!0));break}}}),b.addEventListener(a.EVENT_MOVE,function(a){C(!1)});var F={handleEvent:function(a){switch(a.type){case"drag":this.drag(a);break;case"dragend":this.dragend(a);break;case"flick":this.flick(a);break;case"swiperight":this.swiperight(a);break;case"swipeleft":this.swipeleft(a)}},drag:function(a){if(e){z||(A=sliderActionLeft=sliderActionRight=buttonsLeft=buttonsRight=sliderDirection=sliderRequestAnimationFrame=!1,A=e.querySelector(t),A&&(sliderActionLeft=e.querySelector(u),sliderActionRight=e.querySelector(v),sliderActionLeft&&(sliderActionLeftWidth=sliderActionLeft.offsetWidth,buttonsLeft=sliderActionLeft.querySelectorAll(x)),sliderActionRight&&(sliderActionRightWidth=sliderActionRight.offsetWidth,buttonsRight=sliderActionRight.querySelectorAll(x)),e.classList.remove(s),isOpened=e.classList.contains(h),isOpened&&(openedActions=e.querySelector(u+w)?"left":"right")));var b=a.detail,c=b.direction,d=b.angle;if("left"===c&&(d>150||-150>d)?(buttonsRight||buttonsLeft&&isOpened)&&(z=!0):"right"===c&&d>-30&&30>d&&(buttonsLeft||buttonsRight&&isOpened)&&(z=!0),z){a.stopPropagation(),a.detail.gesture.preventDefault();var f=a.detail.deltaX;if(isOpened&&("right"===openedActions?f-=sliderActionRightWidth:f+=sliderActionLeftWidth),f>0&&!buttonsLeft||0>f&&!buttonsRight){if(!isOpened)return;f=0}0>f?sliderDirection="toLeft":f>0?sliderDirection="toRight":sliderDirection||(sliderDirection="toLeft"),sliderRequestAnimationFrame||D(),translateX=f}}},flick:function(a){z&&a.stopPropagation()},swipeleft:function(a){z&&a.stopPropagation()},swiperight:function(a){z&&a.stopPropagation()},dragend:function(b){if(z){b.stopPropagation(),sliderRequestAnimationFrame&&(cancelAnimationFrame(sliderRequestAnimationFrame),sliderRequestAnimationFrame=null);var c=b.detail;z=!1;var d="close",f="toLeft"===sliderDirection?sliderActionRightWidth:sliderActionLeftWidth,g=c.swipe||Math.abs(translateX)>f/2;g&&(isOpened?"left"===c.direction&&"right"===openedActions?d="open":"right"===c.direction&&"left"===openedActions&&(d="open"):d="open"),e.classList.add(s);var i;if("open"===d){var j="toLeft"===sliderDirection?-f:f;if(E(A,j),i="toLeft"===sliderDirection?buttonsRight:buttonsLeft,"undefined"!=typeof i){for(var k=null,l=0;l0&&buttonsLeft!==i)for(var l=0,n=buttonsLeft.length;n>l;l++){var o=buttonsLeft[l];m=o._buttonOffset,"undefined"==typeof m&&(o._buttonOffset=sliderActionLeftWidth-o.offsetLeft-o.offsetWidth),E(o,m)}if(buttonsRight&&buttonsRight.length>0&&buttonsRight!==i)for(var l=0,n=buttonsRight.length;n>l;l++){var p=buttonsRight[l];m=p._buttonOffset,"undefined"==typeof m&&(p._buttonOffset=p.offsetLeft),E(p,-m)}}}};a.swipeoutOpen=function(b,c){if(b){var d=b.classList;if(!d.contains(h)){c||(c=b.querySelector(v)?"right":"left");var e=b.querySelector(a.classSelector(".slider-"+c));if(e){e.classList.add(h),d.add(h),d.remove(s);for(var f,g=e.querySelectorAll(x),i=e.offsetWidth,j="right"===c?-i:i,k=g.length,l=0;k>l;l++)f=g[l],"right"===c?E(f,-f.offsetLeft):E(f,i-f.offsetWidth-f.offsetLeft);d.add(s);for(var l=0;k>l;l++)E(g[l],j);E(b.querySelector(t),j)}}}},a.swipeoutClose=function(b){if(b){var c=b.classList;if(c.contains(h)){var d=b.querySelector(v+w)?"right":"left",e=b.querySelector(a.classSelector(".slider-"+d));if(e){e.classList.remove(h),c.remove(h),c.add(s);var f,g=e.querySelectorAll(x),i=e.offsetWidth,j=g.length;E(b.querySelector(t),0);for(var k=0;j>k;k++)f=g[k],"right"===d?E(f,-f.offsetLeft):E(f,i-f.offsetWidth-f.offsetLeft)}}}},b.addEventListener(a.EVENT_END,function(a){e&&(C(!1),A&&d(e,!0))}),b.addEventListener(a.EVENT_CANCEL,function(a){e&&(C(!1),A&&d(e,!0))});var G=function(b){var c=b.target&&b.target.type||"";if("radio"!==c&&"checkbox"!==c){var d=e.classList;if(d.contains("mui-radio")){var f=e.querySelector("input[type=radio]");f&&(f.disabled||f.readOnly||(f.checked=!f.checked,a.trigger(f,"change")))}else if(d.contains("mui-checkbox")){var f=e.querySelector("input[type=checkbox]");f&&(f.disabled||f.readOnly||(f.checked=!f.checked,a.trigger(f,"change")))}}};b.addEventListener(a.EVENT_CLICK,function(a){e&&e.classList.contains("mui-collapse")&&a.preventDefault()}),b.addEventListener("doubletap",function(a){e&&G(a)});var H=/^(INPUT|TEXTAREA|BUTTON|SELECT)$/;b.addEventListener("tap",function(b){if(e){var c=!1,d=e.classList,f=e.parentNode;if(f&&f.classList.contains(j)){if(d.contains(h))return;var i=f.querySelector("li"+w);return i&&i.classList.remove(h),d.add(h),void a.trigger(e,"selected",{el:e})}if(d.contains("mui-collapse")&&!e.parentNode.classList.contains("mui-unfold")){if(H.test(b.target.tagName)||b.detail.gesture.preventDefault(),!d.contains(g)){var k=e.parentNode.querySelector(".mui-collapse.mui-active");k&&k.classList.remove(g),c=!0}d.toggle(g),c&&a.trigger(e,"expand")}else G(b)}})}(mui,window,document),function(a,b){a.alert=function(c,d,e,f){if(a.os.plus){if("undefined"==typeof c)return;"function"==typeof d?(f=d,d=null,e="确定"):"function"==typeof e&&(f=e,e=null),a.plusReady(function(){plus.nativeUI.alert(c,f,d,e)})}else b.alert(c)}}(mui,window),function(a,b){a.confirm=function(c,d,e,f){if(a.os.plus){if("undefined"==typeof c)return;"function"==typeof d?(f=d,d=null,e=null):"function"==typeof e&&(f=e,e=null),a.plusReady(function(){plus.nativeUI.confirm(c,f,d,e)})}else f(b.confirm(c)?{index:0}:{index:1})}}(mui,window),function(a,b){a.prompt=function(c,d,e,f,g){if(a.os.plus){if("undefined"==typeof message)return;"function"==typeof d?(g=d,d=null,e=null,f=null):"function"==typeof e?(g=e,e=null,f=null):"function"==typeof f&&(g=f,f=null),a.plusReady(function(){plus.nativeUI.prompt(c,g,e,d,f)})}else{var h=b.prompt(c);g(h?{index:0,value:h}:{index:1,value:""})}}}(mui,window),function(a,b){var c="mui-active";a.toast=function(b,d){var e={"long":3500,"short":2e3};if(d=a.extend({duration:"short"},d||{}),!a.os.plus||"div"===d.type){"number"==typeof d.duration?duration=d.duration>0?d.duration:e["short"]:duration=e[d.duration],duration||(duration=e["short"]);var f=document.createElement("div");return f.classList.add("mui-toast-container"),f.innerHTML='
'+b+"
",f.addEventListener("webkitTransitionEnd",function(){f.classList.contains(c)||(f.parentNode.removeChild(f),f=null)}),f.addEventListener("click",function(){f.parentNode.removeChild(f),f=null}),document.body.appendChild(f),f.offsetHeight,f.classList.add(c),setTimeout(function(){f&&f.classList.remove(c)},duration),{isVisible:function(){return!!f}}}a.plusReady(function(){plus.nativeUI.toast(b,{verticalAlign:"bottom",duration:d.duration})})}}(mui,window),function(a,b,c){var d="mui-popup",e="mui-popup-backdrop",f="mui-popup-in",g="mui-popup-out",h="mui-popup-inner",i="mui-popup-title",j="mui-popup-text",k="mui-popup-input",l="mui-popup-buttons",m="mui-popup-button",n="mui-popup-button-bold",e="mui-popup-backdrop",o="mui-active",p=[],q=function(){var b=c.createElement("div");return b.classList.add(e),b.addEventListener(a.EVENT_MOVE,a.preventDefault),b.addEventListener("webkitTransitionEnd",function(){this.classList.contains(o)||b.parentNode&&b.parentNode.removeChild(b)}),b}(),r=function(a){return'
'},s=function(a,b,c){return'
'+b+'
'+a.replace(/\r\n/g,"
").replace(/\n/g,"
")+"
"+(c||"")+"
"},t=function(a){for(var b=a.length,c=[],d=0;b>d;d++)c.push(''+a[d]+"");return'
'+c.join("")+"
"},u=function(b,e){var h=c.createElement("div");h.className=d,h.innerHTML=b;var i=function(){h.parentNode&&h.parentNode.removeChild(h),h=null};h.addEventListener(a.EVENT_MOVE,a.preventDefault),h.addEventListener("webkitTransitionEnd",function(a){h&&a.target===h&&h.classList.contains(g)&&i()}),h.style.display="block",c.body.appendChild(h),h.offsetHeight,h.classList.add(f),q.classList.contains(o)||(q.style.display="block",c.body.appendChild(q),q.offsetHeight,q.classList.add(o));var j=a.qsa("."+m,h),l=h.querySelector("."+k+" input"),n={element:h,close:function(a,b){if(h){var c=e&&e({index:a||0,value:l&&l.value||""});if(c===!1)return;b!==!1?(h.classList.remove(f),h.classList.add(g)):i(),p.pop(),p.length?p[p.length-1].show(b):q.classList.remove(o)}}},r=function(a){n.close(j.indexOf(a.target))};return a(h).on("tap","."+m,r),p.length&&p[p.length-1].hide(),p.push({close:n.close,show:function(a){h.style.display="block",h.offsetHeight,h.classList.add(f)},hide:function(){h.style.display="none",h.classList.remove(f)}}),n},v=function(b,c,d,e,f){return"undefined"!=typeof b?("function"==typeof c?(e=c,f=d,c=null,d=null):"function"==typeof d&&(f=e,e=d,d=null),a.os.plus&&"div"!==f?plus.nativeUI.alert(b,e,c||"提示",d||"确定"):u(s(b,c||"提示")+t([d||"确定"]),e)):void 0},w=function(b,c,d,e,f){return"undefined"!=typeof b?("function"==typeof c?(e=c,f=d,c=null,d=null):"function"==typeof d&&(f=e,e=d,d=null),a.os.plus&&"div"!==f?plus.nativeUI.confirm(b,e,c,d||["取消","确认"]):u(s(b,c||"提示")+t(d||["取消","确认"]),e)):void 0},x=function(b,c,d,e,f,g){return"undefined"!=typeof b?("function"==typeof c?(f=c,g=d,c=null,d=null,e=null):"function"==typeof d?(f=d,g=e,d=null,e=null):"function"==typeof e&&(g=f,f=e,e=null),a.os.plus&&"div"!==g?plus.nativeUI.prompt(b,f,d||"提示",c,e||["取消","确认"]):u(s(b,d||"提示",r(c))+t(e||["取消","确认"]),f)):void 0},y=function(){return p.length?(p[p.length-1].close(),!0):!1},z=function(){for(;p.length;)p[p.length-1].close()};a.closePopup=y,a.closePopups=z,a.alert=v,a.confirm=w,a.prompt=x}(mui,window,document),function(a,b){var c="mui-progressbar",d="mui-progressbar-in",e="mui-progressbar-out",f="mui-progressbar-infinite",g=".mui-progressbar",h=function(b){if(b=a(b||"body"),0!==b.length){if(b=b[0],b.classList.contains(c))return b;var d=b.querySelectorAll(g);if(d)for(var e=0,f=d.length;f>e;e++){var h=d[e];if(h.parentNode===b)return h}}},i=function(h,i,j){if("number"==typeof h&&(j=i,i=h,h="body"),h=a(h||"body"),0!==h.length){h=h[0];var l;if(h.classList.contains(c))l=h;else{var m=h.querySelectorAll(g+":not(."+e+")");if(m)for(var n=0,o=m.length;o>n;n++){var p=m[n];if(p.parentNode===h){l=p;break}}l?l.classList.add(d):(l=b.createElement("span"),l.className=c+" "+d+("undefined"!=typeof i?"":" "+f)+(j?" "+c+"-"+j:""),"undefined"!=typeof i&&(l.innerHTML=""),h.appendChild(l))}return i&&k(h,i),l}},j=function(a){var b=h(a);if(b){var c=b.classList;c.contains(d)&&!c.contains(e)&&(c.remove(d),c.add(e),b.addEventListener("webkitAnimationEnd",function(){b.parentNode&&b.parentNode.removeChild(b),b=null}))}},k=function(a,b,c){"number"==typeof a&&(c=b,b=a,a=!1);var d=h(a);if(d&&!d.classList.contains(f)){b&&(b=Math.min(Math.max(b,0),100)),d.offsetHeight;var e=d.querySelector("span");if(e){var g=e.style;g.webkitTransform="translate3d("+(-100+b)+"%,0,0)","undefined"!=typeof c?g.webkitTransitionDuration=c+"ms":g.webkitTransitionDuration=""}return d}};a.fn.progressbar=function(a){var b=[];return a=a||{},this.each(function(){var c=this,d=c.mui_plugin_progressbar;d?a&&d.setOptions(a):c.mui_plugin_progressbar=d={options:a,setOptions:function(a){this.options=a},show:function(){return i(c,this.options.progress,this.options.color)},setProgress:function(a){return k(c,a)},hide:function(){return j(c)}},b.push(d)}),1===b.length?b[0]:b}}(mui,document),function(a,b,c){var d="mui-icon",e="mui-icon-clear",f="mui-icon-speech",g="mui-icon-search",h="mui-icon-eye",i="mui-input-row",j="mui-placeholder",k="mui-tooltip",l="mui-hidden",m="mui-focusin",n="."+e,o="."+f,p="."+h,q="."+j,r="."+k,s=function(a){for(;a&&a!==c;a=a.parentNode)if(a.classList&&a.classList.contains(i))return a;return null},t=function(a,b){this.element=a,this.options=b||{actions:"clear"},~this.options.actions.indexOf("slider")?(this.sliderActionClass=k+" "+l,this.sliderActionSelector=r):(~this.options.actions.indexOf("clear")&&(this.clearActionClass=d+" "+e+" "+l,this.clearActionSelector=n),~this.options.actions.indexOf("speech")&&(this.speechActionClass=d+" "+f,this.speechActionSelector=o),~this.options.actions.indexOf("search")&&(this.searchActionClass=j,this.searchActionSelector=q),~this.options.actions.indexOf("password")&&(this.passwordActionClass=d+" "+h,this.passwordActionSelector=p)),this.init()};t.prototype.init=function(){this.initAction(),this.initElementEvent()},t.prototype.initAction=function(){var b=this,c=b.element.parentNode;c&&(b.sliderActionClass?b.sliderAction=b.createAction(c,b.sliderActionClass,b.sliderActionSelector):(b.searchActionClass&&(b.searchAction=b.createAction(c,b.searchActionClass,b.searchActionSelector),b.searchAction.addEventListener("tap",function(c){a.focus(b.element),c.stopPropagation()})),b.speechActionClass&&(b.speechAction=b.createAction(c,b.speechActionClass,b.speechActionSelector),b.speechAction.addEventListener("click",a.stopPropagation),b.speechAction.addEventListener("tap",function(a){b.speechActionClick(a)})),b.clearActionClass&&(b.clearAction=b.createAction(c,b.clearActionClass,b.clearActionSelector),b.clearAction.addEventListener("tap",function(a){b.clearActionClick(a)})),b.passwordActionClass&&(b.passwordAction=b.createAction(c,b.passwordActionClass,b.passwordActionSelector),b.passwordAction.addEventListener("tap",function(a){b.passwordActionClick(a)}))))},t.prototype.createAction=function(a,b,e){var f=a.querySelector(e);if(!f){var f=c.createElement("span");f.className=b,b===this.searchActionClass&&(f.innerHTML=''+this.element.getAttribute("placeholder")+"",this.element.setAttribute("placeholder",""),this.element.value.trim()&&a.classList.add("mui-active")),a.insertBefore(f,this.element.nextSibling)}return f},t.prototype.initElementEvent=function(){var b=this.element;if(this.sliderActionClass){var c=this.sliderAction,d=null,e=function(){c.classList.remove(l);var a=b.offsetLeft,e=b.offsetWidth-28,f=c.offsetWidth,g=Math.abs(b.max-b.min),h=e/g*Math.abs(b.value-b.min);c.style.left=14+a+h-f/2+"px",c.innerText=b.value,d&&clearTimeout(d),d=setTimeout(function(){c.classList.add(l)},1e3)};b.addEventListener("input",e),b.addEventListener("tap",e),b.addEventListener(a.EVENT_MOVE,function(a){a.stopPropagation()})}else{if(this.clearActionClass){var f=this.clearAction;if(!f)return;a.each(["keyup","change","input","focus","cut","paste"],function(a,c){!function(a){b.addEventListener(a,function(){f.classList[b.value.trim()?"remove":"add"](l)})}(c)}),b.addEventListener("blur",function(){f.classList.add(l)})}this.searchActionClass&&(b.addEventListener("focus",function(){b.parentNode.classList.add("mui-active")}),b.addEventListener("blur",function(){b.value.trim()||b.parentNode.classList.remove("mui-active")}))}},t.prototype.setPlaceholder=function(a){if(this.searchActionClass){var b=this.element.parentNode.querySelector(q);b&&(b.getElementsByTagName("span")[1].innerText=a)}else this.element.setAttribute("placeholder",a)},t.prototype.passwordActionClick=function(a){"text"===this.element.type?this.element.type="password":this.element.type="text",this.passwordAction.classList.toggle("mui-active"),a.preventDefault()},t.prototype.clearActionClick=function(b){var c=this;c.element.value="",a.focus(c.element),c.clearAction.classList.add(l),b.preventDefault()},t.prototype.speechActionClick=function(d){if(b.plus){var e=this,f=e.element.value;e.element.value="",c.body.classList.add(m),plus.speech.startRecognize({engine:"iFly"},function(b){e.element.value+=b,a.focus(e.element),plus.speech.stopRecognize(),a.trigger(e.element,"recognized",{value:e.element.value}),f!==e.element.value&&(a.trigger(e.element,"change"),a.trigger(e.element,"input"))},function(a){c.body.classList.remove(m)})}else alert("only for 5+");d.preventDefault()},a.fn.input=function(b){var c=[];return this.each(function(){var b=null,d=[],e=s(this.parentNode);if("range"===this.type&&e.classList.contains("mui-input-range"))d.push("slider");else{var f=this.classList;f.contains("mui-input-clear")&&d.push("clear"),a.os.android&&a.os.stream||!f.contains("mui-input-speech")||d.push("speech"),f.contains("mui-input-password")&&d.push("password"),"search"===this.type&&e.classList.contains("mui-search")&&d.push("search")}var g=this.getAttribute("data-input-"+d[0]);if(g)b=a.data[g];else{g=++a.uuid,b=a.data[g]=new t(this,{actions:d.join(",")});for(var h=0,i=d.length;i>h;h++)this.setAttribute("data-input-"+d[h],g)}c.push(b)}),1===c.length?c[0]:c},a.ready(function(){a(".mui-input-row input").input()})}(mui,window,document),function(a,b){var c="mui-active",d=/^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d*(?:\.\d+)?)\)$/,e=function(a){var b=a.match(d);return b&&5===b.length?[b[1],b[2],b[3],b[4]]:[]},f=function(c,d){if(this.element=c,this.options=a.extend({top:0,offset:150,duration:16,scrollby:b},d||{}),this.scrollByElem=this.options.scrollby||b,!this.scrollByElem)throw new Error("监听滚动的元素不存在");this.isNativeScroll=!1,this.scrollByElem===b?this.isNativeScroll=!0:~this.scrollByElem.className.indexOf("mui-scroll-wrapper")||(this.isNativeScroll=!0),this._style=this.element.style,this._bgColor=this._style.backgroundColor;var f=e(mui.getStyles(this.element,"backgroundColor"));if(!f.length)throw new Error("元素背景颜色必须为RGBA");this._R=f[0],this._G=f[1],this._B=f[2],this._A=parseFloat(f[3]),this.lastOpacity=this._A,this._bufferFn=a.buffer(this.handleScroll,this.options.duration,this),this.initEvent()};f.prototype.initEvent=function(){this.scrollByElem.addEventListener("scroll",this._bufferFn),this.isNativeScroll&&this.scrollByElem.addEventListener(a.EVENT_MOVE,this._bufferFn)},f.prototype.handleScroll=function(d){var e=b.scrollY;!this.isNativeScroll&&d&&d.detail&&(e=-d.detail.y);var f=(e-this.options.top)/this.options.offset+this._A;f=Math.min(Math.max(this._A,f),1),this._style.backgroundColor="rgba("+this._R+","+this._G+","+this._B+","+f+")",f>this._A?this.element.classList.add(c):this.element.classList.remove(c),this.lastOpacity!==f&&(a.trigger(this.element,"alpha",{alpha:f}),this.lastOpacity=f)},f.prototype.destory=function(){this.scrollByElem.removeEventListener("scroll",this._bufferFn),this.scrollByElem.removeEventListener(a.EVENT_MOVE,this._bufferFn),this.element.style.backgroundColor=this._bgColor,this.element.mui_plugin_transparent=null},a.fn.transparent=function(a){a=a||{};var c=[];return this.each(function(){var d=this.mui_plugin_transparent;if(!d){var e=this.getAttribute("data-top"),g=this.getAttribute("data-offset"),h=this.getAttribute("data-duration"),i=this.getAttribute("data-scrollby");null!==e&&"undefined"==typeof a.top&&(a.top=e),null!==g&&"undefined"==typeof a.offset&&(a.offset=g),null!==h&&"undefined"==typeof a.duration&&(a.duration=h),null!==i&&"undefined"==typeof a.scrollby&&(a.scrollby=document.querySelector(i)||b),d=this.mui_plugin_transparent=new f(this,a)}c.push(d)}),1===c.length?c[0]:c},a.ready(function(){a(".mui-bar-transparent").transparent()})}(mui,window),function(a){var b="ontouchstart"in document,c=b?"tap":"click",d="change",e="mui-numbox",f=".mui-btn-numbox-plus,.mui-numbox-btn-plus",g=".mui-btn-numbox-minus,.mui-numbox-btn-minus",h=".mui-input-numbox,.mui-numbox-input",i=a.Numbox=a.Class.extend({init:function(b,c){var d=this;if(!b)throw"构造 numbox 时缺少容器元素";d.holder=b,c=c||{},c.step=parseInt(c.step||1),d.options=c,d.input=a.qsa(h,d.holder)[0],d.plus=a.qsa(f,d.holder)[0],d.minus=a.qsa(g,d.holder)[0],d.checkValue(),d.initEvent()},initEvent:function(){var b=this;b.plus.addEventListener(c,function(c){var e=parseInt(b.input.value)+b.options.step;b.input.value=e.toString(),a.trigger(b.input,d,null)}),b.minus.addEventListener(c,function(c){var e=parseInt(b.input.value)-b.options.step;b.input.value=e.toString(),a.trigger(b.input,d,null)}),b.input.addEventListener(d,function(c){b.checkValue();var e=parseInt(b.input.value);a.trigger(b.holder,d,{value:e})})},getValue:function(){var a=this;return parseInt(a.input.value)},checkValue:function(){var a=this,b=a.input.value;if(null==b||""==b||isNaN(b))a.input.value=a.options.min||0,a.minus.disabled=null!=a.options.min;else{var b=parseInt(b);null!=a.options.max&&!isNaN(a.options.max)&&b>=parseInt(a.options.max)?(b=a.options.max,a.plus.disabled=!0):a.plus.disabled=!1,null!=a.options.min&&!isNaN(a.options.min)&&b<=parseInt(a.options.min)?(b=a.options.min,a.minus.disabled=!0):a.minus.disabled=!1,a.input.value=b}},setOption:function(a,b){var c=this;c.options[a]=b},setValue:function(a){this.input.value=a,this.checkValue()}});a.fn.numbox=function(a){return this.each(function(a,b){if(!b.numbox)if(d)b.numbox=new i(b,d);else{var c=b.getAttribute("data-numbox-options"),d=c?JSON.parse(c):{};d.step=b.getAttribute("data-numbox-step")||d.step,d.min=b.getAttribute("data-numbox-min")||d.min,d.max=b.getAttribute("data-numbox-max")||d.max,b.numbox=new i(b,d)}}),this[0]?this[0].numbox:null},a.ready(function(){a("."+e).numbox()})}(mui),function(a,b,c){var d="mui-disabled",e="reset",f="loading",g={loadingText:"Loading...",loadingIcon:"mui-spinner mui-spinner-white",loadingIconPosition:"left"},h=function(b,c){this.element=b,this.options=a.extend({},g,c),this.options.loadingText||(this.options.loadingText=g.loadingText),null===this.options.loadingIcon&&(this.options.loadingIcon="mui-spinner","rgb(255, 255, 255)"===a.getStyles(this.element,"color")&&(this.options.loadingIcon+=" mui-spinner-white")),this.isInput="INPUT"===this.element.tagName,this.resetHTML=this.isInput?this.element.value:this.element.innerHTML,this.state=""};h.prototype.loading=function(){this.setState(f)},h.prototype.reset=function(){this.setState(e)},h.prototype.setState=function(a){if(this.state===a)return!1;if(this.state=a,a===e)this.element.disabled=!1,this.element.classList.remove(d),this.setHtml(this.resetHTML);else if(a===f){this.element.disabled=!0,this.element.classList.add(d);var b=this.isInput?this.options.loadingText:""+this.options.loadingText+"";this.options.loadingIcon&&!this.isInput&&("right"===this.options.loadingIconPosition?b+=' ':b=' '+b),this.setHtml(b)}},h.prototype.setHtml=function(a){this.isInput?this.element.value=a:this.element.innerHTML=a},a.fn.button=function(a){var b=[];return this.each(function(){var c=this.mui_plugin_button;if(!c){var d=this.getAttribute("data-loading-text"),g=this.getAttribute("data-loading-icon"),i=this.getAttribute("data-loading-icon-position");this.mui_plugin_button=c=new h(this,{loadingText:d,loadingIcon:g,loadingIconPosition:i})}(a===f||a===e)&&c.setState(a),b.push(c)}),1===b.length?b[0]:b}}(mui,window,document); \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..45288b5 --- /dev/null +++ b/manifest.json @@ -0,0 +1,129 @@ +{ + "@platforms": ["android", "iPhone", "iPad"], + "id": "H54763406",/*应用的标识,创建应用时自动生成,勿手动修改*/ + "name": "mui-webapp-demo",/*应用名称,程序桌面图标名称*/ + "version": { + "name": "1.0.0",/*应用版本名称*/ + "code": "83" + }, + "description": "",/*应用描述信息*/ + "icons": { + "72": "icon.png" + }, + "launch_path": "index.html",/*应用的入口页面,默认为根目录下的index.html;支持网络地址,必须以http://或https://开头*/ + "developer": { + "name": "",/*开发者名称*/ + "email": "",/*开发者邮箱地址*/ + "url": "http://www.dcloud.io" + }, + "permissions": { + "Cache": { + "description": "管理应用缓存" + }, + "Console": { + "description": "跟踪调试输出日志" + }, + "Contacts": { + "description": "访问系统联系人信息" + }, + "Events": { + "description": "应用扩展事件" + }, + "Messaging": { + "description": "访问通讯能力" + }, + "Maps": { + "description": "管理地图插件" + }, + "Speech": { + "description": "管理语音识别插件" + } + }, + "plus": { + "splashscreen": { + "autoclose": true,/*是否自动关闭程序启动界面,true表示应用加载应用入口页面后自动关闭;false则需调plus.navigator.closeSplashscreen()关闭*/ + "waiting": true + }, + "runmode": "liberate",/*应用的首次启动运行模式,可取liberate或normal,liberate模式在第一次启动时将解压应用资源(Android平台File API才可正常访问_www目录)*/ + "signature": "Sk9JTiBVUyBtYWlsdG86aHIyMDEzQGRjbG91ZC5pbw==",/*可选,保留给应用签名,暂不使用*/ + "distribute": { + "apple": { + "appid": "",/*iOS应用标识,苹果开发网站申请的appid,如io.dcloud.HelloH5*/ + "mobileprovision": "",/*iOS应用打包配置文件*/ + "password": "",/*iOS应用打包个人证书导入密码*/ + "p12": "",/*iOS应用打包个人证书,打包配置文件关联的个人证书*/ + "devices": "universal",/*iOS应用支持的设备类型,可取值iphone/ipad/universal*/ + "frameworks": [] + }, + "google": { + "packagename": "",/*Android应用包名,如io.dcloud.HelloH5*/ + "keystore": "",/*Android应用打包使用的密钥库文件*/ + "password": "",/*Android应用打包使用密钥库中证书的密码*/ + "aliasname": "",/*Android应用打包使用密钥库中证书的别名*/ + "permissions": ["","","","","","","","","","","","","","","","","","","","","","","",""] + }, + "orientation": ["portrait-primary", "portrait-secondary"],/*应用支持的方向,portrait-primary:竖屏正方向;portrait-secondary:竖屏反方向;landscape-primary:横屏正方向;landscape-secondary:横屏反方向*/ + "icons": { + "ios": { + "prerendered": true, /*应用图标是否已经高亮处理,在iOS6及以下设备上有效*/ + "auto": "", /*应用图标,分辨率:512x512,用于自动生成各种尺寸程序图标*/ + "iphone": { + "normal": "",/*iPhone普通屏幕程序图标,分辨率:57x57*/ + "retina": "",/*iPhone高分屏程序图标,分辨率:114x114*/ + "retina7": "",/*iPhone iOS7高分屏程序图标,分辨率:120x120*/ + "spotlight-normal": "", /*iPhone Spotlight搜索程序图标,分辨率:29x29*/ + "spotlight-retina": "", /*iPhone高分屏Spotlight搜索程序图标,分辨率:58x58*/ + "spotlight-retina7": "",/*iPhone iOS7高分屏Spotlight搜索程序图标,分辨率:80x80*/ + "settings-normal": "", /*iPhone设置页面程序图标,分辨率:29x29*/ + "settings-retina": "" + }, + "ipad": { + "normal": "", /*iPad普通屏幕程序图标,分辨率:72x72*/ + "retina": "", /*iPad高分屏程序图标,分辨率:144x144*/ + "normal7": "", /*iPad iOS7程序图标,分辨率:76x76*/ + "retina7": "", /*iPad iOS7高分屏程序图标,分辨率:152x152*/ + "spotlight-normal": "", /*iPad Spotlight搜索程序图标,分辨率:50x50*/ + "spotlight-retina": "", /*iPad高分屏Spotlight搜索程序图标,分辨率:100x100*/ + "spotlight-normal7": "",/*iPad iOS7 Spotlight搜索程序图标,分辨率:40x40*/ + "spotlight-retina7": "",/*iPad iOS7高分屏Spotlight搜索程序图标,分辨率:80x80*/ + "settings-normal": "",/*iPad设置页面程序图标,分辨率:29x29*/ + "settings-retina": "" + } + }, + "android": { + "mdpi": "", /*普通屏程序图标,分辨率:48x48*/ + "ldpi": "", /*大屏程序图标,分辨率:48x48*/ + "hdpi": "", /*高分屏程序图标,分辨率:72x72*/ + "xhdpi": "",/*720P高分屏程序图标,分辨率:96x96*/ + "xxhdpi": "" + } + }, + "splashscreen": { + "ios": { + "iphone": { + "default": "", /*iPhone3启动图片选,分辨率:320x480*/ + "retina35": "",/*3.5英寸设备(iPhone4)启动图片,分辨率:640x960*/ + "retina40": "" + }, + "ipad": { + "portrait": "", /*iPad竖屏启动图片,分辨率:768x1004*/ + "portrait-retina": "",/*iPad高分屏竖屏图片,分辨率:1536x2008*/ + "landscape": "", /*iPad横屏启动图片,分辨率:1024x748*/ + "landscape-retina": "", /*iPad高分屏横屏启动图片,分辨率:2048x1496*/ + "portrait7": "", /*iPad iOS7竖屏启动图片,分辨率:768x1024*/ + "portrait-retina7": "",/*iPad iOS7高分屏竖屏图片,分辨率:1536x2048*/ + "landscape7": "", /*iPad iOS7横屏启动图片,分辨率:1024x768*/ + "landscape-retina7": "" + } + }, + "android": { + "mdpi": "", /*普通屏启动图片,分辨率:240x282*/ + "ldpi": "", /*大屏启动图片,分辨率:320x442*/ + "hdpi": "", /*高分屏启动图片,分辨率:480x762*/ + "xhdpi": "", /*720P高分屏启动图片,分辨率:720x1242*/ + "xxhdpi": "" + } + } + } + } +} \ No newline at end of file