diff --git a/src/css/var.scss b/src/css/var.scss index bfe91b5..ae2d183 100644 --- a/src/css/var.scss +++ b/src/css/var.scss @@ -1,14 +1,13 @@ $ct: #3fc2a7 #19b491 #16967a; $cg: #58d68d #2ecc71 #27ae60; $cpp: #ac61ce #9b59b6 #8e44ad; -$cb: #52a3de #2d8dd6 #2776b1; +$cb: #66b1ff #409eff #3a8ee6; $cr: #ff5061 #eb3b48 #ce3742; $co: #ffb618 #f39c12 #e67e22; $cp: #f3f5fb #e8ebf4 #dae1e9; -$cgr: #98acae #8a9b9c #748182; +$cgr: #aabac3 #90a3ae #7e909a; $cd: #62778d #526273 #425064; @mixin ts($c: all, $t: .2s, $m: ease-in-out){ transition:$c $t $m; -} - +} \ No newline at end of file diff --git a/src/index.html b/src/index.html index 5099b4f..fa85a24 100644 --- a/src/index.html +++ b/src/index.html @@ -3,11 +3,9 @@ - - diff --git a/src/js/app.js b/src/js/app.js index 5292776..7df4261 100644 --- a/src/js/app.js +++ b/src/js/app.js @@ -5,8 +5,8 @@ */ import '/lib/anot.js' -import layer from '/lib/layer/index.js' -import store from '/lib/store/index.js' +import '/lib/layer/next.js' +import '/lib/store/index.js' import AudioPlayer from '/lib/audio/index.js' import Lyrics from '/lib/lyrics/index.js' diff --git a/src/js/modules/profile.js b/src/js/modules/profile.js index 1c7157d..499e8df 100644 --- a/src/js/modules/profile.js +++ b/src/js/modules/profile.js @@ -6,7 +6,9 @@ 'use strict' -import '/lib/form/index.js' +import '/lib/form/input.js' +import '/lib/form/button.js' +import '/lib/form/select.js' const { remote: { app, dialog }, diff --git a/src/lib/css/elem-ui.css b/src/lib/css/elem-ui.css deleted file mode 100644 index a0f7d6a..0000000 --- a/src/lib/css/elem-ui.css +++ /dev/null @@ -1 +0,0 @@ -.do-ui-button{display:inline-block;height:16px;padding:2px 5px;line-height:12px;border:0;border-radius:2px;text-align:center;font-size:12px;background:#e8ebf4;color:#98acae;cursor:pointer;transition:all .2s ease-in-out}.do-ui-button.medium{min-width:80px;height:30px;padding:0 8px;line-height:30px;font-size:14px}.do-ui-button.large{min-width:130px;height:45px;padding:0 13px;line-height:45px;border-radius:3px;font-size:18px}.do-ui-button:hover{background:#f3f5fb}.do-ui-button:active{background:#dae1e9}.do-ui-button.teal{background:#19b491;color:#fff}.do-ui-button.teal:hover{background:#3fc2a7}.do-ui-button.teal:active{background:#16967a}.do-ui-button.green{background:#2ecc71;color:#fff}.do-ui-button.green:hover{background:#58d68d}.do-ui-button.green:active{background:#27ae60}.do-ui-button.blue{background:#2d8dd6;color:#fff}.do-ui-button.blue:hover{background:#52a3de}.do-ui-button.blue:active{background:#2776b1}.do-ui-button.purple{background:#9b59b6;color:#fff}.do-ui-button.purple:hover{background:#ac61ce}.do-ui-button.purple:active{background:#8e44ad}.do-ui-button.red{background:#eb3b48;color:#fff}.do-ui-button.red:hover{background:#ff5061}.do-ui-button.red:active{background:#ce3742}.do-ui-button.orange{background:#f39c12;color:#fff}.do-ui-button.orange:hover{background:#ffb618}.do-ui-button.orange:active{background:#e67e22}.do-ui-button.grey{background:#8a9b9c;color:#fff}.do-ui-button.grey:hover{background:#98acae}.do-ui-button.grey:active{background:#748182}.do-ui-button.dark{background:#526273;color:#fff}.do-ui-button.dark:hover{background:#62778d}.do-ui-button.dark:active{background:#425064}.do-ui-button.disabled{background:#f3f5fb;color:#dae1e9;cursor:not-allowed}.do-ui-input{width:auto;height:30px;padding:0 5px;background:#f3f5fb;border:2px solid transparent;border-radius:5px;font-size:13px;transition:all .2s ease-in-out;color:#526273}.do-ui-input:focus{background:#fff;border-color:#526273}.do-ui-input::placeholder{color:#98acae}.do-ui-input:disabled{border-color:transparent;background:#fff8ed;color:#98acae;cursor:not-allowed}.do-ui-textarea{width:auto;height:120px;padding:5px 8px;background:#f3f5fb;border:2px solid transparent;border-radius:5px;font-size:14px;transition:all .2s ease-in-out;color:#526273}.do-ui-textarea:focus{background:#fff;border-color:#526273}.do-ui-textarea:disabled{border-color:transparent;background:#fff8ed;color:#98acae;cursor:not-allowed}.do-ui-select{position:relative;display:inline-block;width:auto;min-width:100px;height:30px;color:#98acae}.do-ui-select select{width:100%;height:100%;padding:5px 13px;line-height:1;background:#f3f5fb;border-radius:5px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:2px solid transparent;outline:none;color:#526273;font-size:13px}.do-ui-select select:focus{background:#fff;border-color:#526273}.do-ui-select select::-ms-expand{display:none}.do-ui-select select:disabled{border-color:transparent;background:#fff8ed;color:#dae1e9}.do-ui-select .trigon{position:absolute;right:7px;top:0;width:15px;height:30px;padding:7px 0;font-size:12px;text-align:center}.do-ui-select .trigon i{float:left;width:15px;height:12px;line-height:12px}.do-ui-select .trigon i:nth-child(2){margin-top:-6px}.do-ui-radio,.do-ui-checkbox{display:inline-block;position:relative;width:auto;height:auto;padding:0 5px 0 35px;line-height:30px;color:#62778d;font-size:13px}.do-ui-radio>input,.do-ui-checkbox>input{position:absolute;left:7px;top:5px;width:20px;height:20px;border-radius:50%;border:1px solid #dae1e9;background:#fff;-webkit-appearance:none;-moz-appearance:none;appearance:none}.do-ui-radio>input:checked,.do-ui-checkbox>input:checked{box-shadow:0 0 5px #52a3de}.do-ui-radio>input:checked::after,.do-ui-checkbox>input:checked::after{display:block;width:12px;height:12px;margin:3px;border-radius:50%;background:#98acae;content:""}.do-ui-radio>input:disabled,.do-ui-checkbox>input:disabled{background:#fff8ed;box-shadow:none;cursor:not-allowed}.do-ui-radio>input:disabled:checked::after,.do-ui-checkbox>input:disabled:checked::after{background:#98acae}.do-ui-radio.disabled,.do-ui-checkbox.disabled{color:#dae1e9;cursor:not-allowed}.do-ui-checkbox>input{border-radius:3px}.do-ui-checkbox>input:checked::after{width:100%;height:100%;margin:0;line-height:18px;font-size:18px;text-align:center;color:#98acae;background:none;content:"✓"}.do-ui-checkbox>input:disabled:checked::after{color:#98acae;background:none}.do-ui-quote{display:inline-block;position:relative;min-height:60px;margin:10px 0;padding:15px 10px 5px 50px;border:1px solid #dae1e9;border-radius:10px;background:#f3f5fb;color:#98acae;font-size:14px;word-break:break-all}.do-ui-quote i{position:absolute;left:8px;top:0;font-size:30px;line-height:1.5;color:#dae1e9}.do-ui-warn,.do-ui-mark{display:inline-block;position:relative;min-height:40px;margin:5px 0;padding:5px 8px 5px 30px;border:1px solid #ffb618;border-radius:5px;background:#fffbed;color:#e67e22;font-size:14px;word-break:break-all}.do-ui-warn p,.do-ui-mark p{margin:0 !important}.do-ui-warn i,.do-ui-mark i{position:absolute;left:5px;top:2px;font-size:20px;line-height:1.5}.do-ui-mark{border-color:#19b491;color:#16967a;background:#edfbf8} diff --git a/src/lib/css/form.css b/src/lib/css/form.css deleted file mode 100644 index 6fb314c..0000000 --- a/src/lib/css/form.css +++ /dev/null @@ -1 +0,0 @@ -.do-button{overflow:hidden;position:relative;display:inline-block;width:auto;height:30px;padding:0 10px;line-height:30px;text-align:center;cursor:pointer;font-size:14px}.do-button::before{position:absolute;left:-50%;top:-50%;display:block;width:200%;height:200%;border-radius:50%;background:rgba(220,220,220,0.5);content:"";opacity:0;-webkit-transform:scale(0, 0);transform:scale(0, 0);transition:opacity 1.3s cubic-bezier(0.23, 1, 0.32, 1),-webkit-transform 1.3s cubic-bezier(0.23, 1, 0.32, 1);transition:opacity 1.3s cubic-bezier(0.23, 1, 0.32, 1),transform 1.3s cubic-bezier(0.23, 1, 0.32, 1);transition:opacity 1.3s cubic-bezier(0.23, 1, 0.32, 1),transform 1.3s cubic-bezier(0.23, 1, 0.32, 1),-webkit-transform 1.3s cubic-bezier(0.23, 1, 0.32, 1)}.do-button:hover::before{opacity:1;-webkit-transform:scale(1, 0.8);transform:scale(1, 0.8)}.do-button:active::before{background:rgba(0,0,0,0.1)}.do-button__text,.do-button__icon{position:relative;display:inline-block}.do-button__icon{font-size:20px;vertical-align:top}.do-button.small{height:20px;padding:0 5px;line-height:20px;font-size:12px}.do-button.small i{font-size:16px}.do-button.medium{min-width:100px;height:35px;line-height:35px;font-size:16px}.do-button.medium i{padding-right:5px;font-size:24px}.do-button.large{min-width:160px;height:50px;padding:0 13px;line-height:50px;font-size:18px}.do-button.large i{padding-right:10px;font-size:28px}.do-button.teal{color:#19b491}.do-button.green{color:#2ecc71}.do-button.blue{color:#2d8dd6}.do-button.purple{color:#9b59b6}.do-button.red{color:#eb3b48}.do-button.orange{color:#f39c12}.do-button.plain{color:#dae1e9}.do-button.grey{color:#8a9b9c}.do-button.dark{color:#526273}.do-button.disabled{color:#e8ebf4;cursor:not-allowed}.do-button.disabled::before{display:none}.do-radio{position:relative;display:inline-block;width:auto;height:30px;padding-right:10px;line-height:30px;text-align:center;cursor:default;font-size:14px}.do-radio__box{float:left;width:20px;height:20px;margin:5px;margin-left:0;border:1px solid #8a9b9c;border-radius:50%}.do-radio.checked .do-radio__box::after{display:block;width:14px;height:14px;margin:2px;border-radius:50%;content:""}.do-radio.teal .do-radio__box{border-color:#19b491}.do-radio.teal .do-radio__box::after{background:#19b491}.do-radio.teal{color:#19b491}.do-radio.green .do-radio__box{border-color:#2ecc71}.do-radio.green .do-radio__box::after{background:#2ecc71}.do-radio.green{color:#2ecc71}.do-radio.blue .do-radio__box{border-color:#2d8dd6}.do-radio.blue .do-radio__box::after{background:#2d8dd6}.do-radio.blue{color:#2d8dd6}.do-radio.purple .do-radio__box{border-color:#9b59b6}.do-radio.purple .do-radio__box::after{background:#9b59b6}.do-radio.purple{color:#9b59b6}.do-radio.red .do-radio__box{border-color:#eb3b48}.do-radio.red .do-radio__box::after{background:#eb3b48}.do-radio.red{color:#eb3b48}.do-radio.orange .do-radio__box{border-color:#f39c12}.do-radio.orange .do-radio__box::after{background:#f39c12}.do-radio.orange{color:#f39c12}.do-radio.plain .do-radio__box{border-color:#dae1e9}.do-radio.plain .do-radio__box::after{background:#dae1e9}.do-radio.plain{color:#dae1e9}.do-radio.grey .do-radio__box{border-color:#8a9b9c}.do-radio.grey .do-radio__box::after{background:#8a9b9c}.do-radio.grey{color:#8a9b9c}.do-radio.dark .do-radio__box{border-color:#526273}.do-radio.dark .do-radio__box::after{background:#526273}.do-radio.dark{color:#526273}.do-radio.disabled{color:#dae1e9;cursor:not-allowed;text-decoration:line-through}.do-radio.disabled.checked{color:#62778d}.do-radio.disabled .do-radio__box{border-color:#dae1e9}.do-radio.disabled .do-radio__box::after{background:#dae1e9}.do-switch{position:relative;display:inline-block;width:45px;height:30px;padding-right:10px;cursor:default}.do-switch__label{position:relative;display:inline-block;width:100%;height:14px;margin:7px 0;background:#dae1e9;border-radius:7px}.do-switch__dot{position:absolute;left:0;top:-3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,0.3)}.do-switch:hover .do-switch__dot{-webkit-transform:scale(1.1);transform:scale(1.1)}.do-switch.disabled{cursor:not-allowed}.do-switch.disabled:hover .do-switch__dot{-webkit-transform:scale(1);transform:scale(1)}.do-switch.checked .do-switch__dot{left:auto;right:0}.do-switch.teal.checked .do-switch__dot{background:#19b491}.do-switch.teal.checked .do-switch__label{background:#3fc2a7a0}.do-switch.green.checked .do-switch__dot{background:#2ecc71}.do-switch.green.checked .do-switch__label{background:#58d68da0}.do-switch.blue.checked .do-switch__dot{background:#2d8dd6}.do-switch.blue.checked .do-switch__label{background:#52a3dea0}.do-switch.purple.checked .do-switch__dot{background:#9b59b6}.do-switch.purple.checked .do-switch__label{background:#ac61cea0}.do-switch.red.checked .do-switch__dot{background:#eb3b48}.do-switch.red.checked .do-switch__label{background:#ff5061a0}.do-switch.orange.checked .do-switch__dot{background:#f39c12}.do-switch.orange.checked .do-switch__label{background:#ffb618a0}.do-switch.plain.checked .do-switch__dot{background:#dae1e9}.do-switch.plain.checked .do-switch__label{background:#e8ebf4}.do-switch.grey.checked .do-switch__dot{background:#8a9b9c}.do-switch.grey.checked .do-switch__label{background:#98acaea0}.do-switch.dark.checked .do-switch__dot{background:#526273}.do-switch.dark.checked .do-switch__label{background:#62778da0}.do-switch.disabled.checked .do-switch__dot{background:#fff}.do-switch.disabled .do-switch__label::before,.do-switch.disabled.checked .do-switch__label::before{display:block;position:absolute;top:5px;width:8px;height:4px;border-radius:2px;background:#fff;content:""}.do-switch.disabled .do-switch__label::before{right:5px}.do-switch.disabled.checked .do-switch__label::before{left:5px}.do-checkbox{position:relative;display:inline-block;width:auto;height:30px;padding-right:10px;line-height:30px;text-align:center;cursor:default;font-size:14px}.do-checkbox__box{float:left;width:18px;height:18px;margin:6px;margin-left:0;line-height:16px;border:1px solid #8a9b9c;border-radius:3px;font-size:16px;text-align:center}.do-checkbox.checked .do-checkbox__box{color:#fff;font-weight:bold}.do-checkbox.grey{color:#8a9b9c}.do-checkbox.grey .do-checkbox__box{border-color:#8a9b9c}.do-checkbox.grey.checked .do-checkbox__box{background:#8a9b9c}.do-checkbox.dark{color:#526273}.do-checkbox.dark .do-checkbox__box{border-color:#526273}.do-checkbox.dark.checked .do-checkbox__box{background:#526273}.do-checkbox.teal{color:#19b491}.do-checkbox.teal .do-checkbox__box{border-color:#19b491}.do-checkbox.teal.checked .do-checkbox__box{background:#19b491}.do-checkbox.green{color:#2ecc71}.do-checkbox.green .do-checkbox__box{border-color:#2ecc71}.do-checkbox.green.checked .do-checkbox__box{background:#2ecc71}.do-checkbox.blue{color:#2d8dd6}.do-checkbox.blue .do-checkbox__box{border-color:#2d8dd6}.do-checkbox.blue.checked .do-checkbox__box{background:#2d8dd6}.do-checkbox.purple{color:#9b59b6}.do-checkbox.purple .do-checkbox__box{border-color:#9b59b6}.do-checkbox.purple.checked .do-checkbox__box{background:#9b59b6}.do-checkbox.orange{color:#f39c12}.do-checkbox.orange .do-checkbox__box{border-color:#f39c12}.do-checkbox.orange.checked .do-checkbox__box{background:#f39c12}.do-checkbox.plain{color:#dae1e9}.do-checkbox.plain .do-checkbox__box{border-color:#dae1e9}.do-checkbox.plain.checked .do-checkbox__box{background:#dae1e9}.do-checkbox.red{color:#eb3b48}.do-checkbox.red .do-checkbox__box{border-color:#eb3b48}.do-checkbox.red.checked .do-checkbox__box{background:#eb3b48}.do-checkbox.disabled{cursor:not-allowed;color:#dae1e9;text-decoration:line-through}.do-checkbox.disabled .do-checkbox__box{border-color:#dae1e9}.do-checkbox.disabled.checked{color:#62778d}.do-checkbox.disabled.checked .do-checkbox__box{background:#dae1e9}.do-input{position:relative;display:inline-block;width:180px;height:30px;line-height:30px;border-bottom:1px solid #e8ebf4;cursor:default;font-size:14px}.do-input.icon-left{padding-left:30px}.do-input.icon-right{padding-right:30px}.do-input__holder{visibility:hidden;position:absolute;bottom:0;left:0;width:100%;height:30px;padding:0 5px;color:#dae1e9;transition:bottom .2s ease-in-out}.do-input__holder.visible{visibility:visible}.do-input__input{position:relative;width:100%;height:30px;padding:0 5px;border:0;background:none;font-size:14px;color:#526273}.do-input__icon{position:absolute;bottom:0;width:30px;height:30px;text-align:center;font-size:20px}.do-input::after{position:absolute;left:50%;bottom:-1px;width:0;height:2px;content:"";transition:left .15s linear,width .15s linear}.do-input.active .do-input__holder{bottom:20px}.do-input.active::after{left:0;width:100%}.do-input.icon-left .do-input__icon{left:0}.do-input.icon-right .do-input__icon{right:0}.do-input.icon-left .do-input__holder{padding-left:30px}.do-input.icon-right .do-input__holder{padding-right:30px}.do-input.grey{color:#8a9b9c}.do-input.grey::after{background:#98acae}.do-input.dark{color:#526273}.do-input.dark::after{background:#62778d}.do-input.teal{color:#19b491}.do-input.teal::after{background:#3fc2a7}.do-input.green{color:#2ecc71}.do-input.green::after{background:#58d68d}.do-input.red{color:#eb3b48}.do-input.red::after{background:#ff5061}.do-input.blue{color:#2d8dd6}.do-input.blue::after{background:#52a3de}.do-input.purple{color:#9b59b6}.do-input.purple::after{background:#ac61ce}.do-input.orange{color:#f39c12}.do-input.orange::after{background:#ffb618}.do-input.disabled{background:#fff8ed;color:#dae1e9}.do-input.disabled .do-input__input{cursor:not-allowed;color:#dae1e9} diff --git a/src/lib/css/layer-normal.css b/src/lib/css/layer-normal.css deleted file mode 100644 index 8c5438a..0000000 --- a/src/lib/css/layer-normal.css +++ /dev/null @@ -1 +0,0 @@ -.do-layer{display:flex;justify-content:center;align-items:center;width:auto;height:auto}.do-layer a{text-decoration:none}.do-layer .layer-box{flex:0 auto;position:absolute;z-index:65535;opacity:0}.do-layer .layer-box.shift{transition:all .5s ease-out}.do-layer .layer-box.scale{transform:scale(1.02);transition:transform .1s linear}.do-layer .layer-box.skin-normal{padding:15px 10px;border-radius:3px;color:#666;font-size:14px;box-shadow:0 5px 20px rgba(0,0,0,0.3)}.do-layer .layer-box.skin-normal .layer-title{width:100%;height:43px;padding:0 10px;line-height:43px;font-size:16px;color:#526273}.do-layer .layer-box.skin-normal .layer-content{position:relative;width:100%;height:auto;min-height:50px;word-break:break-all;word-wrap:break-word}.do-layer .layer-box.skin-normal .layer-content .prompt-value{width:100%;height:30px;padding:0 8px;border:1px solid #ddd;border-radius:3px}.do-layer .layer-box.skin-normal .layer-content .prompt-value.alert{border-color:#eb3b48}.do-layer .layer-box.skin-normal .layer-content .prompt-value:focus{border-color:#19b491}.do-layer .layer-box.skin-normal .layer-content .msg-box{line-height:30px}.do-layer .layer-box.skin-normal .layer-ctrl{width:100%;height:40px;padding:5px 0;line-height:30px;font-size:14px;color:#454545;text-align:right}.do-layer .layer-box.skin-normal .layer-ctrl a{overflow:hidden;position:relative;display:inline-block;width:auto;min-width:60px;height:30px;margin-left:5px;padding:0 10px;color:#19b491;text-align:center;cursor:pointer}.do-layer .layer-box.skin-normal .layer-ctrl a::before{position:absolute;left:-50%;top:-50%;z-index:-1;display:block;width:200%;height:200%;border-radius:50%;background:#f3f5fb;content:"";opacity:0;transform:scale(0, 0);transition:opacity 1.3s cubic-bezier(0.23, 1, 0.32, 1),transform 1.3s cubic-bezier(0.23, 1, 0.32, 1)}.do-layer .layer-box.skin-normal .layer-ctrl a:hover::before{opacity:1;transform:scale(1, 0.8)}.do-layer .layer-box.skin-normal .layer-ctrl a:active{background:#e8ebf4}.do-layer .layer-box.type-1,.do-layer .layer-box.type-2,.do-layer .layer-box.type-3{max-width:600px;min-width:300px}.do-layer .layer-box.type-1 .layer-content,.do-layer .layer-box.type-2 .layer-content,.do-layer .layer-box.type-3 .layer-content{padding:10px}.do-layer .layer-box.type-4{padding:0}.do-layer .layer-box.type-4 .frame-box{display:block;width:100%;height:100%;margin:0;padding:0;border:0;resize:none}.do-layer .layer-box.type-5{visibility:hidden;position:fixed;z-index:65534;min-width:75px;max-width:600px;padding:10px;line-height:1.5;color:#fff;background:rgba(0,0,0,0.5);box-shadow:none}.do-layer .layer-box.type-5 i.arrow{position:absolute;width:0;height:0;border:6px solid transparent;content:""}.do-layer .layer-box.type-5 i.offset-top{left:5px;bottom:-14px;border-top:8px solid rgba(0,0,0,0.5)}.do-layer .layer-box.type-5 i.offset-bottom{left:5px;top:-14px;border-bottom:8px solid rgba(0,0,0,0.5)}.do-layer .layer-box.type-5 i.offset-top-left{right:5px;bottom:-14px;border-top:8px solid rgba(0,0,0,0.5)}.do-layer .layer-box.type-5 i.offset-bottom-left{right:5px;top:-14px;border-bottom:8px solid rgba(0,0,0,0.5)}.do-layer .layer-box.type-5 .layer-content{min-height:20px;margin:0}.do-layer .layer-box.type-6{z-index:65539;box-shadow:none;background:transparent}.do-layer .layer-box.type-6 .layer-content{display:flex;justify-content:center;align-items:center}.do-layer .layer-box.type-toast{position:fixed;min-width:10px;padding:0;background:transparent}.do-layer .layer-box.type-toast .layer-content{min-height:40px;height:40px}.do-layer .layer-box.type-toast .toast-box{display:inline-block;position:relative;min-height:40px;padding:5px 12px 5px 50px;line-height:28px;border-radius:3px;word-break:break-all}.do-layer .layer-box.type-toast .toast-box.style-info{border:1px solid #19b491;background:#edfbf8;color:#16967a}.do-layer .layer-box.type-toast .toast-box.style-warn{border:1px solid #f39c12;background:#fffbed;color:#e67e22}.do-layer .layer-box.type-toast .toast-box.style-deny{border:1px solid #eb3b48;background:#fffbed;color:#ce3742}.do-layer .layer-box.type-toast .toast-box>i{position:absolute;left:12px;top:5px;line-height:28px;font-size:26px}.do-layer .layer-box .loading{position:relative;width:100px;height:100px;margin:auto}.do-layer .layer-box .loading .dot-box{position:absolute;display:block}.do-layer .layer-box .loading.style-1 .dot-box{width:70%;height:70%;margin:15%;line-height:70px;font-size:70px;text-align:center;animation:circle .8s infinite linear}.do-layer .layer-box .loading.style-1 .dot-box i{display:block;width:100%;height:100%}.do-layer .layer-box .loading.style-2{height:40px}.do-layer .layer-box .loading.style-2 .dot-box{display:flex;justify-content:center;width:100%;height:100%}.do-layer .layer-box .loading.style-2 .dot-box i{float:left;display:block;width:6px;height:100%;margin:0 3px;background:#16967a;animation:bounce 1s infinite ease-in-out;transform:scaleY(0.6)}.do-layer .layer-box .loading.style-2 .dot-box i:nth-child(2){animation-delay:.1s}.do-layer .layer-box .loading.style-2 .dot-box i:nth-child(3){animation-delay:.2s}.do-layer .layer-box .loading.style-2 .dot-box i:nth-child(4){animation-delay:.3s}.do-layer .layer-box .loading.style-2 .dot-box i:nth-child(5){animation-delay:.4s}.do-layer .layer-box .loading.style-3{width:50px;height:50px}.do-layer .layer-box .loading.style-3 .dot-box{width:100%;height:100%}.do-layer .layer-box .loading.style-3 .dot-box i{position:absolute;display:block;width:100%;height:100%;animation:circle2 2s infinite ease-in-out;transform:rotate(45deg);opacity:.5}.do-layer .layer-box .loading.style-3 .dot-box i::before{display:block;width:8px;height:8px;background:#16967a;border-radius:50%;content:""}.do-layer .layer-box .loading.style-3 .dot-box i:nth-child(2){animation-delay:.1s}.do-layer .layer-box .loading.style-3 .dot-box i:nth-child(3){animation-delay:.2s}.do-layer .layer-box .loading.style-3 .dot-box i:nth-child(4){animation-delay:.3s}.do-layer .layer-box .loading.style-3 .dot-box i:nth-child(5){animation-delay:.4s}.do-layer .layer-box .loading.style-4{width:60px;height:60px}.do-layer .layer-box .loading.style-4 .dot-box i{float:left;display:block;width:20px;height:20px;background:#16967a;animation:grid 1.5s infinite linear}.do-layer .layer-box .loading.style-4 .dot-box i:nth-child(4),.do-layer .layer-box .loading.style-4 .dot-box i:nth-child(8){animation-delay:.2s}.do-layer .layer-box .loading.style-4 .dot-box i:nth-child(1),.do-layer .layer-box .loading.style-4 .dot-box i:nth-child(5),.do-layer .layer-box .loading.style-4 .dot-box i:nth-child(9){animation-delay:.3s}.do-layer .layer-box .loading.style-4 .dot-box i:nth-child(2),.do-layer .layer-box .loading.style-4 .dot-box i:nth-child(6){animation-delay:.4s}.do-layer .layer-box .loading.style-4 .dot-box i:nth-child(3){animation-delay:.5s}.do-layer.mask{position:fixed;z-index:65534;left:0;top:0;width:100%;height:100%;background:transparent}.do-layer.mask.shift{transition:all .5s ease-out}.do-layer.mask.inner{position:absolute}.do-layer:active{z-index:65536}.do-layer__tips{visibility:hidden;position:absolute;z-index:65534;min-width:75px;max-width:600px;padding:10px;line-height:1.5;border-radius:3px;font-size:14px;color:#fff;background:rgba(0,0,0,0.5)}.do-layer__tips i.arrow{position:absolute;width:0;height:0;border:6px solid transparent;content:""}.do-layer__tips i.offset-top{left:5px;bottom:-14px;border-top:8px solid rgba(0,0,0,0.5)}.do-layer__tips i.offset-bottom{left:5px;top:-14px;border-bottom:8px solid rgba(0,0,0,0.5)}.do-layer__tips i.offset-top-left{right:5px;bottom:-14px;border-top:8px solid rgba(0,0,0,0.5)}.do-layer__tips i.offset-bottom-left{right:5px;top:-14px;border-bottom:8px solid rgba(0,0,0,0.5)}.do-layer__tips .layer-content{min-height:20px;margin:0}@keyframes circle{to{transform:rotate(360deg)}}@keyframes circle2{70%,to{transform:rotate(405deg);opacity:1}}@keyframes bounce{25%{transform:scaleY(1)}50%{transform:scaleY(0.6)}}@keyframes grid{36%{transform:scale(0.1);opacity:.3}60%{transform:scale(1);opacity:1}}@media screen and (max-width: 480px){.do-layer .layer-box.type-1,.do-layer .layer-box.type-2,.do-layer .layer-box.type-3,.do-layer .layer-box.type-4,.do-layer .layer-box.type-7{width:90%}} diff --git a/src/lib/css/pager.css b/src/lib/css/pager.css deleted file mode 100644 index 41af290..0000000 --- a/src/lib/css/pager.css +++ /dev/null @@ -1 +0,0 @@ -.do-pager{display:block;height:auto;text-align:center;font-size:14px;color:#8a9b9c}.do-pager.mini{line-height:30px}.do-pager.mini .button,.do-pager.mini .page{min-width:30px;height:30px}.do-pager.medium{line-height:35px}.do-pager.medium .button,.do-pager.medium .page{min-width:35px;height:35px}.do-pager.large{line-height:40px}.do-pager.large .button,.do-pager.large .page{min-width:40px;height:40px}.do-pager .button,.do-pager .page{display:inline-block;border:0;color:#8a9b9c;text-decoration:none;cursor:pointer;vertical-align:top;font-size:14px;font-weight:100;-webkit-appearance:none;-moz-appearance:none;appearance:none}.do-pager .button{font-size:18px}.do-pager .curr,.do-pager .disabled{cursor:default}.do-pager.skin-1{width:100%}.do-pager.skin-1 .page,.do-pager.skin-1 .button,.do-pager.skin-1 .disabled,.do-pager.skin-1 .curr{padding:0 8px;margin:0 3px}.do-pager.skin-1 .curr{font-weight:bold;font-size:15px}.do-pager.skin-1 .page.disabled{min-width:0;padding:0;background:none;color:#8a9b9c}.do-pager.skin-1 .page.disabled:hover,.do-pager.skin-1 .page.disabled:active{background:none}.do-pager.skin-1 .page.curr{background:none;color:#8a9b9c}.do-pager.skin-1 .page.curr:hover,.do-pager.skin-1 .page.curr:active{background:none}.do-pager.skin-1 .button[disabled]{cursor:not-allowed}.do-pager.skin-1 .total-box,.do-pager.skin-1 .input-box{display:inline-block;padding:0 8px}.do-pager.skin-1 .input-box input{display:inline-block;width:40px;height:30px;padding:0 3px;font-size:14px;background:#fff;border:1px solid #ddd;text-align:center}.do-pager.skin-2{float:right;width:auto}.do-pager.skin-2 .page,.do-pager.skin-2 .button,.do-pager.skin-2 .disabled,.do-pager.skin-2 .curr{float:left;margin:0;padding:0 5px;color:#fff}.do-pager.skin-2 .page.disabled{display:none}.do-pager.skin-2 .button[disabled]{cursor:not-allowed}.do-pager.skin-2 .input-box{display:none}.do-pager.skin-2 .total-box{float:left;display:inline-block;padding:0 8px}.do-pager.plain .page,.do-pager.plain .button{background:#e8ebf4;color:#8a9b9c}.do-pager.plain .page:hover,.do-pager.plain .button:hover{background:#f3f5fb}.do-pager.plain .page:active,.do-pager.plain .button:active{background:#dae1e9}.do-pager.plain .button[disabled]{background:#e8ebf4}.do-pager.plain.skin-2 .curr{background:#dae1e9}.do-pager.grey .page,.do-pager.grey .button{background:#8a9b9c;color:#fff}.do-pager.grey .page:hover,.do-pager.grey .button:hover{background:#98acae}.do-pager.grey .page:active,.do-pager.grey .button:active{background:#748182}.do-pager.grey .button[disabled]{background:#8a9b9c}.do-pager.grey.skin-2 .curr{background:#748182}.do-pager.dark .page,.do-pager.dark .button{background:#526273;color:#fff}.do-pager.dark .page:hover,.do-pager.dark .button:hover{background:#526273}.do-pager.dark .page:active,.do-pager.dark .button:active{background:#425064}.do-pager.dark .button[disabled]{background:#526273}.do-pager.dark.skin-2 .curr{background:#425064}.do-pager.red .page,.do-pager.red .button{background:#eb3b48;color:#fff}.do-pager.red .page:hover,.do-pager.red .button:hover{background:#ff5061}.do-pager.red .page:active,.do-pager.red .button:active{background:#ce3742}.do-pager.red .button[disabled]{background:#eb3b48}.do-pager.red.skin-2 .curr{background:#ce3742}.do-pager.orange .page,.do-pager.orange .button{background:#f39c12;color:#fff}.do-pager.orange .page:hover,.do-pager.orange .button:hover{background:#ffb618}.do-pager.orange .page:active,.do-pager.orange .button:active{background:#e67e22}.do-pager.orange .button[disabled]{background:#f39c12}.do-pager.orange.skin-2 .curr{background:#e67e22}.do-pager.green .page,.do-pager.green .button{background:#2ecc71;color:#fff}.do-pager.green .page:hover,.do-pager.green .button:hover{background:#58d68d}.do-pager.green .page:active,.do-pager.green .button:active{background:#27ae60}.do-pager.green .button[disabled]{background:#2ecc71}.do-pager.green.skin-2 .curr{background:#27ae60}.do-pager.teal .page,.do-pager.teal .button{background:#19b491;color:#fff}.do-pager.teal .page:hover,.do-pager.teal .button:hover{background:#3fc2a7}.do-pager.teal .page:active,.do-pager.teal .button:active{background:#16967a}.do-pager.teal .button[disabled]{background:#19b491}.do-pager.teal.skin-2 .curr{background:#16967a}.do-pager.blue .page,.do-pager.blue .button{background:#2d8dd6;color:#fff}.do-pager.blue .page:hover,.do-pager.blue .button:hover{background:#52a3de}.do-pager.blue .page:active,.do-pager.blue .button:active{background:#2776b1}.do-pager.blue .button[disabled]{background:#2d8dd6}.do-pager.blue.skin-2 .curr{background:#2776b1}.do-pager.purple .page,.do-pager .button .page{background:#9b59b6;color:#fff}.do-pager.purple .page:hover,.do-pager .button .page:hover{background:#ac61ce}.do-pager.purple .page:active,.do-pager .button .page:active{background:#8e44ad}.do-pager.purple .button[disabled],.do-pager .button .button[disabled]{background:#9b59b6}.do-pager.purple.skin-2 .curr,.do-pager .button.skin-2 .curr{background:#8e44ad} diff --git a/src/lib/css/reset-basic.css b/src/lib/css/reset-basic.css index 5031c4d..4546277 100644 --- a/src/lib/css/reset-basic.css +++ b/src/lib/css/reset-basic.css @@ -1 +1,60 @@ -@font-face{font-family:"uifont";src:url("data:application/x-font-woff;charset=utf-8;base64,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") format("woff")}*{margin:0;padding:0;vertical-align:baseline;box-sizing:border-box}::before,::after{box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section,content{display:block}img{border:0;display:inline-block}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}a:focus,input,textarea,button:focus,input:focus,textarea:focus{outline:none}::-moz-focus-inner{border:none;outline:none}body{font-family:Helvetica, Arial,"WenQuanYi Micro Hei","PingFang SC","Hiragino Sans GB","Segoe UI", "Microsoft Yahei", sans-serif;-webkit-font-smoothing:antialiased;text-size-adjust:100%;-webkit-tap-highlight-color:transparent}code,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}[anot],[\:repeat],[\:if],[is-widget],slot{visibility:hidden}.do-fn-cl{*zoom:1}.do-fn-cl::after{content:".";display:block;height:0;clear:both;visibility:hidden;overflow:hidden}.do-fn-clear{clear:both;display:inline}.do-fn-show{display:block}.do-fn-hide{display:none}.do-fn-fl{float:left}.do-fn-fr{float:right}.do-fn-noselect{-webkit-touch-callout:none;-moz-user-select:none;user-select:none}.do-fn-noselect img,.do-fn-noselect a{-webkit-user-drag:none}.do-fn-ell{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.do-st-thin{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.do-st-hand{cursor:pointer}[class^="do-icon-"],[class*=" do-icon-"]{display:inline-block;font-family:"uifont" !important;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.do-icon-app1:before{content:"\e6cc"}.do-icon-apple:before{content:"\e6cd"}.do-icon-bad:before{content:"\e6ce"}.do-icon-android:before{content:"\e6cf"}.do-icon-app2:before{content:"\e6d0"}.do-icon-bell:before{content:"\e6d1"}.do-icon-calendar:before{content:"\e6d2"}.do-icon-book:before{content:"\e6d3"}.do-icon-camera:before{content:"\e6d4"}.do-icon-chart:before{content:"\e6d5"}.do-icon-close:before{content:"\e6d6"}.do-icon-chat:before{content:"\e6d7"}.do-icon-client:before{content:"\e6d8"}.do-icon-dbl-left:before{content:"\e6d9"}.do-icon-dbl-right:before{content:"\e6da"}.do-icon-deny:before{content:"\e6db"}.do-icon-download:before{content:"\e6dc"}.do-icon-edit:before{content:"\e6dd"}.do-icon-email:before{content:"\e6de"}.do-icon-face:before{content:"\e6df"}.do-icon-female:before{content:"\e6e0"}.do-icon-fire:before{content:"\e6e1"}.do-icon-donate:before{content:"\e6e2"}.do-icon-first:before{content:"\e6e3"}.do-icon-eye:before{content:"\e6e4"}.do-icon-floppy:before{content:"\e6e5"}.do-icon-fly:before{content:"\e6e6"}.do-icon-folder-close:before{content:"\e6e7"}.do-icon-folder-open:before{content:"\e6e8"}.do-icon-font:before{content:"\e6e9"}.do-icon-get:before{content:"\e6ea"}.do-icon-git:before{content:"\e6eb"}.do-icon-gift:before{content:"\e6ec"}.do-icon-github:before{content:"\e6ed"}.do-icon-good:before{content:"\e6ee"}.do-icon-google:before{content:"\e6ef"}.do-icon-headset:before{content:"\e6f0"}.do-icon-happy:before{content:"\e6f1"}.do-icon-help:before{content:"\e6f2"}.do-icon-home:before{content:"\e6f3"}.do-icon-icon-list:before{content:"\e6f4"}.do-icon-info:before{content:"\e6f5"}.do-icon-layout:before{content:"\e6f6"}.do-icon-left:before{content:"\e6f7"}.do-icon-link:before{content:"\e6f8"}.do-icon-list:before{content:"\e6f9"}.do-icon-live:before{content:"\e6fa"}.do-icon-loading:before{content:"\e6fb"}.do-icon-lock:before{content:"\e6fc"}.do-icon-linux:before{content:"\e6fd"}.do-icon-logout:before{content:"\e6fe"}.do-icon-maximize:before{content:"\e6ff"}.do-icon-maximized:before{content:"\e700"}.do-icon-male:before{content:"\e701"}.do-icon-menu-dot:before{content:"\e702"}.do-icon-menu-left:before{content:"\e703"}.do-icon-menu-right:before{content:"\e704"}.do-icon-minimize:before{content:"\e705"}.do-icon-mute:before{content:"\e706"}.do-icon-osx:before{content:"\e707"}.do-icon-phone:before{content:"\e708"}.do-icon-picture:before{content:"\e709"}.do-icon-pipe:before{content:"\e70a"}.do-icon-pin:before{content:"\e70b"}.do-icon-position:before{content:"\e70c"}.do-icon-plus:before{content:"\e70d"}.do-icon-plugin:before{content:"\e70e"}.do-icon-post:before{content:"\e70f"}.do-icon-qr:before{content:"\e710"}.do-icon-quote:before{content:"\e711"}.do-icon-right:before{content:"\e712"}.do-icon-sad:before{content:"\e713"}.do-icon-safe:before{content:"\e714"}.do-icon-search:before{content:"\e715"}.do-icon-second:before{content:"\e716"}.do-icon-setting:before{content:"\e717"}.do-icon-share:before{content:"\e718"}.do-icon-sign:before{content:"\e719"}.do-icon-star-full:before{content:"\e71a"}.do-icon-star:before{content:"\e71b"}.do-icon-tag:before{content:"\e71c"}.do-icon-talk:before{content:"\e71e"}.do-icon-third:before{content:"\e71f"}.do-icon-time:before{content:"\e720"}.do-icon-trigon-down:before{content:"\e721"}.do-icon-trash:before{content:"\e722"}.do-icon-track:before{content:"\e723"}.do-icon-trigon-up:before{content:"\e724"}.do-icon-txt:before{content:"\e725"}.do-icon-unmute:before{content:"\e726"}.do-icon-vip:before{content:"\e727"}.do-icon-windows:before{content:"\e728"}.do-icon-upload:before{content:"\e729"}.do-icon-warn:before{content:"\e72a"}.do-icon-user:before{content:"\e72b"}.do-icon-backward:before{content:"\e71d"} +@charset "UTF-8"; +/** + * + * @authors yutent (yutent@doui.cc) + * @date 2014-10-10 00:45:09 + * + * doui的CSS规范 + * + * 不能出现大写,以连字符风格命名 + * 表示状态的应该用do-st-*命名 + * 表示功能的应该用do-fn-*命名 + * 表示页面模块的应该用do-mod-modname 命名 + * 表示UI组件的应该用do-uiname命名, 它的子元素应该全部包在 .do-uiname这个根类下 + * 如 .do-layer .body { ... } + * + * 样式规则的出现顺序 + * 1 display float position overflow z-index 表示定位/布局的属性 + * 2 width height margin padding border 表示盒子模型的属性 + * 3 line-height font-size vertical-align text-align user-select outline ....排版相关的属性 + * 4 color background opacity cursor ...表示装饰相关的属性 + * 5 content list-style quotes ... 内容生成相关的属性 + * + */ + + +* {margin: 0;padding: 0;vertical-align: baseline;box-sizing:border-box;} +::before,::after {box-sizing:border-box;} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section,content {display: block;} +img {border:0;display:inline-block;} +ol, ul {list-style: none;} +blockquote, q {quotes: none;} +blockquote::before, blockquote::after, +q::before, q::after {content: '';content: none;} +table {border-collapse: collapse;border-spacing: 0;} +a:focus,input,textarea,button:focus,input:focus,textarea:focus {outline:none;} +::-moz-focus-inner { + border:none;outline:none; +} +body {font-family:Helvetica, Arial,"WenQuanYi Micro Hei","PingFang SC","Hiragino Sans GB","Segoe UI", "Microsoft Yahei", sans-serif;-webkit-font-smoothing: antialiased;text-size-adjust: 100%;-webkit-tap-highlight-color: transparent;} +code,pre,samp {font-family:Menlo,Monaco,Consolas,"Courier New",monospace;} +[anot],[\:repeat],[\:if],[is-widget],slot {visibility:hidden;} + +.do-fn-cl { *zoom: 1; } +.do-fn-cl::after { content: "."; display: block; height: 0; clear: both; visibility: hidden; overflow:hidden;} +.do-fn-clear {clear:both;display:inline;} + +.do-fn-show{display:block;} +.do-fn-hide{display:none;} +.do-fn-fl{float:left;} +.do-fn-fr{float:right;} +.do-fn-noselect {-webkit-touch-callout: none;-webkit-user-select: none;-moz-user-select: none;user-select: none;} +.do-fn-noselect img, .do-fn-noselect a {-webkit-user-drag:none;} +.do-fn-ell {overflow:hidden; white-space:nowrap; text-overflow:ellipsis } +.do-st-thin {-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;} +.do-st-hand {cursor:pointer;} + +[class^="do-icon-"], [class*=" do-icon-"] {display:inline-block;font-family:"uifont" !important;font-style:normal;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;} + + diff --git a/src/lib/icon/index.js b/src/lib/icon/index.js new file mode 100644 index 0000000..dcacff8 --- /dev/null +++ b/src/lib/icon/index.js @@ -0,0 +1,15 @@ +/** + * + * @authors yutent (yutent@doui.cc) + * @date 2019-09-01 23:16:06 + * @version v2.0.1 + * + */ + +'use strict' + +import SVG_DICT from"./svg.js";export default class Icon extends HTMLElement{static get observedAttributes(){return["is"]}constructor(){super(),Object.defineProperty(this,"root",{value:this.attachShadow({mode:"open"}),writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(this,"props",{value:{is:""},writable:!0,enumerable:!1,configurable:!0}),this.root.innerHTML=" ",this.__ICO__=this.root.lastElementChild,this.drawPath()}drawPath(){var{is:o}=this.props,t=SVG_DICT[o];this.__ICO__&&o&&t&&(this.__ICO__.innerHTML="loading"===o?t:``,this.__ICO__.classList.toggle("load","loading"===o))}get is(){return this.props.is}set is(o){this.props.is=o,this.drawPath()}attributeChangedCallback(o,t,e){if(t!==e)switch(o){case"is":this.is=e,e||this.removeAttribute("is")}}}; + +if(!customElements.get('wc-icon')){ + customElements.define('wc-icon', Icon) +} diff --git a/src/lib/icon/svg.js b/src/lib/icon/svg.js new file mode 100644 index 0000000..670e221 --- /dev/null +++ b/src/lib/icon/svg.js @@ -0,0 +1 @@ +"use strict";export default{at:"M532.7 417.9c-22.6 0-39.8 9.5-51.7 28.4-11.8 19-19.6 47.4-23.3 85.3-1.9 25.2 0 44.2 5.8 57.1 5.8 12.9 15.3 19.4 28.2 19.4 11.8 0 22.2-3.2 31.4-9.5s17.4-17.9 24.3-34.9l13.1-142.2c-4.7-1.1-9.5-1.9-14-2.6-4.8-0.8-9.3-1-13.8-1zM512 64C264.5 64 64 264.5 64 512s200.5 448 448 448 448-200.5 448-448S759.5 64 512 64z m275.3 434.9c-1.9 46.1-16.4 85.9-43.1 119.8-26.7 33.6-66.8 50.4-119.8 50.4-17.7 0-33-4.7-45.7-14.2-12.9-9.5-22-23-27.1-40.5-8.8 17.9-20.2 31.2-33.8 40.1-13.6 8.8-29.5 13.4-47.8 13.4-32.5 0-57.3-12.5-74.5-37.3s-23.5-57.7-19-98.9c5.6-52.6 21.5-94.8 47.8-126.4s58.2-47.4 95.6-47.4c26.3 0 47.6 2.8 63.5 8.2 15.9 5.4 33.6 12.3 52.8 23.7l-1.1-0.2h1.7l-16.6 179.6c-1.1 18.3 0.2 31.4 3.7 38.3 3.7 6.9 8.4 10.6 14.4 10.6 24.3 0 43.9-11 58.6-33.6 14.6-22.6 22.8-50.8 24.6-85.3 3.4-71.1-11-126.4-43.5-166.1-32.5-39.6-82.5-59.7-150.1-59.7-65.7 0-118 21.3-156.8 64.2s-59.7 101-63.1 174.9c-3.7 71.9 12.1 128.8 47.2 170.4 35.1 41.8 85.5 62.7 151.4 62.7 18.3 0 37.3-1.9 57.1-5.8 19.6-3.9 36.8-8.8 51-14.6l12.5 52.1c-14.6 8.8-33.2 15.7-55.8 20.7-22.6 5-44.6 7.3-66.1 7.3-87.9 0-155.7-26.1-203.1-78.4-47.4-52.1-69.4-123.6-65.7-214.5 3.9-90 32.1-161.3 84.2-214.1 52.3-52.8 121.7-79 208.3-79 85.1 0 150.3 25 195.4 74.7 45.6 49.8 66.3 118.1 62.9 204.9z",attach:"M872.7 458.8L499.9 831.6c-74.6 74.6-196.6 74.6-271.1 0-74.6-74.6-74.6-196.6 0-271.1l389.7-389.7c47.4-47.4 122-47.4 169.5 0 47.4 47.4 47.4 122 0 169.5L398.2 730c-18.6 18.6-49.1 18.6-67.8 0-18.6-18.6-18.6-49.1 0-67.8l322-322-50.8-50.8-322 322c-47.4 47.4-47.4 122 0 169.5 47.4 47.4 122 47.4 169.5 0l389.7-389.7c74.6-74.6 74.6-196.6 0-271.1s-196.6-74.6-271.1 0L178 509.7C74.6 613 74.6 779.1 178 882.5s269.4 103.4 372.8 0l372.8-372.8-50.9-50.9z",bell:"M512 911.1c-37.2 0-69.8-25.6-79.1-60.5H384c9.3 62.8 62.8 109.4 128 109.4s118.7-48.9 128-109.4h-48.9c-9.3 34.9-41.9 60.5-79.1 60.5z m336-238.2c0-9-4.5-18-13.5-20.3-2.3 0-121.8-65.4-121.8-241.3 2.3-51.9-20.3-162.4-124-196.2-2.3 0-2.3 0-4.5-2.3 11.3-15.8 20.3-36.1 20.3-56.4 0-49.6-40.6-92.5-92.5-92.5s-92.5 40.6-92.5 92.5c0 20.3 6.8 40.6 20.3 56.4-2.3 0-4.5 0-4.5 2.3C331.6 248.9 309 357.2 311.3 409c0 175.9-115 239-121.8 243.5-6.8 4.5-13.5 11.3-13.5 20.3v121.8c0 6.8 2.3 13.5 6.8 18s11.3 6.8 15.8 6.8h626.9c6.8 0 13.5-2.3 15.8-6.8 4.5-4.5 6.8-11.3 6.8-18V672.9zM512 111c24.6 0 44.8 20.2 44.8 44.8 0 24.6-20.2 44.8-44.8 44.8-24.6 0-44.8-20.2-44.8-44.8 0-24.6 20.2-44.8 44.8-44.8zM242 761v-80.1c33.8-23.8 124.5-101.8 124.5-266.3 0-4.3-2.1-112.6 86.5-142.9 6.3-2.2 27.4-8.7 59.1-8.7 31.6 0 52.7 6.5 59.1 8.7 88.6 30.3 86.5 138.6 86.5 142.9 0 164.6 90.7 242.5 124.5 266.3V761H242z",calendar:"M315.3 323.8c-18 0-32.7-14.1-32.7-31.3V128.2c0-17.3 14.7-31.3 32.7-31.3 18 0 32.7 14.1 32.7 31.3v164.3c-0.1 17.2-14.7 31.3-32.7 31.3z m528.5 603.4H180.2C116.1 927.2 64 876 64 813.2V300.8c0-62.9 52.1-114 116.2-114h38.9c18 0 32.7 14.1 32.7 31.3 0 17.3-14.7 31.3-32.7 31.3h-38.9c-28.1 0-50.9 23-50.9 51.3v512.4c0 28.3 22.8 51.3 50.9 51.3h663.5c28.1 0 50.9-23 50.9-51.3V300.8c0-28.3-22.8-51.3-50.9-51.3H810c-18 0-32.7-14.1-32.7-31.3 0-17.3 14.7-31.3 32.7-31.3h33.7c64.1 0 116.2 51.1 116.2 114v512.4c0.1 62.7-52 113.9-116.1 113.9zM708.7 323.8c-18 0-32.7-14.1-32.7-31.3V128.2c0-17.3 14.7-31.3 32.7-31.3 18 0 32.7 14.1 32.7 31.3v164.3c0 17.2-14.7 31.3-32.7 31.3z m43.8 393.1h-481c-18 0-32.7-14.1-32.7-31.3 0-17.3 14.7-31.3 32.7-31.3h480.9c18 0 32.7 14.1 32.7 31.3 0 17.3-14.6 31.3-32.6 31.3z m0-205.3h-481c-18 0-32.7-14.1-32.7-31.3 0-17.3 14.7-31.3 32.7-31.3h480.9c18 0 32.7 14.1 32.7 31.3 0 17.2-14.6 31.3-32.6 31.3z m-131.2-267H399.9c-18 0-32.7-14.1-32.7-31.3 0-17.3 14.7-31.3 32.7-31.3h221.4c18 0 32.7 14.1 32.7 31.3 0 17.2-14.7 31.3-32.7 31.3z",camera:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64z m271.5 719.5C711 856.1 614.6 896 512 896s-199-39.9-271.5-112.5C167.9 711 128 614.6 128 512s39.9-199 112.5-271.5C313 167.9 409.4 128 512 128s199 39.9 271.5 112.5C856.1 313 896 409.4 896 512s-39.9 199-112.5 271.5zM400.1 212.1c-81.3 30.3-146.9 92.8-181.4 171.9H512L400.1 212.1zM825.6 576c4.3-21.1 6.4-42.5 6.4-64 0-73.2-24.6-140.7-66-194.7L622 576h203.6zM719.9 268.8C664 220.9 591.4 192 512 192c-15.9 0-31.6 1.2-46.9 3.4L621.7 448l98.2-179.2zM198.4 448c-4.3 21.1-6.4 42.5-6.4 64 0 73.3 24.6 140.8 66.1 194.7L402 448H198.4z m425.5 363.9c81.3-30.3 146.9-92.8 181.4-171.9H512l111.9 171.9z m-319.8-56.7C360 803.1 432.6 832 512 832c15.9 0 31.6-1.2 46.9-3.4L402.3 576l-98.2 179.2z",chart:"M321.4 812.4h-108V548h108v264.4z m165.2 0h-108V283.6h108v528.8z m165.2 0h-108V415.8h108v396.6z m158.9 0h-108V213.6h108v598.8zM960 876.8c0-10.6-8.4-19.2-18.7-19.2H82.7c-10.3 0-18.7 8.6-18.7 19.2S72.4 896 82.7 896h858.7c10.2 0 18.6-8.6 18.6-19.2zM85.3 128H80c-8.8 0-16 7.2-16 16v736c0 8.8 7.2 16 16 16h5.3c8.8 0 16-7.2 16-16V144c0-8.8-7.2-16-16-16z","checkbox-on":"M860.4 64H163.6C108.8 64 64 108.8 64 163.6v696.9c0 54.8 44.8 99.6 99.6 99.6h696.9c54.8 0 99.6-44.8 99.6-99.6V163.6C960 108.8 915.2 64 860.4 64z m-448 696.9L163.6 512l69.7-69.7 179.2 179.2 378.3-378.3 69.7 69.7-448.1 448z","checkbox-off":"M860.2 163.6v696.8H163.6V163.6h696.6m0-99.6H163.6C108.8 64 64 108.8 64 163.6v696.8c0 54.8 44.8 99.6 99.6 99.6h696.8c54.8 0 99.6-44.8 99.6-99.6V163.6c-0.2-54.8-45-99.6-99.8-99.6z",close:"M925.9 960c-9.1 0-17.7-3.5-24.1-10L512 560.2 122.2 950c-6.4 6.4-15 10-24.1 10-9.1 0-17.7-3.5-24.1-10-13.3-13.3-13.3-34.9 0-48.2L463.8 512 74 122.2C60.7 108.9 60.7 87.3 74 74c13.3-13.3 34.9-13.3 48.2 0L512 463.8 901.8 74c13.3-13.3 34.9-13.3 48.2 0 13.3 13.3 13.3 34.9 0 48.2L560.2 512 950 901.8c13.3 13.3 13.3 34.9 0 48.2-6.4 6.5-15 10-24.1 10z",color:"M512 64C283.2 64 96 265.6 96 512s187.2 448 416 448c39.3 0 69.3-32.3 69.3-74.7 0-19.9-6.9-37.3-18.5-49.8-11.6-12.4-18.5-29.9-18.5-49.8 0-42.3 30-74.7 69.3-74.7h83.2c127.1 0 231.1-112 231.1-248.9C928 243.2 740.8 64 512 64zM256 512c-36.3 0-64-27.7-64-64s27.7-64 64-64 64 27.7 64 64-27.7 64-64 64z m128-192c-36.3 0-64-27.7-64-64s27.7-64 64-64 64 27.7 64 64-27.7 64-64 64z m256 0c-36.3 0-64-27.7-64-64s27.7-64 64-64 64 27.7 64 64-27.7 64-64 64z m128 192c-36.3 0-64-27.7-64-64s27.7-64 64-64 64 27.7 64 64-27.7 64-64 64z","dbl-left":"M536.2 948.6L76.3 539.7l-0.3-0.3c-7.7-7.4-12-17.2-12-27.6 0-12.4 6.1-23.9 16.8-31.6L536.3 75.3c8.1-7.3 19-11.3 30.5-11.3 24.2 0 43.9 18.1 43.9 40.3 0 11.1-4.8 21.4-13.4 29L171.2 512l426.1 378.7c8.5 7.6 13.4 18.1 13.4 29 0 22.2-19.7 40.3-43.9 40.3-11.3 0-22.2-4-30.6-11.4z m349.4 0l-460-408.9-0.3-0.3c-7.7-7.4-12-17.2-12-27.6 0-12.4 6.1-23.9 16.8-31.6L885.6 75.3c8.2-7.3 19-11.3 30.5-11.3 24.2 0 43.9 18.1 43.9 40.3 0 11.1-4.8 21.4-13.4 29L520.5 512l426.1 378.7c8.5 7.6 13.4 18.1 13.4 29 0 22.2-19.7 40.3-43.9 40.3-11.3 0-22.2-4-30.5-11.4z","dbl-right":"M457.2 960c-24.2 0-43.9-18.1-43.9-40.3 0-10.9 4.9-21.4 13.4-29L852.8 512 426.7 133.2c-8.6-7.5-13.4-17.8-13.4-29 0-22.2 19.7-40.3 43.9-40.3 11.5 0 22.4 4 30.6 11.3l455.5 404.9c10.7 7.7 16.8 19.2 16.8 31.6 0 10.4-4.3 20.2-12 27.6l-0.3 0.3-460 409c-8.4 7.4-19.3 11.4-30.6 11.4z m-349.3 0C83.7 960 64 941.9 64 919.7c0-10.9 4.9-21.4 13.4-29L503.5 512 77.4 133.2c-8.6-7.5-13.4-17.8-13.4-29C64 82.1 83.7 64 107.9 64c11.5 0 22.4 4 30.6 11.3L594 480.2c10.7 7.7 16.8 19.2 16.8 31.6 0 10.4-4.3 20.2-12 27.6l-0.3 0.3-460.1 408.9c-8.3 7.4-19.2 11.4-30.5 11.4z",download:"M639.8 187.8H384.2v60.8h255.7v-60.8z m0-59.4H384.2v31.8h255.7v-31.8z m224.6 237.3H639.8v-87.3H384.2v87.3H161.8l349 340.1 353.6-340.1z m19.4 289.6l-30.7 151.2H170.8l-30.6-151.2H64v240.3h896V655.3h-76.2z",edit:"M835 298.7L685.5 154.2l74.8-72.3c24.8-23.9 64.9-23.9 89.6 0l59.8 57.8c24.8 24 24.8 62.8 0 86.8L835 298.7zM400.8 718.5L251.4 574l406.3-389.8 149.4 144.5-406.3 389.8zM131.3 837l90.9-234.9 148.2 143.3L131.3 837z m791.4 123H101.3C80.8 960 64 943.2 64 922.7c0-20.5 16.8-37.3 37.3-37.3h821.3c20.5 0 37.3 16.8 37.3 37.3 0.1 20.5-16.7 37.3-37.2 37.3z",eye:"M512 210c-203.6 0-376.8 124.8-448 302 71.2 177.2 244.4 302 448 302s376.8-124.8 448-302c-71.2-177.2-244.4-302-448-302z m0 503.4c-112 0-203.6-90.6-203.6-201.4S400 310.6 512 310.6 715.6 401.2 715.6 512 624 713.4 512 713.4z m0-322.2c-67.2 0-122.2 54.4-122.2 120.8s55 120.8 122.2 120.8S634.2 578.4 634.2 512s-55-120.8-122.2-120.8z","eye-off":"M512.1 289.6c112.4 0 203.8 90.6 203.8 202.2 0 26.2-5.2 51-14.6 74l119 118c61.6-51 110-116.8 139.8-192-70.6-177.4-244.5-303.1-448.3-303.1-57 0-111.6 10.2-162.2 28.2l88 87.4c23.1-9.3 48.1-14.7 74.5-14.7zM104.8 179.5l93 92.2 18.8 18.6C148.8 342.2 95.8 411.8 64 491.8c70.4 177.4 244.3 303.1 448.1 303.1 63.2 0 123.4-12.2 178.4-34l17.2 17 119.4 118 51.8-51.4-722.5-716.4-51.6 51.4z m225.1 223.3l63.2 62.6c-2 8.4-3.2 17.4-3.2 26.2 0 67 54.6 121.2 122.2 121.2 9 0 18-1.2 26.4-3.2l63.2 62.6c-27.2 13.4-57.4 21.4-89.6 21.4-112.4 0-203.8-90.6-203.8-202.2 0-31.6 8.2-61.4 21.6-88.6z m175.6-31.4l128.4 127.4 0.8-6.4c0-67-54.6-121.2-122.2-121.2l-7 0.2z","finger-print":"M156.2 411.2c-4.8 0-9.8-1.2-14.2-3.8-13.4-7.8-18-24.8-10.2-38.2C167.4 309.2 275.6 169 512 169c102.4 0 192.2 27.2 266.8 80.8 61.4 44 95.8 93.8 112.2 117.8 8.8 12.8 5.4 30-7.4 38.8-12.8 8.6-30.4 5.4-39.2-7.4-29.8-43.2-120.2-174.4-332.4-174.4-207.2 0-300.8 120.8-331.4 172.6-5.2 9.2-14.6 14-24.4 14zM631 960c12.6 0 24-8.4 27.4-21 3.8-14.8-5.2-30-20.4-33.8C501 870.8 443.8 729 439.4 717.8c-1.4-4.6-7.4-27.4-9.4-55.6-2-27-0.6-64.2 17.4-88 13.2-17.4 34.4-25.8 64.6-25.8 55 0 64.2 27.2 78.6 83.6 14 55 33.2 130.4 140 135.8 41 2 78-16.4 104-51.6 39-52.8 46.4-133.6 18.8-205.6-21.6-56.4-63.2-112.8-114-154.8-65.6-54-144.2-82.6-227.4-82.6-180 0-299.6 123.2-338.4 245.4C138 631.4 181.2 795 183 802c4 14.8 19.6 23.8 34.6 19.8 15-3.8 24-19.2 20-34-0.4-1.4-40.8-154.8-10-252.4 16.6-52.4 51.2-103.4 94.8-139.6C375 352.2 440.6 329 512 329c167.2 0 262 131.8 288.8 201.8 20.8 54 16 115.4-11.6 153-10.2 13.8-28.2 30-55.6 28.6-62.4-3.2-73.2-34.4-88.2-93.8-7.2-28.6-14.6-58.2-33-82.2-22.4-29.4-55-43.6-100.2-43.6-48.6 0-85.4 16.2-109.6 48-52.8 69.6-18.4 188.4-17 193.4l0.4 1.6c2.6 7.2 66.6 180.4 238 223.4 2.4 0.6 4.6 0.8 7 0.8z m-220-12.8c6.8 0 13.8-2.6 19-7.4 11.4-10.4 12-28.2 1.4-39.4-60.4-64-94.6-135.6-107.4-225.6-6.4-52.8 2.6-132.6 49-184.4 32.2-36 79-54.2 138.8-54.2 69.2 0 121.6 31.2 156 92.6 27.4 48.8 33 98.8 33 99.4 1.6 15.2 15.6 26.4 31 24.8s26.8-15.2 25.2-30.6c-0.2-2.4-6.6-60.6-38.8-119-44.4-80.4-115.6-123-206.2-123-76.6 0-137.6 24.6-181 73-58.8 65.6-70.8 161-62.6 228.4v0.6c14.6 101.8 53.4 183.2 122 256 5.6 5.8 13 8.8 20.6 8.8zM727 867c12.8 0 26.2-0.8 39.8-2.4 15.4-1.6 26.6-15.4 24.8-30.8-1.8-15.4-15.8-26.4-31.2-24.6-61.6 7-111.6-5-149-35.2-63.2-51.2-71.4-140.2-71.6-141.8-1.2-15.4-14.6-26.8-30.2-25.6s-27.2 14.6-26 30c0.4 4.6 9.6 113.4 91.6 180.2C616 850.2 667 867 727 867z m64.6-716c0 15.4-12.6 27.8-28.2 27.8-6.4 0-12.2-2-17-5.6l-0.4 0.4 0.2 0.2c-0.8-0.4-72.6-54-234.2-54s-233.4 53.4-234.2 54l0.2-0.2c-4.6 3.2-10.2 5.2-16.4 5.2-15.6 0-28.2-12.4-28.2-27.8 0-8.2 3.6-15.6 9.4-20.8 0 0 0.2 0 0.4-0.2 1-1 2.2-1.8 3.4-2.6C265 114.6 348.2 64 512 64c156 0 239 45.8 262.4 61.2 10.2 4.2 17.2 14.2 17.2 25.8z",fire:"M622.5 959.8c-29.2-27.3-63-64.1-77.5-99.5-35.2-86 0-170.6 0-170.6s-113.8 12-167.3 155c-15.6 41.7 4.2 84.7 27 115.4C245.3 918.4 129 787.8 129 632.8c0-85.6 69.4-139.2 128-199.1 33.8-34.5 64-170.6 64-170.6s49.6 59.6 64 142.2c19.3 111.3 0 142.2 0 142.2s94.4-64.9 96-199C482.7 197.2 385 64 385 64s223.5 111.6 279.9 255.2c67.1 171 40.1 342 40.1 342s65.6-38 96-85.3c33.5-52.1 32-113.7 32-113.7s62.5 92 64 170.6c2.9 154.7-115 285.2-274.5 327z",first:"M733.2 611.4c-4.8-10.3-18.1-15.2-29.8-10.8-11.6 4.3-17.2 16.3-12.4 26.6L771.9 801l-148.4-26.7c-9.1-1.6-18.5 1.9-23.7 8.9l-83.3 113.3-4.2 6.5-4.9-6.4L424.2 784c-5.1-6.9-14.5-10.4-23.7-8.6l-148.4 28.1 81.1-174.6c4.8-10.4-0.7-22.2-12.3-26.5-11.6-4.2-25 0.7-29.8 11.1l-97.6 210.2c-3.2 7-1.9 14.9 3.5 20.7 5.4 5.8 13.9 8.4 22.2 6.8L394.6 818l98.2 133c2.6 3.5 6.2 6.1 10.3 7.6 1.9 0.7 4 1.1 6.1 1.3 0.2 0 3.7 0.1 4.6 0.1h0.3c6.8-0.6 13-3.9 16.8-9.1L629.4 817l175.4 31.5c4.6 0.8 9.2 0.4 13.3-1.2 3.4-1.3 6.4-3.3 8.8-5.9 5.4-5.8 6.7-13.8 3.5-20.7l-97.2-209.3zM512 64c-156.9 0-284.5 127.6-284.5 284.5S355.1 632.9 512 632.9s284.5-127.6 284.5-284.5S668.9 64 512 64z m20.9 127.4v320.2h-42.8V284.3h-74.7v-31.9c27.6 0 46.9-3.5 57.8-10.5 12.4-8.2 21.9-25.1 28.2-50.6h31.5z",fly:"M471.7 926.5h-57.9V728.6c0-16.6 3.4-39.9 29.6-72.3 13.7-16.9 285-330.6 383.7-444.7l-675 362.6 217.9 77-16.7 54.4-9.5-3.3c-9.6-3.3-236.2-81.6-258.3-91.9-12.9-6-21-17.9-21.5-31.8-0.6-16.6 9.2-32.2 26.3-41.7 26.9-15 765.6-403.4 809.7-426.6 4.6-3.8 22.3-17.2 41.3-11.4l1.2 0.4 1.1 0.7c18.5 11.5 16.9 28.5 16 38.7-0.2 2-0.4 3.9-0.4 5.3v2.5l-0.9 1.6c-5.1 16.6-50.8 251.5-84.3 423.4-27 138.8-43.9 225.1-46.5 235.5-3.8 20.4-14.1 36.9-28.5 45.2-11.7 6.7-25 7.7-38.6 2.8-25.3-6.2-242.8-78.3-252.2-81.4l-10-3.3 23.8-59 8.7 2.9c91.7 31 230.8 77.5 244.2 80.8h0.9c2.3-13.5 12.7-68.5 58.8-307.2 20.7-106.9 41.5-214.6 52.1-269.3C771 355.9 503.6 673 481 698.6c-5 9.3-9.3 17.6-9.3 29.9v198z","folder-open":"M107.6 845.9l10.9 1.2c1.3 0.1 2.6 0.2 3.9 0.2H783c14.3 0 27-9 30.7-21.9l120.9-417.9c2.6-9 0.6-18.3-5.5-25.7-6.1-7.3-15.2-11.5-25.2-11.5h-94.5v-43.2c0-17.3-15.2-31.4-33.9-31.4H375.3c-4.6 0-9-1.7-12.3-4.7l-54-50c-6.4-5.9-14.9-9.2-23.9-9.2H117.3c-18.7 0-33.8 14.1-33.8 31.4v552.6c0 14.2 10.2 26.2 24.1 30.1z m679.3 20.9H117.6C88 866.8 64 842.7 64 813.1V210.9c0-29.6 24-53.7 53.6-53.7h168.7c14.3 0 27.8 5.6 37.9 15.8l53.7 53.9h401.4c29.6 0 53.6 24.1 53.6 53.7v27.6h75.5c16.2 0 31.1 7.4 40.9 20.2 9.8 12.8 13 29.1 8.9 44.7L836.7 828.5c-6.1 22.5-26.5 38.3-49.8 38.3z m20-18.8H92.1c-5.2 0-9.9-2.4-13.1-6.5-3.1-4.1-4.1-9.3-2.8-14.3L207 334.6c1.9-7.2 8.5-12.3 15.9-12.3h714.8c5.2 0 10 2.4 13.1 6.5 3.1 4.1 4.1 9.3 2.8 14.3L822.8 835.8c-1.9 7.2-8.5 12.2-15.9 12.2zM83 804.5V203.6c0-10.2 8.3-18.5 18.4-18.5H280c4.9 0 9.6 1.9 13 5.4l57.5 58.1c6.8 6.9 15.8 10.6 25.5 10.6h426c10.2 0 18.4 8.3 18.4 18.5v50.1H235.5c-15.3 0-28.7 10.4-32.7 25.4L83 804.5zM119.5 213v413.2l74.3-279.8c6-22.5 26.3-38.3 49.5-38.3h530.1v-25.5h-398c-14.3 0-27.6-5.6-37.7-15.8L284.2 213H119.5z","folder-close":"M902.7 923.3h-776c-34.3 0-62.1-27.9-62.1-62.3V162.9c0-34.3 27.9-62.3 62.1-62.3h195.6c16.6 0 32.2 6.5 44 18.3l62.2 62.5h465.4c4.2 0.1 31.1 1 50.4 23.6 17.6 20.5 16.3 44.3 16 49v624.9c-6.9 26.2-30.6 44.4-57.6 44.4z m-607.9-452h332.4c7.1 0 12.8-5.2 12.8-11.7 0-6.5-5.7-11.7-12.8-11.7H294.8c-7.1 0-12.8 5.2-12.8 11.7 0 6.5 5.7 11.7 12.8 11.7z m0 128.3h434.4c7.1 0 12.8-5.2 12.8-11.7 0-6.5-5.7-11.7-12.8-11.7H294.8c-7.1 0-12.8 5.2-12.8 11.7 0 6.4 5.7 11.7 12.8 11.7z m0 128.1h434.4c7.1 0 12.8-5.2 12.8-11.7 0-6.5-5.7-11.7-12.8-11.7H294.8c-7.1 0-12.8 5.2-12.8 11.7 0 6.5 5.7 11.7 12.8 11.7z",home:"M837.2 960H620.4c-18.2 0-33.1-15.1-33.1-33.6V693H436.7v233.3c0 18.5-14.8 33.6-33.1 33.6H186.8c-18.2 0-33.1-15.1-33.1-33.6v-356c0-18.5 14.8-33.6 33.1-33.6 18.2 0 33.1 15.1 33.1 33.6v322.3h150.7V659.4c0-18.5 14.8-33.6 33.1-33.6h216.8c18.2 0 33.1 15.1 33.1 33.6v233.3h150.7V570.4c0-18.5 14.8-33.6 33.1-33.6 18.2 0 33.1 15.1 33.1 33.6v356c-0.3 18.5-15.1 33.6-33.3 33.6zM97 557.1c-8.9 0-17.2-3.5-23.5-10-12.7-13-12.7-34.3 0-47.3L488.5 74c6.3-6.4 14.6-10 23.5-10s17.2 3.5 23.5 10l415 425.9c12.7 13.1 12.7 34.3 0 47.3-6.3 6.4-14.6 10-23.5 10s-17.2-3.5-23.5-10L512 145.4 120.5 547.2c-6.3 6.4-14.6 9.9-23.5 9.9z m710.5-258.3c-18.2 0-33.1-15.1-33.1-33.6v-55.4h-53.7c-18.2 0-33.1-15.1-33.1-33.6s14.8-33.6 33.1-33.6h86.7c18.2 0 33.1 15.1 33.1 33.6v89c0 18.5-14.8 33.6-33 33.6z",image:"M915.1 280.3l-165-8-9.6-107.6c-2-22.6-22.2-38.4-45.8-36.6l-591.8 48.6c-23.6 2-40.6 21-38.8 43.4l42.4 471.6c2 22.6 22.4 38.4 45.8 36.6l30-2.4-4.8 91.6c-1.2 25.2 18.4 45.6 44.8 47l660.2 31.4c26.4 1.2 48.2-17.2 49.6-42.4l27.8-526.6c1.2-25-18.6-45.4-44.8-46.6z m-709.8 10.6l-14.2 269.6-35 49.4-32.2-356v-2c2-10 8.8-18 19.2-18.8l522-42.8c10.4-0.8 19.4 6 21 15.8 0 0.4 0.6 0.4 0.6 0.8 0 0.2 0.6 0.4 0.6 0.8l5.4 61.6-438-21c-26.4-0.8-48.2 17.6-49.4 42.6z m668 473.8l-169.6-199-74.8 68.6-138.4-161.6-245.4 261.4 20.8-398.2v-0.8c2-10.8 12.4-18.6 23.8-18l582.4 28c11.6 0.6 20.6 9.4 20.8 20.4 0 0.4 0.6 0.6 0.6 1l-20.2 398.2z",key:"M497.4 443.1C466.8 356.5 378.7 288 281.5 288 158.3 288 64 388.8 64 512s98.6 224 221.8 224c97.1 0 181.1-68.5 211.5-155.1h221.4v137.8h148.8V580.9H960V443.1H497.4zM287.9 608.9c-52.9 0-96.1-43.2-96.1-96.1s43.2-96.1 96.1-96.1 96.1 43.2 96.1 96.1-43.2 96.1-96.1 96.1z",left:"M710.9 948.6L251 539.7l-0.3-0.3c-7.7-7.4-12-17.2-12-27.6 0-12.4 6.1-23.9 16.8-31.6L710.9 75.3C719.1 68 730 64 741.5 64c24.2 0 43.9 18.1 43.9 40.3 0 11.1-4.8 21.4-13.4 29L345.8 512 772 890.8c8.5 7.6 13.4 18.1 13.4 29 0 22.2-19.7 40.3-43.9 40.3-11.4-0.1-22.2-4.1-30.6-11.5z",load:"M587.6 587.9c25.3-25.3 202.5 88.6 234.2 120.2 31.7 31.6 38 88.5 6.4 120.1-31.6 31.6-82.2 31.6-113.9-0.1-31.7-31.6-152-215-126.7-240.2zM436 434.8c-25.3 25.3-202.5-88.6-234.2-120.2-31.7-31.6-38-88.5-6.4-120.1 31.6-31.6 82.2-31.6 113.9 0.1 31.7 31.6 152 214.9 126.7 240.2z m-31.8 77.7c0 35.7-205.9 80.4-250.7 80.4-44.8 0-89.5-35.7-89.5-80.4s35.8-80.4 80.6-80.4c44.7 0 259.6 44.7 259.6 80.4z m31.9 76.8c25.3 25.3-88.7 202.3-120.3 233.9-31.7 31.6-88.6 38-120.2 6.4-31.6-31.6-31.6-82.2 0-113.8 31.7-31.6 215.2-151.8 240.5-126.5z m75.9 30.9c35.8 0 80.5 205.7 80.5 250.4 0 44.7-35.8 89.4-80.5 89.4s-80.5-35.8-80.5-80.5 44.7-259.3 80.5-259.3z m107.8-107.7c0-35.7 205.9-80.4 250.7-80.4 44.8 0 89.5 35.7 89.5 80.4s-35.8 80.4-80.6 80.4c-44.7 0-259.6-44.7-259.6-80.4z m-33.6-75.9c-25.3-25.3 88.7-202.3 120.3-233.9 31.7-31.6 88.6-38 120.2-6.4 31.6 31.6 31.6 82.1-0.1 113.8-31.6 31.6-215.1 151.8-240.4 126.5zM512 403.8c-35.8 0-80.5-205.7-80.5-250.4 0-44.7 35.8-89.4 80.5-89.4s80.5 35.8 80.5 80.5-44.7 259.3-80.5 259.3z",loading:'',mail:"M960 280.9v472.3c0 37.9-31 68.9-68.9 68.9H132.9c-37.9 0-68.9-31-68.9-68.9V280.9c0-3.9 4.5-5.8 7.3-3l232 236.1c1.5 1.7 1.5 4.3 0 6L141.1 692.7c-11 11-11 28.6 0 39.6 5.4 5.4 12.7 8.2 19.8 8.2s14.4-2.8 19.8-8.2l161.5-172.1c1.7-1.7 4.5-1.7 6.2 0l37.9 38.6c33.4 33.8 78.6 53.8 126.2 53.6 47-0.2 90.7-18.7 123.6-52.1l39.4-40.1c1.7-1.7 4.5-1.7 6.2 0l161.5 172.1c5.4 5.4 12.7 8.2 19.8 8.2s14.4-2.8 19.8-8.2c11-11 11-28.6 0-39.6L720.9 520c-1.7-1.7-1.7-4.3 0-6l231.8-236.1c2.6-2.6 7.3-0.9 7.3 3zM512 596.2c31.9 0 61.8-12.5 84.2-35.3l337.9-344c-11.8-9.5-26.5-15.1-42.6-15.1H132.7c-16.2 0-31 5.6-42.6 15.1l337.9 344c22.2 22.6 52.1 35.3 84 35.3z",option:"M64 768h544v64H64v-64z m736 0h160v64H800v-64z m-32 127c0 35.9-28.7 65-64 65s-64-29.1-64-65V705c0-35.9 28.7-65 64-65s64 29.1 64 65v190zM64 480h160v64H64v-64z m352 0h544v64H416v-64z m-32 127c0 35.9-28.7 65-64 65s-64-29.1-64-65V417c0-35.9 28.7-65 64-65s64 29.1 64 65v190zM64 192h544v64H64v-64z m736 0h160v64H800v-64z m-32 127c0 35.9-28.7 65-64 65s-64-29.1-64-65V129c0-35.9 28.7-65 64-65s64 29.1 64 65v190z",phone:"M717.7 64H306.3C261 64 224 100.7 224 145.5v733.1c0 44.8 37 81.5 82.3 81.5h411.4c45.3 0 82.3-36.7 82.3-81.5V145.5c0-44.8-37-81.5-82.3-81.5zM728 832H296V163h432v669z m-168 64c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48 48 21.5 48 48z",pie:"M64 480C64 250.2 250.2 64 480 64c10.8 0 22 0.4 32 1.2V512H65.2c-0.8-10-1.2-21.2-1.2-32z m155.6 324.4C295.8 899.2 412.8 960 544 960c229.8 0 416-186.2 416-416 0-131.2-60.8-248.2-155.6-324.4-63.4-51-142.4-83.8-228.4-90.4V576H129.2c6.6 86 39.4 165 90.4 228.4z",pin:"M115.8 960c-13.7 0-26.6-5.4-36.4-15.2l-0.5 0.4 0.4-0.5c-18.3-18.4-20.4-46.7-5-67.2l179-242.4-138.8-138.8c-16.5-16.5-19.8-42.3-8-62.8l0.2-0.3c4.5-7.1 21.7-31.7 54.6-51.1 19.1-11.3 40.3-18.7 62.8-22.1 27.3-4.2 56.9-2.4 87.8 5.2 1.8 0.2 3.8 0.4 5.8 0.6h0.5c6 0.5 11.9 1.1 18.5 2.1 25.2 4.1 72.8-18 113.2-52.4 38.6-32.9 64.5-72 64.5-97.5 0-6.4-0.2-13.3-0.3-20-1.1-26.3-2.9-70.2 29.8-102.8 38.6-38.7 99.8-41.8 142.2-7.3 1 0.8 1.9 1.7 2.9 2.7l0.4 0.4c23.8 23.3 238 237.5 239.5 239 20.1 20.1 31.2 46.8 31.2 75.3 0 28.4-11 55.2-31.1 75.3-32.5 32.6-76.8 30.7-103.4 29.6h-1.4c-6-0.1-12.2-0.3-18.1-0.3-24.3 0-53.9 17.6-83.3 49.7-19.7 21.4-37.5 47.6-50 73.8-11.1 23.1-17.1 44.2-16.1 56.5 0.9 8.6 2.6 22.9 3 25.8 32.8 133.7-57.3 195.1-67.6 201.7l-0.1 0.1c-20.7 12.5-46.9 9.4-63.7-7.4L374.7 756.6c-11.6-11.6-11.6-30.6 0-42.2 5.6-5.6 13.1-8.8 21.1-8.8 8 0 15.5 3.1 21.1 8.8L565.4 863c6.5-5.2 17.3-15.3 26.2-31.2 16.2-29 19.3-64 9.5-104.2v-0.2c-0.6-2.8-3-23.4-3.9-31.8v-0.2c-1.9-22.6 5.5-53 20.7-85.6 15-32.1 36.6-64.3 60.9-90.7 28.9-31.5 74.5-69 127.2-69 7.1 0 15 0.2 21.4 0.3h0.2c26.5 1.1 46.2 0.9 59.2-12.1 8.8-8.8 13.6-20.5 13.6-33s-4.9-24.3-13.8-33.2C884.4 370 658 143.7 647.3 133.3c-17.8-14.2-44.6-12.5-61.2 4.1-13.1 13.2-13.4 32.6-12.3 58.7v0.1c0.2 7.2 0.3 14.7 0.3 21.8 0 43.9-31.9 97.3-85.5 142.9-23.9 20.4-51.2 38.1-76.8 49.8-31.9 14.6-60.3 20-84.6 16.1-5.1-0.8-9.9-1.2-14.1-1.6-2.7-0.2-5.4-0.5-8-0.8-2.6-0.1-5.1-0.6-7.7-1.4-83-20.4-123.9 20.5-136.1 36.1L313.6 611c10.5 10.5 11.8 26.9 2.9 38.9L152.7 871.6 316.2 752c6.4-4.7 14.3-6.6 22.2-5.4 7.9 1.2 14.8 5.5 19.5 11.9 9.7 13.3 6.7 32-6.5 41.7L146.2 949.9c-8.9 6.6-19.4 10.1-30.4 10.1z",plus:"M512 960c-21.2 0-38.4-17.2-38.4-38.4V550.3H102.3C81.2 550.4 64 533.2 64 512c0-21.2 17.2-38.4 38.4-38.4h371.3V102.3c0-21.1 17.2-38.4 38.4-38.4s38.4 17.2 38.4 38.4v371.3h371.3c21.1 0 38.4 17.2 38.4 38.4 0 10.3-4 19.9-11.2 27.1-7.2 7.2-16.9 11.2-27.1 11.2H550.6v371.3c0 10.3-4 19.9-11.2 27.1-7.5 7.3-17.1 11.3-27.4 11.3z",qr:"M395 64H64v329.2h331V64z m-48.5 282.2h-235V111h235v235.2z m258.8 495.4h353.3v-46.9H605.3v46.9zM300.1 158.2H158.9V301h141.2V158.2zM629 64v330.7h331V64H629z m282.5 282.9h-235V111h235v235.9z m47.8 353.6h-165v46.8h164.9v-46.8zM723.9 464.4H512.1v94.7h211.8v-94.7z m-329.6-22.8H64.7v46.8h329.5v-46.8zM582.4 64.9h-46.9v211.8h46.9V64.9z m376.9 541.4H511.8v46.1h447.5v-46.1zM441.4 417.1h46.8V64.9h-46.8v352.2z m94 329.8h-46.8v165.3h-0.2v47.6h0.2v0.2h46.8v-0.2H700v-47.6H535.4V746.9z m331.1-589.4H723.9v142.8h142.6V157.5z m92.8 259.1H817.9v48.3H911V558h48.3V416.6z m-95 541.9h95v-94.3h-95v94.3z m-705.4-93.3h141.2V723.8H158.9v141.4z m117.9-283.1h164v-46.9h-164v46.9zM64 959.6h330.3V628.9H64v330.7z m47.5-283.7h235v235.9h-235V675.9z m93.9-93.8v-46.9H65v46.9h140.4z",quote:"M297.6 530.1h140.2V960H64V634.7C64 279.4 188.6 89.1 437.8 64v161.2c-93.4 30.1-140.2 116.1-140.2 258.5v46.4z m522.2 0H960V960H586.2V634.7c0-355.3 124.5-545.6 373.7-570.7v161.2c-93.4 30.1-140.2 116.1-140.2 258.5V530h0.1z","radio-on":"M512 288c-123.2 0-224 100.8-224 224s100.8 224 224 224 224-100.8 224-224-100.8-224-224-224z m0-224C265.6 64 64 265.6 64 512s201.6 448 448 448 448-201.6 448-448S758.4 64 512 64z m0 806.4c-197.1 0-358.4-161.3-358.4-358.4S314.9 153.6 512 153.6 870.4 314.9 870.4 512 709.1 870.4 512 870.4z","radio-off":"M512 64C265.6 64 64 265.6 64 512s201.6 448 448 448 448-201.6 448-448S758.4 64 512 64z m0 806.4c-197.1 0-358.4-161.3-358.4-358.4S314.9 153.6 512 153.6 870.4 314.9 870.4 512 709.1 870.4 512 870.4z",right:"M282.5 960c-24.2 0-43.9-18.1-43.9-40.3 0-10.9 4.9-21.4 13.4-29L678.2 512 252 133.2c-8.6-7.5-13.4-17.8-13.4-29 0-22.2 19.7-40.3 43.9-40.3 11.5 0 22.4 4 30.6 11.3l455.5 404.9c10.7 7.7 16.8 19.2 16.8 31.6 0 10.4-4.3 20.2-12 27.6l-0.3 0.3-460 409c-8.4 7.4-19.2 11.4-30.6 11.4z",second:"M512 64c-156.8 0-284.3 127.5-284.3 284.3S355.2 632.6 512 632.6s284.3-127.5 284.3-284.3S668.8 64 512 64z m-61.2 242.5h-40.1c0-45.5 14.1-77.7 42.3-96.5 18.2-12.1 41-18.2 68.3-18.2 28.5 0 52.3 8.7 71.5 25.9 19.1 17.3 28.7 40.5 28.7 69.6 0 26.4-8.2 48.3-24.6 65.5-11.2 11.8-31.6 25.6-61 41.4l-33.2 18.2c-19.4 10.6-33.8 22.3-43.2 35.1-6.7 8.8-10.6 17.6-11.8 26.4h173.9v37.8H402.5c0-30.9 7.1-57.2 21.4-78.7 12.1-18.2 30-34.3 53.7-48.2l42.3-24.6c21.8-12.8 36-22.3 42.3-28.7 10.9-11.5 16.4-26.9 16.4-46 0-15.2-4.5-27.9-13.7-38.2-11.5-13-28.1-19.6-49.6-19.6-20.3 0-36 6.2-46.9 18.7-11.7 13.7-17.6 33.7-17.6 60.1z m282.3 305.1c-4.8-10.3-18.1-15.2-29.7-10.8-11.6 4.3-17.2 16.2-12.4 26.6l80.8 173.8-148.3-26.7c-9.1-1.6-18.5 1.9-23.7 8.9l-83.3 113.3-4.2 6.5-4.9-6.4-83.1-112.5c-5.1-6.9-14.5-10.4-23.7-8.6l-148.3 28.1 81.1-174.5c4.8-10.4-0.7-22.2-12.3-26.5-11.6-4.2-24.9 0.7-29.8 11.1l-97.6 210c-3.2 7-1.9 14.9 3.5 20.7 5.4 5.8 13.9 8.4 22.2 6.8l175.3-33.2L492.9 951c2.6 3.5 6.2 6.1 10.3 7.6 1.9 0.7 4 1.1 6.1 1.3 0.2 0 3.7 0.1 4.6 0.1h0.3c6.8-0.6 13-3.9 16.8-9.1L629.3 817l175.3 31.5c4.6 0.8 9.2 0.4 13.3-1.2 3.4-1.3 6.4-3.3 8.8-5.9 5.4-5.8 6.7-13.8 3.5-20.7l-97.1-209.1z",share:"M809.6 960c-82.9 0-150.4-67.5-150.4-150.4 0-6.2 0.4-12.2 1.1-18.2L337.1 615.2c-27.3 38.5-72.1 63.6-122.8 63.6-82.8 0-150.3-67.4-150.3-150.3s67.5-150.4 150.4-150.4c49.7 0 93.9 24.3 121.3 61.5l246.8-167.5c-7.4-17.8-11.5-37.3-11.5-57.7C571 131.5 638.5 64 721.4 64s150.4 67.5 150.4 150.4-67.5 150.4-150.4 150.4c-46 0-87.2-20.8-114.8-53.4L357 480.7c5 15 7.8 31.1 7.8 47.8 0 15.2-2.3 30-6.5 43.9l315.8 172.2c24.3-50.4 75.9-85.3 135.5-85.3 82.9 0 150.4 67.5 150.4 150.4S892.5 960 809.6 960z m-0.5-245.2c-52.8 0-95.8 42.9-95.8 95.7 0 52.8 43 95.7 95.8 95.7s95.7-42.9 95.7-95.7c0.1-52.8-42.9-95.7-95.7-95.7z m-88.7-598c-53.4 0-96.8 43.4-96.8 96.8s43.4 96.8 96.8 96.8 96.8-43.4 96.8-96.8-43.4-96.8-96.8-96.8zM214.3 433.6c-53 0-96.2 43.1-96.2 96.2 0 53 43.1 96.2 96.2 96.2 53 0 96.2-43.1 96.2-96.2 0-53-43.2-96.2-96.2-96.2z",star:"M891.9 355.6l-218.6-15.8c-4.6-0.4-8.6-3.1-10.2-7.5l-83.3-203.8C568.4 100.4 542.5 83 512.1 83c-30.3 0-56 17.4-67.7 45.7l-83.4 204c-1.8 4.2-5.7 7.2-10.2 7.5L132.5 356c-29.6 1.7-54.8 21.1-64.4 49.8-9.9 29-1.6 59.5 21.7 79.5l168.9 140.3c3.5 2.9 5.1 7.7 4 12.1l-51.5 211.9c-6 22-1.8 44.8 11.5 62.6 13.7 18 35.1 28.8 57.5 28.8 13.9 0 27.4-4.2 38.5-11.8l184.6-115.5c3.9-2.4 8.7-2.4 12.6 0l186.4 115.1c11.7 7.9 25.2 12.1 38.9 12.1 21 0 41.8-10.1 55.3-27.2 14.1-17.6 19.2-40.6 14.1-63.5L759 637.9c-1.1-4.5 0.5-9.3 4-12.3l171.4-140.7c23-19.8 31.2-50.3 21.5-79.3-9.4-28.7-34.8-48.3-64-50z m-4.8 97.5l-163 133.8a54.911 54.911 0 0 0-18.3 55.1L755 844c2.6 11.9-2.1 20.1-5.2 24-4.9 6.1-12.2 10-19.5 10-4.5 0-9-1.4-13.9-4.7L538.2 763c-8.5-5.3-18.3-8.1-28.3-8-10.1 0-20 2.8-28.5 8.2L304.8 873.5c-11.3 7.5-26.4 4.2-34.4-6.3-3.3-4.4-6.8-11.9-3.7-22.9L316 641.8c4.9-20.1-2.3-41.6-18.1-54.7L137.3 453.6c-12.7-11-9.2-25.2-7.8-29.2 1.4-4 7.1-17.5 23.8-18.4l208.2-15c20.5-1.5 38.4-14.5 46.1-33.6l79.5-194.3c6.4-15.7 20.9-17 25-17 4.2 0 18.6 1.2 25 17l79.5 194.3c7.7 19.1 25.6 32.1 46.1 33.6l208.5 15.2c16.3 0.9 22.1 14.3 23.5 18.4 1.1 3.6 4.6 17.8-7.6 28.5z","star-half":"M891.9 355.6l-218.6-15.8c-4.6-0.4-8.6-3.1-10.2-7.5l-83.3-203.8C568.4 100.4 542.5 83 512.1 83c-30.3 0-56 17.4-67.7 45.7l-83.4 204c-1.8 4.2-5.7 7.2-10.2 7.5L132.5 356c-29.6 1.7-54.8 21.1-64.4 49.8-9.9 29-1.6 59.5 21.7 79.5l168.9 140.3c3.5 2.9 5.1 7.7 4 12.1l-51.5 211.9c-6 22-1.8 44.8 11.5 62.6 13.7 18 35.1 28.8 57.5 28.8 13.9 0 27.4-4.2 38.5-11.8l184.6-115.5c3.9-2.4 8.7-2.4 12.6 0l186.4 115.1c11.7 7.9 25.2 12.1 38.9 12.1 21 0 41.8-10.1 55.3-27.2 14.1-17.6 19.2-40.6 14.1-63.5L759 637.9c-1.1-4.5 0.5-9.3 4-12.3l171.4-140.7c23-19.8 31.2-50.3 21.5-79.3-9.4-28.7-34.8-48.3-64-50z m-4.8 97.5l-163 133.8a54.911 54.911 0 0 0-18.3 55.1L755 844c2.6 11.9-2.1 20.1-5.2 24-4.9 6.1-12.2 10-19.5 10-4.5 0-9-1.4-13.9-4.7C648.3 831.1 580.2 789.1 512 747V147c-0.1-0.3-0.2-0.7 0-1 1.1-1.8 10.8 0.7 17.4 6.2 2 1.7 5.4 5 7.8 10.9l79.5 194.3c7.7 19.1 25.6 32.1 46.1 33.6l208.5 15.2c16.3 0.9 22.1 14.3 23.5 18.4 0.7 2.1 3.2 10.8-1.1 20-2.1 4.1-4.8 6.9-6.6 8.5z","star-full":"M891.9 355.6l-218.6-15.8c-4.6-0.4-8.6-3.1-10.2-7.5l-83.3-203.8C568.4 100.4 542.5 83 512.1 83c-30.3 0-56 17.4-67.7 45.7l-83.4 204c-1.8 4.2-5.7 7.2-10.2 7.5L132.5 356c-29.6 1.7-54.8 21.1-64.4 49.8-9.9 29-1.6 59.5 21.7 79.5l168.9 140.3c3.5 2.9 5.1 7.7 4 12.1l-51.5 211.9c-6 22-1.8 44.8 11.5 62.6 13.7 18 35.1 28.8 57.5 28.8 13.9 0 27.4-4.2 38.5-11.8l184.6-115.5c3.9-2.4 8.7-2.4 12.6 0l186.4 115.1c11.7 7.9 25.2 12.1 38.9 12.1 21 0 41.8-10.1 55.3-27.2 14.1-17.6 19.2-40.6 14.1-63.5L759 637.9c-1.1-4.5 0.5-9.3 4-12.3l171.4-140.7c23-19.8 31.2-50.3 21.5-79.3-9.4-28.7-34.8-48.3-64-50z",tag:"M64 599.7c0-28.1 10.9-54.5 30.8-74.4L525.3 94.8c25.8-25.8 62.5-36.3 98-28.1l207.3 47.8c39 8.9 69.9 39.9 78.9 78.9l47.8 207.2c8.1 35.2-2.6 72.6-28.1 98.1L498.7 929.2c-19.9 19.9-46.3 30.8-74.4 30.8-28.1 0-54.5-10.9-74.4-30.8L94.8 674.1C74.9 654.2 64 627.8 64 599.7zM649.7 288c0 22.4 8.7 43.5 24.6 59.4 15.9 15.9 37 24.6 59.4 24.6s43.5-8.7 59.4-24.6c15.9-15.9 24.6-37 24.6-59.4 0-22.5-8.7-43.6-24.6-59.4-32.8-32.8-86-32.8-118.8 0-15.9 15.8-24.6 36.9-24.6 59.4z",talk:"M902.8 110H407.2c-31.5 0-57.2 25.1-57.2 55.9v391c0 30.8 25.6 55.9 57.2 55.9h344.7l60.2 92.1c11.5 13.2 33.5 5.2 33.5-12.1v-80h57.2c31.5 0 57.2-25.1 57.2-55.9v-391c0-30.9-25.6-55.9-57.2-55.9zM483.5 411.3c-21.1 0-38.1-16.7-38.1-37.2 0-20.6 17.1-37.2 38.1-37.2 21.1 0 38.1 16.7 38.1 37.2 0 20.5-17.1 37.2-38.1 37.2z m171.5 0c-21.1 0-38.1-16.7-38.1-37.2 0-20.6 17.1-37.2 38.1-37.2 21.1 0 38.1 16.7 38.1 37.2 0 20.5-17 37.2-38.1 37.2z m171.6 0c-21.1 0-38.1-16.7-38.1-37.2 0-20.6 17.1-37.2 38.1-37.2 21.1 0 38.1 16.7 38.1 37.2 0 20.5-17.1 37.2-38.1 37.2zM292.7 616.1V312.6H121.2c-31.5 0-57.2 25.1-57.2 55.9v391c0 30.8 25.7 55.9 57.2 55.9h57.2v80c0 17.3 22.1 25.2 33.5 12.1l60.2-92.1h344.7c31.5 0 57.2-25.1 57.2-55.9V672H349.9c-31.5-0.1-57.2-25.1-57.2-55.9z",third:"M512 64c-156.8 0-284.3 127.5-284.3 284.3S355.2 632.6 512 632.6s284.3-127.5 284.3-284.3S668.8 64 512 64z m-23.9 295.3v-33.2l20.4 0.9c17.1 0 30.7-3.5 40.8-10.6 12.4-8.9 18.6-22.3 18.6-40.3 0-12.4-3.7-22.9-11.1-31.5-10-11.8-25.6-17.7-46.5-17.7-23.9 0-40.9 8.4-51 25.3-6.5 10.9-9.8 24.8-9.8 41.7h-38.1c0-28.1 6.5-50.8 19.5-68.3 16.8-22.4 43.9-33.7 81.1-33.7 29.5 0 53 7.6 70.3 22.8 17.3 15.2 25.9 34.9 25.9 59.2 0 18.3-4.4 33.4-13.3 45.2-7.1 9.5-16 15.8-26.6 19.1 16.5 5.9 29 14.2 37.2 24.8 9.8 12.4 14.6 28.7 14.6 48.8 0 28.1-8.7 51.1-26.1 69.1-20.1 20.7-48.8 31-86 31-9.8 0-17.9-0.6-24.4-1.8-10.6-2.1-21.7-6.1-33.2-12-16.6-8.6-28.4-20.7-35.7-36.3-7.2-15.7-10.9-33.5-10.9-53.6h40.3c0 19.5 3.7 34.6 11.1 45.2 10.6 15.7 29.1 23.5 55.4 23.5 20.1 0 36.4-5.5 49-16.6 12.6-11.1 18.8-25.6 18.8-43.7 0-23-8.7-39.1-26.1-48.3-11.2-5.9-26.7-8.9-46.5-8.9h-17.7z m245 252.3c-4.8-10.3-18.1-15.2-29.7-10.8-11.6 4.3-17.2 16.2-12.4 26.6l80.8 173.8-148.3-26.7c-9.1-1.6-18.5 1.9-23.7 8.9l-83.3 113.3-4.2 6.5-4.9-6.4-83.1-112.5c-5.1-6.9-14.5-10.4-23.7-8.6l-148.3 28.1 81.1-174.5c4.8-10.4-0.7-22.2-12.3-26.5-11.6-4.2-24.9 0.7-29.8 11.1l-97.6 210c-3.2 7-1.9 14.9 3.5 20.7 5.4 5.8 13.9 8.4 22.2 6.8l175.3-33.2L492.9 951c2.6 3.5 6.2 6.1 10.3 7.6 1.9 0.7 4 1.1 6.1 1.3 0.2 0 3.7 0.1 4.6 0.1h0.3c6.8-0.6 13-3.9 16.8-9.1L629.3 817l175.3 31.5c4.6 0.8 9.2 0.4 13.3-1.2 3.4-1.3 6.4-3.3 8.8-5.9 5.4-5.8 6.7-13.8 3.5-20.7l-97.1-209.1z",upload:"M392 325.7s-54.2-68.6-127.7-12.6c-65.8 53.5-54.2 151.3-54.2 151.3S64 501.9 64 697.9c3.3 195.8 158.7 197.8 158.7 197.8l233.3 0.3V686.4H344.2L512 476.9l167.9 209.6H568V896l226.6-0.3s144.7 0.2 165-186.1c9.7-203.7-139.8-243.8-139.8-243.8s17-301.5-192.9-335.9C446.8 105.7 392 325.7 392 325.7z",wallet:"M384.5 682.6V341.4c0-47 39.4-85.4 88.5-85.4h408.1v-42.6c0-47-39.2-85.4-87.6-85.4H155.2c-49.1 0-91.2 37-91.2 84v600c0 47 42.1 84 91.2 84h638.1c48.7 0 87.6-38.4 87.6-85.4V768H472.7c-48.9 0-88.2-38.4-88.2-85.4zM448 355.7v312.6c0 19.6 16.8 35.7 37.4 35.7h437.2c20.6 0 37.4-16.1 37.4-35.7V355.7c0-19.6-16.8-35.7-37.4-35.7H485.4c-20.6 0-37.4 16.1-37.4 35.7z m195.9 227.4c-43 2.7-78.4-32.8-75.8-75.8 2.2-35.4 31-64.2 66.6-66.7 43-2.7 78.4 32.8 75.8 75.8-2.5 35.7-31.2 64.5-66.6 66.7z"}; \ No newline at end of file diff --git a/src/lib/request/index.js b/src/lib/request/index.js index 9cd1ce5..a97aa5d 100644 --- a/src/lib/request/index.js +++ b/src/lib/request/index.js @@ -1 +1,447 @@ -"use strict";import Format from"./lib/format.js";const rlocalProtocol=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,log=console.log,noop=function(t,e){this.defer.resolve(e)};let isLocal=!1;try{isLocal=rlocalProtocol.test(location.protocol)}catch(t){}let originAnchor=document.createElement("a");originAnchor.href=location.href;const NOBODY_METHODS=["GET","HEAD"],ERRORS={10001:"Argument url is required",10012:"Parse error",10100:"Request canceled",10104:"Request pending...",10200:"Ok",10204:"No content",10304:"Not modified",10500:"Internal Server Error",10504:"Connected timeout"},FORM_TYPES={form:"application/x-www-form-urlencoded; charset=UTF-8",json:"application/json; charset=UTF-8",text:"text/plain; charset=UTF-8"},convert={text:t=>t,xml:(t,e)=>void 0!==e?e:Format.parseXML(t),html:t=>Format.parseHTML(t),json:t=>JSON.parse(t),script:t=>Format.parseJS(t)};class _Request{constructor(t="",e="GET",s={}){if(!t)throw new Error(ERRORS[10001]);return t=t.replace(/#.*$/,""),request.BASE_URL&&(/^([a-z]+:|\/\/)/.test(t)||(t=request.BASE_URL+t)),e=e.toUpperCase(),this.xhr=new XMLHttpRequest,this.defer=Promise.defer(),this.opt={url:t,method:e,headers:{},data:{},dataType:"text",withCredentials:!1},this.defer.promise.abort=(()=>{this.cancel=!0,this.xhr.abort()}),this.__next__(Object.assign({},request.__INIT__,s)),this.defer.promise}__next__(t){t.headers&&Object.assign(this.opt.headers,t.headers);let e=!1;if(t.formType)switch(t.formType){case"form":this.__set__("form");break;case"json":this.__set__("json");break;case"form-data":this.opt.method="POST",e=!0;break;default:NOBODY_METHODS.includes(this.opt.method)?this.__set__("form"):this.__set__("text")}else this.__set__("form");if(t.cache&&NOBODY_METHODS.includes(this.opt.method)&&(this.opt.cache=!0),t.timeout=t.timeout>>>0,t.timeout>0&&(this.opt.timeout=t.timeout),t.data){switch(typeof t.data){case"number":case"string":this.__set__("text"),this.opt.data=t.data;break;case"object":"FORM"===t.data.nodeName?(this.opt.method=t.data.method.toUpperCase()||"POST",this.opt.data=Format.parseForm(t.data),(e=this.opt.data.constructor===FormData)&&delete this.opt.headers["content-type"]):t.data.constructor===FormData?(e=!0,this.opt.method="POST",delete this.opt.headers["content-type"],this.opt.data=t.data):this.opt.data=e?Format.mkFormData(t.data):t.data}}t.withCredentials&&(this.opt.withCredentials=!0);try{let t=document.createElement("a");t.href=this.opt.url,this.opt.crossDomain=originAnchor.protocol!==t.protocol||originAnchor.host!==t.host}catch(t){}this.opt.crossDomain?this.opt.withCredentials&&(this.xhr.withCredentials=!0,this.opt.headers["X-Requested-With"]="XMLHttpRequest"):this.opt.headers["X-Requested-With"]="XMLHttpRequest",!NOBODY_METHODS.includes(this.opt.method)?e||("json"===t.formType?this.opt.data=JSON.stringify(this.opt.data):this.opt.data=Format.param(this.opt.data)):(this.opt.data=Format.param(this.opt.data),this.opt.data&&(this.opt.url+=(/\?/.test(this.opt.url)?"&":"?")+this.opt.data),!1===this.opt.cache&&(this.opt.url+=(/\?/.test(this.opt.url)?"&":"?")+"_="+Math.random())),t.dataType&&(this.opt.dataType=t.dataType.toLowerCase()),this.xhr.responseType=this.opt.dataType,this.xhr.onreadystatechange=(t=>{this.opt.timeout>0&&(this.opt["time"+this.xhr.readyState]=t.timeStamp,4===this.xhr.readyState&&(this.opt.isTimeout=this.opt.time4-this.opt.time1>this.opt.timeout)),4===this.xhr.readyState&&this.__dispatch__(this.opt.isTimeout)}),this.xhr.open(this.opt.method,this.opt.url,!0);for(let t in this.opt.headers)this.xhr.setRequestHeader(t,this.opt.headers[t]);this.xhr.send(this.opt.data),this.opt.timeout&&this.opt.timeout>0&&(this.xhr.timeout=this.opt.timeout)}__set__(t){this.opt.headers["content-type"]=FORM_TYPES[t]}__dispatch__(t){let e={status:200,statusText:"ok",text:"",body:"",error:null};if(this.cancel)return this.__cancel__(e);if(t)return this.__timeout__(e);let s=this.xhr.status>=200&&this.xhr.status<400,o=this.xhr.getAllResponseHeaders().split("\n")||[],r="";for(let t of o)if(t=t.trim()){if("content-type"===(t=t.split(":")).shift().toLowerCase()){r=t.join(":").trim().toLowerCase();break}}switch(s?(e.status=this.xhr.status,204===e.status?e.statusText=ERRORS[10204]:304===e.status&&(e.statusText=ERRORS[10304])):(e.status=this.xhr.status||500,e.statusText=this.xhr.statusText||ERRORS[10500],e.error=new Error(e.statusText)),this.opt.dataType){case"arraybuffer":case"blob":case"document":case"json":e.text=e.body=this.xhr.response;break;default:try{let t=r.match(/json|xml|script|html/);t=t&&t[0].toLowerCase()||"text",e.text=this.xhr.response,e.body=convert[t](e.text,this.xhr.response)}catch(t){e.error=t,e.statusText=ERRORS[10012]}}this.__success__(s,e)}__success__(t,e){t?this.defer.resolve(e):this.defer.reject(e),delete this.xhr,delete this.opt,delete this.defer}__cancel__(t){t.status=0,t.statusText=ERRORS[10100],t.error=new Error(ERRORS[10100]),this.defer.reject(t),delete this.xhr,delete this.opt,delete this.defer}__timeout__(t){t.status=504,t.statusText=ERRORS[10504],t.error=new Error(ERRORS[10504]),this.defer.reject(t),delete this.xhr,delete this.opt,delete this.defer}}window.request||(window.request={get:(t,e={})=>new _Request(t,"GET",e),post:(t,e={})=>new _Request(t,"POST",e),upload(t,e={}){return e.formType="form-data",this.post(t,e)},download(t,e={}){return e.dataType="blob",this.get(t,e)},open:(t,e="GET",s={})=>("object"==typeof e&&(s=e,e="GET"),new _Request(t,e,s)),version:"2.0.0-normal",init(t={}){this.__INIT__=t}},Anot.ui.request=request.version);export default request; \ No newline at end of file +/** + * + * @authors yutent (yutent@doui.cc) + * @date 2018-03-25 23:59:13 + * @version $Id$ + */ + +'use strict' +import Format from "./lib/format.js" + +// 本地协议/头 判断正则 +const rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/ +const log = console.log + +const noop = function(e, res) { + this.defer.resolve(res) +} + +let isLocal = false +try { + isLocal = rlocalProtocol.test(location.protocol) +} catch (e) {} + +let originAnchor = document.createElement('a') +originAnchor.href = location.href + +const NOBODY_METHODS = ['GET', 'HEAD'] +const ERRORS = { + 10001: 'Argument url is required', + 10012: 'Parse error', + 10100: 'Request canceled', + 10104: 'Request pending...', + 10200: 'Ok', + 10204: 'No content', + 10304: 'Not modified', + 10500: 'Internal Server Error', + 10504: 'Connected timeout' +} + +const FORM_TYPES = { + form: 'application/x-www-form-urlencoded; charset=UTF-8', + json: 'application/json; charset=UTF-8', + text: 'text/plain; charset=UTF-8' +} + +const convert = { + text(val) { + return val + }, + xml(val, xml) { + return xml !== undefined ? xml : Format.parseXML(val) + }, + html(val) { + return Format.parseHTML(val) + }, + json(val) { + return JSON.parse(val) + }, + script(val) { + return Format.parseJS(val) + } +} + +class _Request { + constructor(url = '', method = 'GET', param = {}) { + if (!url) { + throw new Error(ERRORS[10001]) + } + + // url规范化 + url = url.replace(/#.*$/, '') + + if (request.BASE_URL) { + if (!/^([a-z]+:|\/\/)/.test(url)) { + url = request.BASE_URL + url + } + } + + method = method.toUpperCase() + + this.xhr = new XMLHttpRequest() + this.defer = Promise.defer() + this.opt = { + url, + method, + headers: {}, + data: {}, + dataType: 'text', + withCredentials: false // 跨域选项,是否验证凭证 + } + + // 取消网络请求 + this.defer.promise.abort = () => { + this.cancel = true + this.xhr.abort() + } + this.__next__(Object.assign({}, request.__INIT__, param)) + return this.defer.promise + } + + __next__(param) { + /* -------------------------------------------------------------- */ + /* ------------------------ 1»» 配置头信息 ---------------------- */ + /* -------------------------------------------------------------- */ + if (param.headers) { + Object.assign(this.opt.headers, param.headers) + } + + /* -------------------------------------------------------------- */ + /* --------- 2»» 设置表单类型, 其中 form-data不能手动设置 ---------- */ + /* -------------------------------------------------------------- */ + let hasAttach = false + if (param.formType) { + switch (param.formType) { + case 'form': + this.__set__('form') + break + case 'json': + this.__set__('json') + break + case 'form-data': + this.opt.method = 'POST' + hasAttach = true + break + default: + if (NOBODY_METHODS.includes(this.opt.method)) { + this.__set__('form') + } else { + this.__set__('text') + } + } + } else { + this.__set__('form') + } + + /* -------------------------------------------------------------- */ + /* ------------------- 3»» 设置缓存 ---------------------------- */ + /* -------------------------------------------------------------- */ + if (param.cache) { + if (NOBODY_METHODS.includes(this.opt.method)) { + this.opt.cache = true + } + } + + /* -------------------------------------------------------------- */ + /* ------------------- 4»» 设置超时时间(毫秒) --------------------- */ + /* -------------------------------------------------------------- */ + param.timeout = param.timeout >>> 0 + if (param.timeout > 0) { + this.opt.timeout = param.timeout + } + + /* -------------------------------------------------------------- */ + /* -------------------------- 5»» 请求的内容 --------------------- */ + /* -------------------------------------------------------------- */ + if (param.data) { + let type = typeof param.data + + switch (type) { + case 'number': + case 'string': + this.__set__('text') + this.opt.data = param.data + break + case 'object': + // 解析表单DOM + if (param.data.nodeName === 'FORM') { + this.opt.method = param.data.method.toUpperCase() || 'POST' + + this.opt.data = Format.parseForm(param.data) + hasAttach = this.opt.data.constructor === FormData + + if (hasAttach) { + delete this.opt.headers['content-type'] + } + // 如果是一个 FormData对象 + // 则直接改为POST + } else if (param.data.constructor === FormData) { + hasAttach = true + this.opt.method = 'POST' + delete this.opt.headers['content-type'] + this.opt.data = param.data + } else { + // 有附件,则改为FormData + if (hasAttach) { + this.opt.data = Format.mkFormData(param.data) + } else { + this.opt.data = param.data + } + } + } + } + + /* -------------------------------------------------------------- */ + /* -------------------------- 6»» 处理跨域 --------------------- */ + /* -------------------------------------------------------------- */ + if (param.withCredentials) { + this.opt.withCredentials = true + } + try { + let anchor = document.createElement('a') + anchor.href = this.opt.url + + this.opt.crossDomain = + originAnchor.protocol !== anchor.protocol || + originAnchor.host !== anchor.host + } catch (err) {} + + // 6.1»» 进一步处理跨域 + // 非跨域或跨域但支持Cors时自动加上一条header信息,用以标识这是ajax请求 + // 如果是跨域,开启Cors会需要服务端额外返回一些headers + + if (this.opt.crossDomain) { + if (this.opt.withCredentials) { + this.xhr.withCredentials = true + this.opt.headers['X-Requested-With'] = 'XMLHttpRequest' + } + } else { + this.opt.headers['X-Requested-With'] = 'XMLHttpRequest' + } + + /* -------------------------------------------------------------- */ + /* ------------- 7»» 根据method类型, 处理g表单数据 ---------------- */ + /* -------------------------------------------------------------- */ + // 是否允许发送body + let allowBody = !NOBODY_METHODS.includes(this.opt.method) + if (allowBody) { + if (!hasAttach) { + if (param.formType === 'json') { + this.opt.data = JSON.stringify(this.opt.data) + } else { + this.opt.data = Format.param(this.opt.data) + } + } + } else { + // 否则拼接到url上 + this.opt.data = Format.param(this.opt.data) + + if (this.opt.data) { + this.opt.url += (/\?/.test(this.opt.url) ? '&' : '?') + this.opt.data + } + + if (this.opt.cache === false) { + this.opt.url += + (/\?/.test(this.opt.url) ? '&' : '?') + '_=' + Math.random() + } + } + + /* -------------------------------------------------------------- */ + /* ------------- 8»» 设置响应的数据类型 ---------------- */ + /* -------------------------------------------------------------- */ + // arraybuffer | blob | document | json | text + if (param.dataType) { + this.opt.dataType = param.dataType.toLowerCase() + } + this.xhr.responseType = this.opt.dataType + + /* -------------------------------------------------------------- */ + /* ------------- 9»» 构造请求 ---------------- */ + /* -------------------------------------------------------------- */ + + // response ready + this.xhr.onreadystatechange = ev => { + if (this.opt.timeout > 0) { + this.opt['time' + this.xhr.readyState] = ev.timeStamp + if (this.xhr.readyState === 4) { + this.opt.isTimeout = + this.opt.time4 - this.opt.time1 > this.opt.timeout + } + } + + if (this.xhr.readyState !== 4) { + return + } + + this.__dispatch__(this.opt.isTimeout) + } + + // 9.1»» 初始化xhr + this.xhr.open(this.opt.method, this.opt.url, true) + + // 9.2»» 设置头信息 + for (let i in this.opt.headers) { + this.xhr.setRequestHeader(i, this.opt.headers[i]) + } + + // 9.3»» 发起网络请求 + this.xhr.send(this.opt.data) + + // 9.4»» 超时处理 + if (this.opt.timeout && this.opt.timeout > 0) { + this.xhr.timeout = this.opt.timeout + } + } + + __set__(type) { + this.opt.headers['content-type'] = FORM_TYPES[type] + } + + __dispatch__(isTimeout) { + let result = { + status: 200, + statusText: 'ok', + text: '', + body: '', + error: null + } + + // 主动取消 + if (this.cancel) { + return this.__cancel__(result) + } + + // 超时 + if (isTimeout) { + return this.__timeout__(result) + } + + // 是否请求成功(resful规范) + let isSucc = this.xhr.status >= 200 && this.xhr.status < 400 + + let headers = this.xhr.getAllResponseHeaders().split('\n') || [] + let contentType = '' + + //处理返回的 Header, 拿到content-type + for (let it of headers) { + it = it.trim() + if (it) { + it = it.split(':') + let tmp = it.shift().toLowerCase() + if (tmp === 'content-type') { + contentType = it + .join(':') + .trim() + .toLowerCase() + break + } + } + } + + if (isSucc) { + result.status = this.xhr.status + if (result.status === 204) { + result.statusText = ERRORS[10204] + } else if (result.status === 304) { + result.statusText = ERRORS[10304] + } + } else { + result.status = this.xhr.status || 500 + result.statusText = this.xhr.statusText || ERRORS[10500] + result.error = new Error(result.statusText) + } + // log(this.opt.dataType, this.xhr) + switch (this.opt.dataType) { + case 'arraybuffer': + case 'blob': + case 'document': + case 'json': + result.text = result.body = this.xhr.response + break + // text + default: + try { + //处理返回的数据 + let dataType = contentType.match(/json|xml|script|html/) + + dataType = (dataType && dataType[0].toLowerCase()) || 'text' + + result.text = this.xhr.response + result.body = convert[dataType](result.text, this.xhr.response) + } catch (err) { + result.error = err + result.statusText = ERRORS[10012] + } + break + } + this.__success__(isSucc, result) + } + + __success__(isSucc, result) { + if (isSucc) { + this.defer.resolve(result) + } else { + this.defer.reject(result) + } + delete this.xhr + delete this.opt + delete this.defer + } + + __cancel__(result) { + result.status = 0 + result.statusText = ERRORS[10100] + result.error = new Error(ERRORS[10100]) + + this.defer.reject(result) + + delete this.xhr + delete this.opt + delete this.defer + } + + __timeout__(result) { + result.status = 504 + result.statusText = ERRORS[10504] + result.error = new Error(ERRORS[10504]) + + this.defer.reject(result) + + delete this.xhr + delete this.opt + delete this.defer + } +} + +if (!window.request) { + window.request = { + get(url, param = {}) { + return new _Request(url, 'GET', param) + }, + post(url, param = {}) { + return new _Request(url, 'POST', param) + }, + upload(url, param = {}) { + param.formType = 'form-data' + return this.post(url, param) + }, + download(url, param = {}) { + param.dataType = 'blob' + return this.get(url, param) + }, + open(url, method = 'GET', param = {}) { + if (typeof method === 'object') { + param = method + method = 'GET' + } + return new _Request(url, method, param) + }, + version: '2.0.0-normal', + init(param = {}) { + this.__INIT__ = param + } + } + Anot.ui.request = request.version +} + +export default request diff --git a/src/lib/request/lib/format.js b/src/lib/request/lib/format.js index 4f48fb0..ce5d8a7 100644 --- a/src/lib/request/lib/format.js +++ b/src/lib/request/lib/format.js @@ -1 +1,225 @@ -"use strict";function serialize(e,t,r){let o;if(Array.isArray(t))t.forEach(function(t,a){o=e?`${e}[${Array.isArray(t)?a:""}]`:a,"object"==typeof t?serialize(o,t,r):r(o,t)});else for(let a in t)o=e?`${e}[${a}]`:a,"object"==typeof t[a]?serialize(o,t[a],r):r(o,t[a])}const toS=Object.prototype.toString,doc=window.document,encode=encodeURIComponent,decode=decodeURIComponent,TagHooks=function(){this.option=doc.createElement("select"),this.thead=doc.createElement("table"),this.td=doc.createElement("tr"),this.area=doc.createElement("map"),this.tr=doc.createElement("tbody"),this.col=doc.createElement("colgroup"),this.legend=doc.createElement("fieldset"),this._default=doc.createElement("div"),this.g=doc.createElementNS("http://www.w3.org/2000/svg","svg"),this.optgroup=this.option,this.tbody=this.tfoot=this.colgroup=this.caption=this.thead,this.th=this.td,"circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use".replace(/,/g,e=>{this[e]=this.g})},Helper={tagHooks:new TagHooks,rtagName:/<([\w:]+)/,rxhtml:/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,scriptTypes:{"text/javascript":1,"text/ecmascript":1,"application/ecmascript":1,"application/javascript":1},rhtml:/<|&#?\w+;/};export default{parseJS:function(code){if(code=(code+"").trim(),code)if(1===code.indexOf("use strict")){let e=doc.createElement("script");e.text=code,doc.head.appendChild(e).parentNode.removeChild(e)}else eval(code)},parseXML:function(e,t,r){try{t=(new DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&t.documentElement&&!t.getElementsByTagName("parsererror").length||console.error("Invalid XML: "+e),t},parseHTML:function(e){let t=doc.createDocumentFragment().cloneNode(!1);if("string"!=typeof e)return t;if(!Helper.rhtml.test(e))return t.appendChild(document.createTextNode(e)),t;e=e.replace(Helper.rxhtml,"<$1>").trim();let r=(Helper.rtagName.exec(e)||["",""])[1].toLowerCase(),o=Helper.tagHooks[r]||Helper.tagHooks._default,a=null;o.innerHTML=e;let i=o.getElementsByTagName("script");if(i.length)for(let e,t=0;e=i[t++];)if(Helper.scriptTypes[e.type]){let t=doc.createElement("script").cloneNode(!1);e.attributes.forEach(function(e){t.setAttribute(e.name,e.value)}),t.text=e.text,e.parentNode.replaceChild(t,e)}for(;a=o.firstChild;)t.appendChild(a);return t},parseForm:function(e){let t={},r=!1;for(let o,a=0;o=e.elements[a++];)switch(o.type){case"select-one":case"select-multiple":if(o.name.length&&!o.disabled)for(let e,r=0;e=o.options[r++];)e.selected&&(t[o.name]=e.value||e.text);break;case"file":o.name.length&&!o.disabled&&(t[o.name]=o.files[0],r=!0);break;case void 0:case"submit":case"reset":case"button":break;case"radio":case"checkbox":if(!o.checked)break;default:o.name.length&&!o.disabled&&(t[o.name]=o.value)}return r?this.mkFormData(t):t},mkFormData(e){let t=new FormData;for(let r in e){let o=e[r];Array.isArray(o)?o.forEach(function(e){t.append(r+"[]",e)}):t.append(r,e[r])}return t},param:function(e){if(!e||"string"==typeof e||"number"==typeof e)return e;let t=[];return"object"==typeof e&&serialize("",e,function(e,r){/native code/.test(r)||(r="function"==typeof r?r():r,r="[object File]"!==toS.call(r)?encode(r):r,t.push(encode(e)+"="+r))}),t.join("&")}}; \ No newline at end of file +/** + * + * @authors yutent (yutent@doui.cc) + * @date 2016-11-26 16:35:45 + * + */ + +'use strict' + +function serialize(p, obj, q) { + let k + if (Array.isArray(obj)) { + obj.forEach(function(it, i) { + k = p ? `${p}[${Array.isArray(it) ? i : ''}]` : i + // k = p ? p + '[' + (Array.isArray(it) ? i : '') + ']' : i + if (typeof it === 'object') { + serialize(k, it, q) + } else { + q(k, it) + } + }) + } else { + for (let i in obj) { + k = p ? `${p}[${i}]` : i + // k = p ? p + '[' + i + ']' : i + if (typeof obj[i] === 'object') { + serialize(k, obj[i], q) + } else { + q(k, obj[i]) + } + } + } +} + +const toS = Object.prototype.toString +const doc = window.document +const encode = encodeURIComponent +const decode = decodeURIComponent + +const TagHooks = function() { + this.option = doc.createElement('select') + this.thead = doc.createElement('table') + this.td = doc.createElement('tr') + this.area = doc.createElement('map') + this.tr = doc.createElement('tbody') + this.col = doc.createElement('colgroup') + this.legend = doc.createElement('fieldset') + this._default = doc.createElement('div') + this.g = doc.createElementNS('http://www.w3.org/2000/svg', 'svg') + + this.optgroup = this.option + this.tbody = this.tfoot = this.colgroup = this.caption = this.thead + this.th = this.td + + 'circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use'.replace( + /,/g, + m => { + this[m] = this.g //处理svg + } + ) +} + +const Helper = { + tagHooks: new TagHooks(), + rtagName: /<([\w:]+)/, + rxhtml: /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + scriptTypes: { + 'text/javascript': 1, + 'text/ecmascript': 1, + 'application/ecmascript': 1, + 'application/javascript': 1 + }, + rhtml: /<|&#?\w+;/ +} + +export default { + parseJS: function(code) { + code = (code + '').trim() + if (code) { + if (code.indexOf('use strict') === 1) { + let script = doc.createElement('script') + script.text = code + doc.head.appendChild(script).parentNode.removeChild(script) + } else { + eval(code) + } + } + }, + parseXML: function(data, xml, tmp) { + try { + tmp = new DOMParser() + xml = tmp.parseFromString(data, 'text/xml') + } catch (e) { + xml = void 0 + } + + if ( + !xml || + !xml.documentElement || + xml.getElementsByTagName('parsererror').length + ) { + console.error('Invalid XML: ' + data) + } + return xml + }, + parseHTML: function(html) { + let fragment = doc.createDocumentFragment().cloneNode(false) + + if (typeof html !== 'string') { + return fragment + } + + if (!Helper.rhtml.test(html)) { + fragment.appendChild(document.createTextNode(html)) + return fragment + } + + html = html.replace(Helper.rxhtml, '<$1>').trim() + let tag = (Helper.rtagName.exec(html) || ['', ''])[1].toLowerCase() + let wrap = Helper.tagHooks[tag] || Helper.tagHooks._default + let firstChild = null + + //使用innerHTML生成的script节点不会触发请求与执行text属性 + wrap.innerHTML = html + let script = wrap.getElementsByTagName('script') + if (script.length) { + for (let i = 0, el; (el = script[i++]); ) { + if (Helper.scriptTypes[el.type]) { + let tmp = doc.createElement('script').cloneNode(false) + el.attributes.forEach(function(attr) { + tmp.setAttribute(attr.name, attr.value) + }) + tmp.text = el.text + el.parentNode.replaceChild(tmp, el) + } + } + } + + while ((firstChild = wrap.firstChild)) { + fragment.appendChild(firstChild) + } + + return fragment + }, + parseForm: function(form) { + let data = {} + let hasAttach = false + for (let i = 0, field; (field = form.elements[i++]); ) { + switch (field.type) { + case 'select-one': + case 'select-multiple': + if (field.name.length && !field.disabled) { + for (let j = 0, opt; (opt = field.options[j++]); ) { + if (opt.selected) { + data[field.name] = opt.value || opt.text + } + } + } + break + case 'file': + if (field.name.length && !field.disabled) { + data[field.name] = field.files[0] + hasAttach = true + } + break + case undefined: + case 'submit': + case 'reset': + case 'button': + break //按钮啥的, 直接忽略 + case 'radio': + case 'checkbox': + // 只处理选中的 + if (!field.checked) break + default: + if (field.name.length && !field.disabled) { + data[field.name] = field.value + } + } + } + // 如果有附件, 改为FormData + if (hasAttach) { + return this.mkFormData(data) + } else { + return data + } + }, + mkFormData(data) { + let form = new FormData() + for (let i in data) { + let el = data[i] + if (Array.isArray(el)) { + el.forEach(function(it) { + form.append(i + '[]', it) + }) + } else { + form.append(i, data[i]) + } + } + return form + }, + param: function(obj) { + if (!obj || typeof obj === 'string' || typeof obj === 'number') { + return obj + } + + let arr = [] + let q = function(k, v) { + if (/native code/.test(v)) { + return + } + + v = typeof v === 'function' ? v() : v + v = toS.call(v) !== '[object File]' ? encode(v) : v + + arr.push(encode(k) + '=' + v) + } + + if (typeof obj === 'object') { + serialize('', obj, q) + } + + return arr.join('&') + } +} diff --git a/src/lib/scroll/index.js b/src/lib/scroll/index.js new file mode 100644 index 0000000..f21254e --- /dev/null +++ b/src/lib/scroll/index.js @@ -0,0 +1,15 @@ +/** + * + * @authors yutent (yutent@doui.cc) + * @date 2019-09-01 23:16:06 + * @version v2.0.1 + * + */ + +'use strict' + +import{bind,ebind,unbind}from"../utils.js";const IS_FF=!!window.sidebar;export default class Scroll extends HTMLElement{static get observedAttributes(){return[]}constructor(){super(),Object.defineProperty(this,"root",{value:this.attachShadow({mode:"open"}),writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(this,"props",{value:{},writable:!0,enumerable:!1,configurable:!0}),this.root.innerHTML='
',this.__BOX__=this.root.children[1],this.__X__=this.root.children[2].children[0],this.__Y__=this.root.children[3].children[0]}get scrollTop(){return this.__BOX__.scrollTop}set scrollTop(t){if((t=+t)==t){var{sh:s,oh:i,yh:e}=this.props;this.__BOX__.scrollTop=t;var o=this.__BOX__.scrollTop/(s-i)*(i-e);this.props.thumbY=o,this.__Y__.style.transform=`translateY(${o}px)`}}get scrollLeft(){return this.__BOX__.scrollLeft}set scrollLeft(t){if(n=+n,n==n){var{sw:s,ow:i,xw:e}=this.props;this.__BOX__.scrollLeft=n;var o=this.__BOX__.scrollLeft/(s-i)*(i-e);this.props.thumbX=o,this.__X__.style.transform=`translateX(${o}px)`}}get scrollHeight(){return this.__BOX__.scrollHeight}_fetchScrollX(t){var{sw:s,ow:i,xw:e}=this.props;return t<0?t=0:t>i-e&&(t=i-e),this.__BOX__.scrollLeft=t/(i-e)*(s-i),this.__X__.style.transform=`translateX(${t}px)`,t}_fetchScrollY(t){var{sh:s,oh:i,yh:e}=this.props;return t<0?t=0:t>i-e&&(t=i-e),this.__BOX__.scrollTop=t/(i-e)*(s-i),this.__Y__.style.transform=`translateY(${t}px)`,t}connectedCallback(){this._initFn=bind(this.__BOX__,"mouseenter",t=>{var s=this.__BOX__.offsetWidth,i=this.__BOX__.scrollWidth,e=this.__BOX__.offsetHeight,o=this.__BOX__.scrollHeight,r=e*e/o>>0,h=s*s/i>>0;r<50&&(r=50),h<50&&(h=50),h===s&&(h=0),r===e&&(r=0),this.props.oh=e,this.props.sh=o,this.props.ow=s,this.props.sw=i,this.props.yh=r,this.props.xw=h,this.__X__.style.width=h+"px",this.__Y__.style.height=r+"px"}),this._wheelFn=ebind(this.__BOX__,"wheel",t=>{t.preventDefault();var{sh:s,oh:i,yh:e,sw:o,ow:r,xw:h}=this.props;if(h||e){var l,_;if(IS_FF)l=t.deltaMode?10*t.deltaX:t.deltaX,_=t.deltaMode?10*t.deltaY:t.deltaY;else{var n=Math.abs(t.wheelDelta);n<120?(l=t.deltaX,_=t.deltaY):(l=t.deltaX/(n/120),_=t.deltaY/(n/120))}if(this.__BOX__.scrollTop+=_,this.__BOX__.scrollLeft+=l,h){var a=this.__BOX__.scrollLeft/(o-r)*(r-h);this.props.thumbX=a,this.__X__.style.transform=`translateX(${a}px)`}if(e){var p=this.__BOX__.scrollTop/(s-i)*(i-e);this.props.thumbY=p,this.__Y__.style.transform=`translateY(${p}px)`}}});var t,s,i,e,o=o=>{var{thumbY:r,thumbX:h}=this.props;null!==t&&(i=this._fetchScrollX(h+o.pageX-t)),null!==s&&(e=this._fetchScrollY(r+o.pageY-s))},r=h=>{t=null,s=null,this.props.thumbX=i,this.props.thumbY=e,unbind(document,"mousemove",o),unbind(document,"mouseup",r)};bind(this.__Y__,"mousedown",t=>{s=t.pageY,this.props.thumbY||(this.props.thumbY=0),bind(document,"mousemove",o),bind(document,"mouseup",r)}),bind(this.__X__,"mousedown",s=>{t=s.pageX,this.props.thumbX||(this.props.thumbX=0),bind(document,"mousemove",o),bind(document,"mouseup",r)})}disconnectedCallback(){unbind(this.__BOX__,"mouseenter",this._initFn),unbind(this.__BOX__,"wheel",this._wheelFn)}}; + +if(!customElements.get('wc-scroll')){ + customElements.define('wc-scroll', Scroll) +}